I'm trying to fix the bug noted in http://lists.cs.uiuc.edu/pipermail/llvmdev/2013-May/062343.html , where RBX is not correctly restored by __builtin_setjmp/__builtin_longjmp. (Our Cilk implementation hits the bug.) My strategy is to allocate an extra slot relative to the frame pointer (RBP), and save RBX there. Ideally I'd like the "RBX save slot" to be *below* where the GPRs are saved. Doing so would save a stack-adjustment instruction on return. But emitEHSjLjSetJmp runs before the set of saved GPRs is known. Question: Is there a way to build a machine instruction using a symbolic constant for the offset, in a way that I can define the symbolic constant later (during prologue generation)? Here's an example of what I have so far, using a hard-coded constant -8. I'd like to make the -8 symbolic and set its value later. if (RegInfo->hasBasePointer(*MF)) { ... addRegOffset(BuildMI(restoreMBB, DL, TII->get(X86::MOV64rm), BasePtr), FramePtr, true, -8) .setMIFlag(MachineInstr::FrameSetup); } - Arch D. Robison