summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2009-06-04 22:52:30 +0000
committerBill Wendling <isanbard@gmail.com>2009-06-04 22:52:30 +0000
commit5f0d6c4434621719f6111df962f236455f79756a (patch)
tree05bec5f01b13158fd19d14bf8ea651da2c9203ba /clang/lib
parenta5b9645c4b7a1d8be5e41081b99f27b49b8aa8cf (diff)
downloadbcm5719-llvm-5f0d6c4434621719f6111df962f236455f79756a.tar.gz
bcm5719-llvm-5f0d6c4434621719f6111df962f236455f79756a.zip
The DWARF unwind info was incorrect. While compiling with
`-fomit-frame-pointer', we would lack the DW_CFA_advance_loc information for a lot of function, and then they would be `0'. The linker (at least on Darwin) needs to encode the stack size. In some cases, the stack size is too large to directly encode. So the linker checks to see if there is a "subl $xxx,%esp" instruction at the point where the `DW_CFA_def_cfa_offset' says the pc was. If so, the compact encoding records the offset in the function to where the stack size is embedded. But because the `DW_CFA_advance_loc' instructions are missing, it looks before the function and dies. So, instead of emitting the EH debug label before the stack adjustment operations, emit it afterwards, right before the frame move stuff. llvm-svn: 72898
Diffstat (limited to 'clang/lib')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud