[LLVMdev] How to implement CCIsPointer?
Fredrik Olsson
peylow at gmail.com
Tue Dec 3 07:29:13 PST 2013
On M68k the return value is passed register d0, unless it is a pointer
then it is returned in register a0 (shadowed in d0 for some targets in
GCC). For calling conventions compatible with Turbo/Pure C the first
two pointes would also go in a0-a1, and the first three integers in
d0-d2 (This is not supported by official GCC as of now).
Simply subclassing CCIf and check ValVT or LocVT like this does not work:
class CCIfPointer<CCAction A> : CCIf<"LocVT==MVT::iPTR", A> { }
Do I have to extend ISD::ArgFlagsTy with a "IsPtr" flag that is
populated, maybe in SelectionDAGISel::LowerCallTo and
::LowerArguments? Or is there a better and more obvious way?
// Fredrik
More information about the llvm-dev
mailing list