diff options
Diffstat (limited to 'llvm/lib/Target/X86/X86LegalizerInfo.cpp')
-rw-r--r-- | llvm/lib/Target/X86/X86LegalizerInfo.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/llvm/lib/Target/X86/X86LegalizerInfo.cpp b/llvm/lib/Target/X86/X86LegalizerInfo.cpp index 050e5ef8b29..bcf0ffb1bdf 100644 --- a/llvm/lib/Target/X86/X86LegalizerInfo.cpp +++ b/llvm/lib/Target/X86/X86LegalizerInfo.cpp @@ -124,11 +124,13 @@ void X86LegalizerInfo::setLegalizerInfo32bit() { setAction({G_GEP, p0}, Legal); setAction({G_GEP, 1, s32}, Legal); - if (!Subtarget.is64Bit()) + if (!Subtarget.is64Bit()) { getActionDefinitionsBuilder(G_PTRTOINT) .legalForCartesianProduct({s1, s8, s16, s32}, {p0}) .maxScalar(0, s32) .widenScalarToNextPow2(0, /*Min*/ 8); + getActionDefinitionsBuilder(G_INTTOPTR).legalFor({s32, p0}); + } // Control-flow setAction({G_BRCOND, s1}, Legal); @@ -194,6 +196,7 @@ void X86LegalizerInfo::setLegalizerInfo64bit() { .legalForCartesianProduct({s1, s8, s16, s32, s64}, {p0}) .maxScalar(0, s64) .widenScalarToNextPow2(0, /*Min*/ 8); + getActionDefinitionsBuilder(G_INTTOPTR).legalFor({s64, p0}); // Constants setAction({TargetOpcode::G_CONSTANT, s64}, Legal); |