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
