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
