Disabled by default behind an option.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
llvm/lib/Target/X86/X86SelectionDAGInfo.cpp | ||
---|---|---|
198 | Is this needed because we're no longer calling this with just constants we fixed the size of? |
llvm/lib/Target/X86/X86SelectionDAGInfo.cpp | ||
---|---|---|
198 | Do you mean, "is the getCopyToReg call needed"? The size needs to be loaded into the RCX/ECX register for the rep movs instruction and the callers aren't doing that. So, it seems yes. Did you mean in a different way? |
llvm/lib/Target/X86/X86SelectionDAGInfo.cpp | ||
---|---|---|
198 | I was asking why the getZExtOrTrunc was added. do we create memcpy's where the size type isn't the same size as the pointer? |
llvm/lib/Target/X86/X86SelectionDAGInfo.cpp | ||
---|---|---|
198 | Without the getZExtOrTrunc, I get this fatal error, for example, Cannot copy EAX to RCX which is coming from X86InstrInfo::copyPhysReg. Re: "do we create memcpy's where the size type isn't the same size as the pointer?" yes, it seems so. |
llvm/lib/Target/X86/X86SelectionDAGInfo.cpp | ||
---|---|---|
198 | The type mismatch is coming from here: static SDValue CreateCopyOfByValArgument(SDValue Src, SDValue Dst, SDValue Chain, ISD::ArgFlagsTy Flags, SelectionDAG &DAG, const SDLoc &dl) { SDValue SizeNode = DAG.getConstant(Flags.getByValSize(), dl, MVT::i32); ... I'm going to fix that instead. |
Address comments.
llvm/lib/Target/X86/X86ISelLowering.cpp | ||
---|---|---|
3112 ↗ | (On Diff #289546) | My bad. This should actually be an int const rather than an int pointer const. Will change it to check if it's 64 bit instead. |
llvm/lib/Target/X86/X86SelectionDAGInfo.cpp | ||
198 | It occurs in a clang bootstrap build. Added a reduced test below. |
llvm/lib/Target/X86/X86ISelLowering.cpp | ||
---|---|---|
3112 ↗ | (On Diff #289546) | IntPtrConstant is an integer the width of a pointer which I think is what we want. You can't check for i64 being legal. That doesn't work for GNUX32 or NaCl which use 32-bit pointers on 64 bit. |
Is this needed because we're no longer calling this with just constants we fixed the size of?