diff options
author | Devang Patel <dpatel@apple.com> | 2010-08-25 00:28:56 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2010-08-25 00:28:56 +0000 |
commit | 0554e0e30d24d9ad7d5e12f8e7583ebb5c9715bf (patch) | |
tree | 3f6b20178f2b53c3ac1de21d876934c3aeead004 | |
parent | eb0d0145910f3024d9bdefe279a1e9b95495f2fd (diff) |
Fix 'for' loop variables' scope.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112002 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/CodeGen/CGStmt.cpp | 12 | ||||
-rw-r--r-- | test/CodeGen/debug-info-scope.c | 14 |
2 files changed, 20 insertions, 6 deletions
diff --git a/lib/CodeGen/CGStmt.cpp b/lib/CodeGen/CGStmt.cpp index 3a6c44aba0..16145f766a 100644 --- a/lib/CodeGen/CGStmt.cpp +++ b/lib/CodeGen/CGStmt.cpp @@ -501,6 +501,12 @@ void CodeGenFunction::EmitForStmt(const ForStmt &S) { RunCleanupsScope ForScope(*this); + CGDebugInfo *DI = getDebugInfo(); + if (DI) { + DI->setLocation(S.getSourceRange().getBegin()); + DI->EmitRegionStart(Builder); + } + // Evaluate the first part before the loop. if (S.getInit()) EmitStmt(S.getInit()); @@ -558,12 +564,6 @@ void CodeGenFunction::EmitForStmt(const ForStmt &S) { // Store the blocks to use for break and continue. BreakContinueStack.push_back(BreakContinue(LoopExit, Continue)); - CGDebugInfo *DI = getDebugInfo(); - if (DI) { - DI->setLocation(S.getSourceRange().getBegin()); - DI->EmitRegionStart(Builder); - } - { // Create a separate cleanup scope for the body, in case it is not // a compound statement. diff --git a/test/CodeGen/debug-info-scope.c b/test/CodeGen/debug-info-scope.c new file mode 100644 index 0000000000..6051e6ed0f --- /dev/null +++ b/test/CodeGen/debug-info-scope.c @@ -0,0 +1,14 @@ +// RUN: %clang_cc1 -g -emit-llvm < %s | FileCheck %s +// Two variables with same name in separate scope. +// Radar 8330217. +int main() { + int j = 0; + int k = 0; +// CHECK: DW_TAG_auto_variable +// CHECK-NEXT: DW_TAG_lexical_block + for (int i = 0; i < 10; i++) + j++; + for (int i = 0; i < 10; i++) + k++; + return 0; +} |