[LLVMdev] Fixing segmented stacks
sanjoy at playingwithpointers.com
Tue Oct 18 14:02:25 PDT 2011
First of all, sorry for the delay.
This about fixing the issue with having a the BB ending with a
non-terminating instruction when compiling with segmented stacks. I'm
not sure if having an isel pseudo instruction which is lowered into a
RET and then a MOV would work better.
LLVMTargetMachine::addCommonCodeGenPasses adds the
ExpandISelPseudosPass before the PEI pass (so it boils down to the
same thing, I think -- the verifier will still complain). This is, of
course, assuming I understood Duncan correctly.
The only fix I can think of is splitting the thing into two separate
basic blocks. I already have sent Duncan patches which does this. Of
course, then I'll have a BB that ends with a RET, but has successors.
As it was pointed out, this may not be desirable.
Is there some third way, better way? I think the best solution would
involve delaying the addition of this extra bit of code till the very
last moment. How about adding something to
X86TargetMachine::addPreEmitPass? Will that work?
More information about the llvm-dev