arsenm wrote:

> > The call sequence pseudos are generically processed
> 
> So are calls, returns, branches etc. That's why we have isCall, isReturn, 
> isBranch.

No, the type of processing is very different. The callstack pseudos are passed 
to the TargetInstrInfo constructor, and must have the exact same immediate 
operands for the default frame management. They only differ by the physical 
register reference

> > Calls are quite different and there can be many per target
> 
> The fact that we can only have one adjcallstack up/down instruction is a 
> limitation. Some targets could have multiple variants of them if allowed. 

I don't see what the added complexity would buy you. You just need a vehicle 
for 2 stack offset adjustment amounts, and what the register is.

> 
> > If you use the correct APIs it wouldn't really matter. Plus we could 
> > enforce what is allowed to differ
> 
> What else can differ? Certainly not the number of operands and properties 
> like isCall.

Implicit register uses, for the call stack adjustments, some of the heuristic 
bits like isAsCheapAsAMove

> The enforcement could be quite expensive 

I don't see how checking instruction operand lists can be expensive 



https://github.com/llvm/llvm-project/pull/159880
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to