Skip to content
  • Jon Roelofs's avatar
    Fix thumbv4t indirect calls · 300d8ffd
    Jon Roelofs authored
    So there are a couple of issues with indirect calls on thumbv4t. First, the most
    'obvious' instruction, 'blx' isn't available until v5t. And secondly, the
    next-most-obvious sequence: 'mov lr, pc; bx rN' doesn't DTRT in thumb code
    because the saved off pc has its thumb bit cleared, so when the callee returns
    we end up in ARM mode.... yuck.
    
    The solution is to 'bl' to a nearby landing pad with a 'bx rN' in it.
    
    We could cut down on code size by sharing the landing pads between call sites
    that are close enough, but for the moment let's do correctness first and look at
    performance later.
    
    
    Patch by: Iain Sandoe
    
    http://reviews.llvm.org/D6519
    
    llvm-svn: 223380
    300d8ffd
Loading