mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-06 06:33:24 +00:00
Before setting scope end marker, pay attention to scope begin marker and existing scope end marker, if any. Scope must begin before it ends and nested inlined scope do not truncate surrounding scope.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96445 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
785d16fe75
commit
22fb4b2a57
@ -238,7 +238,18 @@ public:
|
|||||||
LIndex = DSI;
|
LIndex = DSI;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setLastInsn(LastInsn);
|
|
||||||
|
unsigned CurrentLastInsnIndex = 0;
|
||||||
|
if (const MachineInstr *CL = getLastInsn())
|
||||||
|
CurrentLastInsnIndex = MIIndexMap[CL];
|
||||||
|
unsigned FIndex = MIIndexMap[getFirstInsn()];
|
||||||
|
|
||||||
|
// Set LastInsn as the last instruction for this scope only if
|
||||||
|
// it follows
|
||||||
|
// 1) this scope's first instruction and
|
||||||
|
// 2) current last instruction for this scope, if any.
|
||||||
|
if (LIndex >= CurrentLastInsnIndex && LIndex >= FIndex)
|
||||||
|
setLastInsn(LastInsn);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
|
30
test/FrontendC/2010-02-16-DbgVarScope.c
Normal file
30
test/FrontendC/2010-02-16-DbgVarScope.c
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
// RUN: %llvmgcc -S -O0 -g %s -o - | \
|
||||||
|
// RUN: llc --disable-fp-elim -o %t.s -O0 -relocation-model=pic
|
||||||
|
// RUN: %compile_c %t.s -o %t.o
|
||||||
|
// RUN: %link %t.o -o %t.exe
|
||||||
|
// RUN: echo {break 24\nrun\np loc\n} > %t.in
|
||||||
|
// RN: gdb -q -batch -n -x %t.in %t.exe | tee %t.out | \
|
||||||
|
// RN: grep {$1 = 1}
|
||||||
|
|
||||||
|
int g1 = 1;
|
||||||
|
int g2 = 2;
|
||||||
|
|
||||||
|
int __attribute__((always_inline)) bar() {
|
||||||
|
return g2 - g1;
|
||||||
|
}
|
||||||
|
void foobar() {}
|
||||||
|
|
||||||
|
void foo(int s) {
|
||||||
|
unsigned loc = 0;
|
||||||
|
if (s) {
|
||||||
|
loc = 1;
|
||||||
|
foobar();
|
||||||
|
} else {
|
||||||
|
loc = bar();
|
||||||
|
foobar();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
foo(0);
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user