diff options
author | Michael Kuperstein <michael.m.kuperstein@intel.com> | 2015-04-06 13:22:01 +0000 |
---|---|---|
committer | Michael Kuperstein <michael.m.kuperstein@intel.com> | 2015-04-06 13:22:01 +0000 |
commit | aed5ccdeed778342b9ff0a5e7d089067e4ffdef0 (patch) | |
tree | d7fdc2945b0579a6fb18d4d01dbcfdc5e407a002 /clang/test/Sema/builtin-assume.c | |
parent | 1931b6263215f84f1096eb338ad56e564b21cb37 (diff) | |
download | bcm5719-llvm-aed5ccdeed778342b9ff0a5e7d089067e4ffdef0.tar.gz bcm5719-llvm-aed5ccdeed778342b9ff0a5e7d089067e4ffdef0.zip |
HasSideEffects() should return false for calls to pure and const functions.
Differential Revision: http://reviews.llvm.org/D8548
llvm-svn: 234152
Diffstat (limited to 'clang/test/Sema/builtin-assume.c')
-rw-r--r-- | clang/test/Sema/builtin-assume.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/clang/test/Sema/builtin-assume.c b/clang/test/Sema/builtin-assume.c index 512eeeccdc4..43b31375f20 100644 --- a/clang/test/Sema/builtin-assume.c +++ b/clang/test/Sema/builtin-assume.c @@ -1,16 +1,28 @@ // RUN: %clang_cc1 -triple i386-mingw32 -fms-extensions -fsyntax-only -verify %s // RUN: %clang_cc1 -triple x86_64-unknown-unknown -fsyntax-only -verify %s +int nonconst(void); +int isconst(void) __attribute__((const)); +int ispure(int) __attribute__((pure)); + int foo(int *a, int i) { #ifdef _MSC_VER __assume(i != 4); __assume(++i > 2); //expected-warning {{the argument to '__assume' has side effects that will be discarded}} + __assume(nonconst() > 2); //expected-warning {{the argument to '__assume' has side effects that will be discarded}} + __assume(isconst() > 2); + __assume(ispure(i) > 2); + __assume(ispure(++i) > 2); //expected-warning {{the argument to '__assume' has side effects that will be discarded}} int test = sizeof(struct{char qq[(__assume(i != 5), 7)];}); #else __builtin_assume(i != 4); __builtin_assume(++i > 2); //expected-warning {{the argument to '__builtin_assume' has side effects that will be discarded}} - + __builtin_assume(nonconst() > 2); //expected-warning {{the argument to '__builtin_assume' has side effects that will be discarded}} + __builtin_assume(isconst() > 2); + __builtin_assume(ispure(i) > 2); + __builtin_assume(ispure(++i) > 2); //expected-warning {{the argument to '__builtin_assume' has side effects that will be discarded}} + int test = sizeof(struct{char qq[(__builtin_assume(i != 5), 7)];}); #endif return a[i]; |