diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp --- a/clang/lib/Sema/SemaChecking.cpp +++ b/clang/lib/Sema/SemaChecking.cpp @@ -3297,6 +3297,11 @@ case PPC::BI__builtin_ppc_addex: case PPC::BI__builtin_darn: case PPC::BI__builtin_darn_raw: + case PPC::BI__builtin_ppc_compare_and_swaplp: + case PPC::BI__builtin_ppc_fetch_and_addlp: + case PPC::BI__builtin_ppc_fetch_and_andlp: + case PPC::BI__builtin_ppc_fetch_and_orlp: + case PPC::BI__builtin_ppc_fetch_and_swaplp: return true; } return false; diff --git a/clang/test/CodeGen/builtins-ppc-xlcompat-fetch-cas-64bit-only-error.c b/clang/test/CodeGen/builtins-ppc-xlcompat-fetch-cas-64bit-only-error.c new file mode 100644 --- /dev/null +++ b/clang/test/CodeGen/builtins-ppc-xlcompat-fetch-cas-64bit-only-error.c @@ -0,0 +1,24 @@ +// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py +// REQUIRES: powerpc-registered-target +// RUN: %clang_cc1 -triple powerpc-unknown-aix -target-cpu pwr8 \ +// RUN: -verify %s + +int test_builtin_ppc_compare_and_swaplp(long a, long b, long c) { + return __compare_and_swaplp(&a, &b, c); // expected-error {{this builtin is only available on 64-bit targets}} +} + +void test_builtin_ppc_fetch_and_addlp(long a, long b) { + __fetch_and_addlp(&a, b); // expected-error {{this builtin is only available on 64-bit targets}} +} + +void test_builtin_ppc_fetch_and_andlp(unsigned long a, unsigned long b) { + __fetch_and_andlp(&a, b); // expected-error {{this builtin is only available on 64-bit targets}} +} +void test_builtin_ppc_fetch_and_orlp(unsigned long a, unsigned long b) { + __fetch_and_orlp(&a, b); // expected-error {{this builtin is only available on 64-bit targets}} +} + +void test_builtin_ppc_fetch_and_swaplp(unsigned long a, unsigned long b) { + __fetch_and_swaplp(&a, b); // expected-error {{this builtin is only available on 64-bit targets}} +} +