Displaying 4 results from an estimated 4 matches for "onreturn".
Did you mean:
noreturn
2007 Oct 05
0
[LLVMdev] RFC: Tail call optimization X86
...th ones compiled without the flag off
as stack behaviour would mismatch.
It would be no problem to make the behaviour dependent on the -tail-
call-opt flag. i am not sure that this is a good idea?
pseudocode:
module 1: with -tailcallopt enabled
fastcc int callee(int arg1, int arg2) {
...
-> onreturn: pops 8 byte
}
module 2: no -tailcallopt
fastcc int caller() {
int x= call fastcc callee();
//!! caller pops the arguments => stack mismatch
callee pops the arguments but caller also wants to pop the arguments
of the stack
Apparently i forgot to send the answer email to chris reponse. sor...
2007 Oct 04
3
[LLVMdev] RFC: Tail call optimization X86
Comments:
CheckDAGForTailCallsAndFixThem -
1.
for (SelectionDAG::allnodes_iterator BE = DAG.allnodes_begin(),
+ BI = prior(DAG.allnodes_end()); BI != BE; BI--) {
Please use pre-decrement instead of post-decrement.
2. The function is slower than it should be. You are scanning all the
nodes in the DAG twice. You should just examine DAG.getRoot() to make
determine whether it's a
2007 Oct 05
6
[LLVMdev] RFC: Tail call optimization X86
...rnal functions
to fastcc. We can set a policy of treating fastcc external functions
as c functions. Then there is no chance of introducing ABI
incompatibility.
>
> pseudocode:
>
> module 1: with -tailcallopt enabled
> fastcc int callee(int arg1, int arg2) {
> ...
> -> onreturn: pops 8 byte
> }
>
> module 2: no -tailcallopt
> fastcc int caller() {
> int x= call fastcc callee();
> //!! caller pops the arguments => stack mismatch
>
> callee pops the arguments but caller also wants to pop the arguments
> of the stack
>
> Apparently i for...
2007 Oct 05
0
[LLVMdev] RFC: Tail call optimization X86
...a policy of treating fastcc external functions
> as c functions. Then there is no chance of introducing ABI
> incompatibility.
>
>>
>> pseudocode:
>>
>> module 1: with -tailcallopt enabled
>> fastcc int callee(int arg1, int arg2) {
>> ...
>> -> onreturn: pops 8 byte
>> }
>>
>> module 2: no -tailcallopt
>> fastcc int caller() {
>> int x= call fastcc callee();
>> //!! caller pops the arguments => stack mismatch
>>
>> callee pops the arguments but caller also wants to pop the arguments
>> of...