[LLVMbugs] [Bug 240] NEW: [lowerinvoke] Values live across an invoke should become volatile stack objects

bugzilla-daemon at cs.uiuc.edu bugzilla-daemon at cs.uiuc.edu
Sun Feb 15 15:06:20 PST 2004


http://llvm.cs.uiuc.edu/bugs/show_bug.cgi?id=240

           Summary: [lowerinvoke] Values live across an invoke should become
                    volatile stack objects
           Product: libraries
           Version: trunk
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: minor
          Priority: P2
         Component: Scalar Optimizations
        AssignedTo: sabre at nondot.org
        ReportedBy: sabre at nondot.org


When lowering in "expensive code gen mode", the lower-invoke pass turns an
invoke instruction into a setjmp call and some other stuff.  The problem with
this is that ANSI C requires that values live across a setjmp be stored in
volatile variables.  Because of this, any LLVM values live across the invoke
should be turned into alloca's, and use volatile loads and stores to access them.

This is related to Bug 77, but now applies to all of the code generators, not
just the C backend.  Also, the lower-invoke pass has enough information to only
"spill" values that are live across the invoke to the stack, instead of spilling
_everything_ like the solution to Bug 77 did.

This problem isn't interesting enough to me to fix anytime in the near future
(because it doesn't affect many common platforms, and eventually the code
generators will have real invoke/unwind support), but if someone wants to tackle
it, feel free. :)

-Chris



------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.



More information about the llvm-bugs mailing list