@@ -154,20 +154,18 @@ class DXILPrepareModule : public ModulePass {
154
154
return nullptr ;
155
155
}
156
156
157
+ Type *ValTy = Operand->getType ();
157
158
// Also omit the bitcast for matching global array types
158
- if (auto *GlobalVar = dyn_cast<GlobalVariable>(Operand)) {
159
- Type * ValTy = GlobalVar->getValueType ();
159
+ if (auto *GlobalVar = dyn_cast<GlobalVariable>(Operand))
160
+ ValTy = GlobalVar->getValueType ();
160
161
161
- if (auto *ArrTy = dyn_cast<ArrayType>(ValTy)) {
162
- Type *ElTy = ArrTy->getElementType ();
163
- if (ElTy == Ty)
164
- return nullptr ;
165
- }
166
- }
162
+ if (auto *AI = dyn_cast<AllocaInst>(Operand))
163
+ ValTy = AI->getAllocatedType ();
167
164
168
- // Also omit the bitcast for alloca instructions
169
- if (auto *AI = dyn_cast<AllocaInst>(Operand)) {
170
- return nullptr ;
165
+ if (auto *ArrTy = dyn_cast<ArrayType>(ValTy)) {
166
+ Type *ElTy = ArrTy->getElementType ();
167
+ if (ElTy == Ty)
168
+ return nullptr ;
171
169
}
172
170
173
171
// finally, drill down GEP instructions until we get the array
@@ -180,13 +178,14 @@ class DXILPrepareModule : public ModulePass {
180
178
continue ;
181
179
}
182
180
183
- if (auto *GlobalVar = dyn_cast<GlobalVariable>(OpArg)) {
184
- Type *ValTy = GlobalVar->getValueType ();
185
- if (auto *ArrTy = dyn_cast<ArrayType>(ValTy)) {
186
- Type *ElTy = ArrTy->getElementType ();
187
- if (ElTy == Ty)
188
- return nullptr ;
189
- }
181
+ if (auto *GlobalVar = dyn_cast<GlobalVariable>(OpArg))
182
+ ValTy = GlobalVar->getValueType ();
183
+ if (auto *AI = dyn_cast<AllocaInst>(Operand))
184
+ ValTy = AI->getAllocatedType ();
185
+ if (auto *ArrTy = dyn_cast<ArrayType>(ValTy)) {
186
+ Type *ElTy = ArrTy->getElementType ();
187
+ if (ElTy == Ty)
188
+ return nullptr ;
190
189
}
191
190
break ;
192
191
}
0 commit comments