diff options
author | Bill Wendling <isanbard@gmail.com> | 2009-11-09 21:20:14 +0000 |
---|---|---|
committer | Bill Wendling <isanbard@gmail.com> | 2009-11-09 21:20:14 +0000 |
commit | b1ec31d71184e318cae8c147658162f7ed019ada (patch) | |
tree | 3a19587250fc185c89cc5fae7cdfcc1f51d1ee03 /unittests/ExecutionEngine/JIT/JITTest.cpp | |
parent | 80f6c5898113806130975fd56d24929b06bf54f8 (diff) |
The jump table was being generated before the end label for exception handling
was generated. This caused code like this:
## The asm code for the function
.section __TEXT,__const
.align 2
lJTI11_0:
LJTI11_0:
.long LBB11_16
.long LBB11_4
.long LBB11_5
.long LBB11_6
.long LBB11_7
.long LBB11_8
.long LBB11_9
.long LBB11_10
.long LBB11_11
.long LBB11_12
.long LBB11_13
.long LBB11_14
Leh_func_end11: ## <---now in the wrong section!
The `Leh_func_end11' would then end up in the wrong section, causing the
resulting EH frame information to be wrong:
__ZL11CheckRightsjPKcbRbRP6NSData.eh:
.set Lset500eh,Leh_frame_end11-Leh_frame_begin11
.long Lset500eh ; Length of Frame Information Entry
Leh_frame_begin11:
.long Leh_frame_begin11-Leh_frame_common
.long Leh_func_begin11-.
.set Lset501eh,Leh_func_end11-Leh_func_begin11
.long Lset501eh ; FDE address range
`Lset501eh' is now something huge instead of the real value.
The X86 back-end generates the jump table after the EH information is
emitted. Do the same here.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86588 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'unittests/ExecutionEngine/JIT/JITTest.cpp')
0 files changed, 0 insertions, 0 deletions