[LLVMdev] PR 5723

David Greene dag at cray.com
Wed Dec 9 08:21:46 PST 2009


On Tuesday 08 December 2009 15:53, Anton Korobeynikov wrote:
> Hello, David
>
> > For X86 CALLSEQ_START gets selected to ADJCALLSTACKDOWN or
> > ADJCALLSTACKDOWN64 in this case.  So is CALLSEQ_START expected
> > to appear only once (at the top of the function)?  The comments
> > are rather confusing.  It seems like CALLSEQ_START is supposed
> > to appear before every call, but surely there's only one stack
> > adjustment in the final code.
>
> Right. Every call is surrounded by callseq_{start,end} nodes. The
> difference here is that call to special symbol is not real, it's not
> generated by lowering of the ISD::CALL node, thus no callseq stuff is
> ever generated.
>
> You might want to look into TLS lowering code inside
> X86ISelLowering.cpp to introduce yourself into this this.

I looked at that but it's not very helpful.  It just creates some generic
instructions that get emitted as a code sequence.  It doesn't say anything
about the stack frame.

Where in the backend is the operation to create and destroy the stack frame
either inserted or deleted?  That's where I need to make a change.

                                    -Dave




More information about the llvm-dev mailing list