AZero13 wrote:
> Okay, looking at the patch, I see what you're doing and what you're trying to
> say in the PR description: x86_64 GlobalISel still doesn't support this
> bundle, so you've just changed it to force the use of SelectionDAG when it
> sees such a bundle.
>
> Now, I accept that the backend change is an improvement in the abstract —
> it's bad that one instruction selector just fails to compile IR that's valid
> for the other instruction selector, so if GlobalISel can't support these
> bundles, it should definitely kick over to SelectionDAG. However, the point
> of GlobalISel is to make -O0 builds faster, which means that Clang should not
> be emitting IR constructs for common ObjC code patterns that would force the
> use of SelectionDAG, because that means we'll necessarily regress -O0 build
> times. So either this needs to continue to not use the bundle on x86_64 at
> -O0, or you need to implement the bundle properly witout kicking over to
> SelectionDAG.
So here's the problem: LowerCall will kick to SelectionDAG regardless anyway:
// Handle only Linux C, X86_64_SysV calling conventions for now.
if (!STI.isTargetLinux() || !(Info.CallConv == CallingConv::C ||
Info.CallConv == CallingConv::X86_64_SysV))
return false;
https://github.com/llvm/llvm-project/pull/164875
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits