Skip to content
  • Bill Wendling's avatar
    N.B. This is with the new EH scheme: · 579ff6c3
    Bill Wendling authored
    The blocks with invokes have branches to the dispatch block, because that more
    correctly models the behavior of the CFG. The dispatch of course has edges to
    the landing pads. Those landing pads could contain invokes, which then have
    branches back to the dispatch. This creates a loop. The machine LICM pass looks
    at this loop and thinks it can hoist elements out of it. But because the
    dispatch is an alternate entry point into the program, the hoisted instructions
    won't be executed.
    
    I wasn't able to get a testcase which was small and could reproduce all of the
    time. The function_try_block.cpp in llvm-test was where this showed up.
    
    llvm-svn: 141726
    579ff6c3
Loading