@@ -206,15 +206,16 @@ class ABIArgInfo {
206206 static ABIArgInfo getIgnore () {
207207 return ABIArgInfo (Ignore);
208208 }
209- static ABIArgInfo getIndirect (CharUnits Alignment, bool ByVal = true ,
210- bool Realign = false ,
209+ static ABIArgInfo getIndirect (CharUnits Alignment, unsigned AddrSpace = 0 ,
210+ bool ByVal = true , bool Realign = false ,
211211 llvm::Type *Padding = nullptr ) {
212212 auto AI = ABIArgInfo (Indirect);
213213 AI.setIndirectAlign (Alignment);
214214 AI.setIndirectByVal (ByVal);
215215 AI.setIndirectRealign (Realign);
216216 AI.setSRetAfterThis (false );
217217 AI.setPaddingType (Padding);
218+ AI.setIndirectAddrSpace (AddrSpace);
218219 return AI;
219220 }
220221
@@ -232,7 +233,7 @@ class ABIArgInfo {
232233
233234 static ABIArgInfo getIndirectInReg (CharUnits Alignment, bool ByVal = true ,
234235 bool Realign = false ) {
235- auto AI = getIndirect (Alignment, ByVal, Realign);
236+ auto AI = getIndirect (Alignment, 0 , ByVal, Realign);
236237 AI.setInReg (true );
237238 return AI;
238239 }
@@ -422,12 +423,12 @@ class ABIArgInfo {
422423 }
423424
424425 unsigned getIndirectAddrSpace () const {
425- assert (isIndirectAliased () && " Invalid kind!" );
426+ assert (( isIndirect () || isIndirectAliased () ) && " Invalid kind!" );
426427 return IndirectAttr.AddrSpace ;
427428 }
428429
429430 void setIndirectAddrSpace (unsigned AddrSpace) {
430- assert (isIndirectAliased () && " Invalid kind!" );
431+ assert (( isIndirect () || isIndirectAliased () ) && " Invalid kind!" );
431432 IndirectAttr.AddrSpace = AddrSpace;
432433 }
433434
0 commit comments