diff options
author | David Majnemer <david.majnemer@gmail.com> | 2015-04-22 21:38:15 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2015-04-22 21:38:15 +0000 |
commit | dc012fa26690bef5cd7b56e28bbbe9d1aa17349a (patch) | |
tree | 98eea4882cb0f30190beef442b48c562bff7a89a /clang/test/CodeGen/lifetime-debuginfo-2.c | |
parent | 952d95141828eeb787d17c7f92d9dd6ea455cd0c (diff) | |
download | bcm5719-llvm-dc012fa26690bef5cd7b56e28bbbe9d1aa17349a.tar.gz bcm5719-llvm-dc012fa26690bef5cd7b56e28bbbe9d1aa17349a.zip |
Revert "Revert r234581, it might have caused a few miscompiles in Chromium."
This reverts commit r234700. It turns out that the lifetime markers
were not the cause of Chromium failing but a bug which was uncovered by
optimizations exposed by the markers.
llvm-svn: 235553
Diffstat (limited to 'clang/test/CodeGen/lifetime-debuginfo-2.c')
-rw-r--r-- | clang/test/CodeGen/lifetime-debuginfo-2.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/clang/test/CodeGen/lifetime-debuginfo-2.c b/clang/test/CodeGen/lifetime-debuginfo-2.c new file mode 100644 index 00000000000..db01c81db6d --- /dev/null +++ b/clang/test/CodeGen/lifetime-debuginfo-2.c @@ -0,0 +1,29 @@ +// RUN: %clang_cc1 -O1 -triple x86_64-none-linux-gnu -emit-llvm -gline-tables-only %s -o - | FileCheck %s + +// Inserting lifetime markers should not affect debuginfo: lifetime.end is not +// a destructor, but instrumentation for the compiler. Ensure the debug info for +// the return statement (in the IR) does not point to the function closing '}' +// which is used to show some destructors have been called before leaving the +// function. + +extern int f(int); +extern int g(int); + +// CHECK-LABEL: define i32 @test +int test(int a, int b) { + int res; + + if (a==2) { + int r = f(b); + res = r + b; + a += 2; + } else { + int r = f(a); + res = r + a; + b += 1; + } + + return res; +// CHECK: ret i32 %{{.*}}, !dbg [[DI:![0-9]+]] +// CHECK: [[DI]] = !MDLocation(line: [[@LINE-2]] +} |