@@ -85,7 +85,7 @@ class X86InstructionSelector : public InstructionSelector {
85
85
MachineFunction &MF) const ;
86
86
bool selectCondBranch (MachineInstr &I, MachineRegisterInfo &MRI,
87
87
MachineFunction &MF) const ;
88
- bool selectImplicitDef (MachineInstr &I, MachineRegisterInfo &MRI) const ;
88
+ bool selectImplicitDefOrPHI (MachineInstr &I, MachineRegisterInfo &MRI) const ;
89
89
90
90
// emit insert subreg instruction and insert it before MachineInstr &I
91
91
bool emitInsertSubreg (unsigned DstReg, unsigned SrcReg, MachineInstr &I,
@@ -290,13 +290,10 @@ bool X86InstructionSelector::select(MachineInstr &I) const {
290
290
291
291
if (Opcode == TargetOpcode::LOAD_STACK_GUARD)
292
292
return false ;
293
- if (Opcode == TargetOpcode::PHI)
294
- return false ;
295
293
296
294
if (I.isCopy ())
297
295
return selectCopy (I, MRI);
298
296
299
- // TODO: handle more cases - LOAD_STACK_GUARD, PHI
300
297
return true ;
301
298
}
302
299
@@ -335,7 +332,7 @@ bool X86InstructionSelector::select(MachineInstr &I) const {
335
332
return true ;
336
333
if (selectCondBranch (I, MRI, MF))
337
334
return true ;
338
- if (selectImplicitDef (I, MRI))
335
+ if (selectImplicitDefOrPHI (I, MRI))
339
336
return true ;
340
337
341
338
return false ;
@@ -1131,10 +1128,11 @@ bool X86InstructionSelector::selectCondBranch(MachineInstr &I,
1131
1128
return true ;
1132
1129
}
1133
1130
1134
- bool X86InstructionSelector::selectImplicitDef (MachineInstr &I,
1135
- MachineRegisterInfo &MRI) const {
1131
+ bool X86InstructionSelector::selectImplicitDefOrPHI (
1132
+ MachineInstr &I, MachineRegisterInfo &MRI) const {
1136
1133
1137
- if (I.getOpcode () != TargetOpcode::G_IMPLICIT_DEF)
1134
+ if (I.getOpcode () != TargetOpcode::G_IMPLICIT_DEF &&
1135
+ I.getOpcode () != TargetOpcode::G_PHI)
1138
1136
return false ;
1139
1137
1140
1138
unsigned DstReg = I.getOperand (0 ).getReg ();
@@ -1150,7 +1148,11 @@ bool X86InstructionSelector::selectImplicitDef(MachineInstr &I,
1150
1148
}
1151
1149
}
1152
1150
1153
- I.setDesc (TII.get (X86::IMPLICIT_DEF));
1151
+ if (I.getOpcode () == TargetOpcode::G_IMPLICIT_DEF)
1152
+ I.setDesc (TII.get (X86::IMPLICIT_DEF));
1153
+ else
1154
+ I.setDesc (TII.get (X86::PHI));
1155
+
1154
1156
return true ;
1155
1157
}
1156
1158
0 commit comments