зеркало из https://github.com/microsoft/clang-1.git
"Fix" a problem with debug info in the presence of always_inline
function calls. For a program like this: #include <stdio.h> static __inline__ __attribute__((always_inline)) int bar(int x) { return 4; } int main() { int X = bar(4); printf("%d\n", X); } clang was not outputing any debug info for the body of main(). This is because the backend is getting confused by the region_start/end that clang is emitting for block scopes. For now, just disable these (matching llvm-gcc), this stuff is in progress of rework anyway. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70889 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
4c6f8d38e2
Коммит
dcd808c1f9
|
@ -126,7 +126,10 @@ RValue CodeGenFunction::EmitCompoundStmt(const CompoundStmt &S, bool GetLast,
|
|||
if (DI) {
|
||||
EnsureInsertPoint();
|
||||
DI->setLocation(S.getLBracLoc());
|
||||
DI->EmitRegionStart(CurFn, Builder);
|
||||
// FIXME: The llvm backend is currently not ready to deal with region_end
|
||||
// for block scoping. In the presence of always_inline functions it gets so
|
||||
// confused that it doesn't emit any debug info. Just disable this for now.
|
||||
//DI->EmitRegionStart(CurFn, Builder);
|
||||
}
|
||||
|
||||
// Keep track of the current cleanup stack depth.
|
||||
|
@ -141,7 +144,11 @@ RValue CodeGenFunction::EmitCompoundStmt(const CompoundStmt &S, bool GetLast,
|
|||
if (DI) {
|
||||
EnsureInsertPoint();
|
||||
DI->setLocation(S.getRBracLoc());
|
||||
DI->EmitRegionEnd(CurFn, Builder);
|
||||
|
||||
// FIXME: The llvm backend is currently not ready to deal with region_end
|
||||
// for block scoping. In the presence of always_inline functions it gets so
|
||||
// confused that it doesn't emit any debug info. Just disable this for now.
|
||||
//DI->EmitRegionEnd(CurFn, Builder);
|
||||
}
|
||||
|
||||
RValue RV;
|
||||
|
|
Загрузка…
Ссылка в новой задаче