[LLVMdev] Fixing segmented stacks

Sanjoy Das sanjoy at playingwithpointers.com
Tue Oct 18 14:02:25 PDT 2011


Hi!

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?

Thanks!
-- 
Sanjoy Das
http://playingwithpointers.com



More information about the llvm-dev mailing list