mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-19 02:52:53 +02:00
[AArch64][GlobalISel] Fallback if the +strict-align target feature is given.
Works around PR44246.
This commit is contained in:
parent
ebce5bf21c
commit
d942a7b79b
@ -1423,6 +1423,14 @@ bool AArch64InstructionSelector::select(MachineInstr &I) {
|
||||
MachineFunction &MF = *MBB.getParent();
|
||||
MachineRegisterInfo &MRI = MF.getRegInfo();
|
||||
|
||||
const AArch64Subtarget *Subtarget =
|
||||
&static_cast<const AArch64Subtarget &>(MF.getSubtarget());
|
||||
if (Subtarget->requiresStrictAlign()) {
|
||||
// We don't support this feature yet.
|
||||
LLVM_DEBUG(dbgs() << "AArch64 GISel does not support strict-align yet\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
unsigned Opcode = I.getOpcode();
|
||||
// G_PHI requires same handling as PHI
|
||||
if (!isPreISelGenericOpcode(Opcode) || Opcode == TargetOpcode::G_PHI) {
|
||||
|
@ -209,3 +209,12 @@ define <4 x i16> @zext_v4s8(<4 x i8> %in) {
|
||||
ret <4 x i16> %ext
|
||||
}
|
||||
|
||||
; FALLBACK-WITH-REPORT-ERR: remark: <unknown>:0:0: cannot select: RET_ReallyLR implicit $x0 (in function: strict_align_feature)
|
||||
; FALLBACK-WITH-REPORT-ERR: warning: Instruction selection used fallback path for strict_align_feature
|
||||
; FALLBACK-WITH-REPORT-OUT-LABEL: strict_align_feature
|
||||
define i64 @strict_align_feature(i64* %p) #0 {
|
||||
%x = load i64, i64* %p, align 1
|
||||
ret i64 %x
|
||||
}
|
||||
|
||||
attributes #0 = { "target-features"="+strict-align" }
|
||||
|
Loading…
Reference in New Issue
Block a user