<div dir="ltr">With primitive types, I can interchange literal usage and type aliases in IR:<div><br></div><div><div><font face="courier new, monospace">%mytype = type i32</font></div><div><font face="courier new, monospace"><br>
</font></div><div><font face="courier new, monospace">define void @foo(%mytype* %ptr) {</font></div><div><font face="courier new, monospace">  %t1 = load <b>%mytype</b>* %ptr</font></div><div><font face="courier new, monospace">  store i32 <b>%t1</b>, <b>i32</b>* %ptr</font></div>
<div><font face="courier new, monospace">  ret void</font></div><div><font face="courier new, monospace">}</font></div><div><br></div><div style>But for structs, I cannot:</div><div style><br></div><div style><div><font face="courier new, monospace">%mytype = type { i32, i32 }</font></div>
<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">define void @foo(%mytype* %ptr) {</font></div><div><font face="courier new, monospace">  %t1 = load <b>%mytype</b>* %ptr</font></div>
<div><font face="courier new, monospace">  store<b> { i32, i32 }</b> %t1, <b>{ i32, i32 }</b>* %ptr</font></div><div><font face="courier new, monospace">  ret void</font></div><div><font face="courier new, monospace">}</font></div>
<div><font face="courier new, monospace"><br></font></div><div><div><font face="courier new, monospace">bin/llvm-as: alias2.ll:6:22: error: '%t1' defined with type '%mytype = type { i32, i32 }'</font></div>
<div><font face="courier new, monospace">  store { i32, i32 } %t1, { i32, i32 }* %ptr</font></div></div><div><br></div><div style>I don't see anything in the language reference manual that disallows such usage, as the literal struct type and %mytype are equivalent.  Am I missing something here, or is this just a bug in the assembly parser?</div>
</div><div><br></div>-- <br><br><div>Thanks,</div><div><br></div><div>Justin Holewinski</div>
</div></div>