summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGen/annotations-builtin.c
diff options
context:
space:
mode:
authorVolodymyr Sapsai <vsapsai@apple.com>2019-03-01 02:15:39 +0000
committerVolodymyr Sapsai <vsapsai@apple.com>2019-03-01 02:15:39 +0000
commit93317d82daf864956ae0608594ee94293e3a4257 (patch)
tree19ee56e895c5f39b60e9048777433d02c8716b29 /clang/test/CodeGen/annotations-builtin.c
parentdc3870d64dfec1d332894b373357cc62ae6e2c01 (diff)
downloadbcm5719-llvm-93317d82daf864956ae0608594ee94293e3a4257.tar.gz
bcm5719-llvm-93317d82daf864956ae0608594ee94293e3a4257.zip
[CodeGen] Fix calling llvm.var.annotation outside of a basic block.
When we have an annotated local variable after a function returns, we generate IR that fails verification with the error > Instruction referencing instruction not embedded in a basic block! And it means that bitcast referencing alloca doesn't have a parent basic block. Fix by checking if we are at an unreachable point and skip emitting annotations. This approach is similar to the way we emit variable initializer and debug info. rdar://problem/46200420 Reviewers: rjmccall Reviewed By: rjmccall Subscribers: aprantl, jkorous, dexonsmith, cfe-commits Differential Revision: https://reviews.llvm.org/D58147 llvm-svn: 355166
Diffstat (limited to 'clang/test/CodeGen/annotations-builtin.c')
-rw-r--r--clang/test/CodeGen/annotations-builtin.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/clang/test/CodeGen/annotations-builtin.c b/clang/test/CodeGen/annotations-builtin.c
index 8a3b3ffcec2..e6dd3587af7 100644
--- a/clang/test/CodeGen/annotations-builtin.c
+++ b/clang/test/CodeGen/annotations-builtin.c
@@ -43,4 +43,7 @@ int main(int argc, char **argv) {
// CHECK: call i32 @llvm.annotation.i32
// CHECK: inttoptr {{.*}} to i8**
return 0;
+
+ int after_return = __builtin_annotation(argc, "annotation_a");
+// CHECK-NOT: call i32 @llvm.annotation.i32
}
OpenPOWER on IntegriCloud