summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGen/builtin-constant-p.c
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2018-11-24 10:45:55 +0000
committerBill Wendling <isanbard@gmail.com>2018-11-24 10:45:55 +0000
commit1af8dd6a1edb1d3a2e302b1e92d53d877a7892e1 (patch)
tree83ebeccd064907913a4f21e89e7a83db6e6af0ad /clang/test/CodeGen/builtin-constant-p.c
parent7459398a436f67f304c8653f39b8d82109778fec (diff)
downloadbcm5719-llvm-1af8dd6a1edb1d3a2e302b1e92d53d877a7892e1.tar.gz
bcm5719-llvm-1af8dd6a1edb1d3a2e302b1e92d53d877a7892e1.zip
isEvaluatable() implies a constant context.
Assume that we're in a constant context if we're asking if the expression can be compiled into a constant initializer. This fixes the issue where a __builtin_constant_p() in a compound literal was diagnosed as not being constant, even though it's always possible to convert the builtin into a constant. llvm-svn: 347512
Diffstat (limited to 'clang/test/CodeGen/builtin-constant-p.c')
-rw-r--r--clang/test/CodeGen/builtin-constant-p.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/clang/test/CodeGen/builtin-constant-p.c b/clang/test/CodeGen/builtin-constant-p.c
index 3f1225fb8b2..5cdcc721235 100644
--- a/clang/test/CodeGen/builtin-constant-p.c
+++ b/clang/test/CodeGen/builtin-constant-p.c
@@ -10,6 +10,9 @@ inline int bcp(int x) {
struct foo { int x, y; };
+int y;
+struct foo f = (struct foo){ __builtin_constant_p(y), 42 };
+
struct foo test0(int expr) {
// CHECK: define i64 @test0(i32 %expr)
// CHECK: call i1 @llvm.is.constant.i32(i32 %expr)
OpenPOWER on IntegriCloud