Page MenuHomePhabricator

[MIPS GlobalISel] Lower pointer arguments

Authored by Petar.Avramovic on Jul 17 2018, 5:02 AM.



Add support for lowering pointer arguments.
Changing type from pointer to integer is already done in MipsTargetLowering::getRegisterTypeForCallingConv.

Diff Detail


Event Timeline

Does anybody have any comment?

atanasyan added inline comments.Jul 24 2018, 2:33 AM
189 ↗(On Diff #155852)

Maybe a stupid question - why does this function return true for pointer types of any size (32/64) and the only size of integer type (32)?

189 ↗(On Diff #155852)

As MipsCallLowering class is incomplete, it can only lower i32 and pointer arguments at this moment.
isSupportedType is used for quick exit until we can lower arguments of any type.

atanasyan added inline comments.Jul 24 2018, 3:21 AM
189 ↗(On Diff #155852)

What happens if we try to generate 64-bit code with 64-bit pointers - will the isSupportedType be called or not?

189 ↗(On Diff #155852)

In that case isSupportedType will be called, later TLI.getRegisterTypeForCallingConv will change pointer type to appropriate integer type(i64 in this case) and forward it to the calling convention.
However attempt to generate code for MIPS 64 will fail elsewhere as globalisel for MIPS is incomplete. At first, we add code and test for MIPS 32.

atanasyan accepted this revision.Jul 24 2018, 6:22 AM


189 ↗(On Diff #155852)

Thanks for the explanation. I just want to be sure that we cannot silently produce incorrect code.

This revision is now accepted and ready to land.Jul 24 2018, 6:22 AM
This revision was automatically updated to reflect the committed changes.