<div dir="ltr">Hi all.<div><br></div><div>I'm new to LLVM and I'm having fun with LLVM.</div><div>Recently, I fount that function calls are changed based on the types of return value and arguments.</div><div><br></div><div>For example, as following codes, the generated LLVM IRs are efferent from what I expected them would be.</div><div>-------------------</div><div>// simple C code</div><div>struct Float2</div><div>{</div><div> float x; float y;</div><div>}</div><div>Float2 foo(Float2 a)</div><div>------------------- </div><div>// simple LLVM IR</div><div>i64 foo(i64 a)</div><div>------------------------</div><div><br></div><div>Even, if the size of structure is bigger than 64bit, the LLVM IRs are as follow.</div><div>------------------------ </div>void foo(
struct. Float2* ,
struct.Float2 * ) <br class="gmail-Apple-interchange-newline"><div>------------------------ <br></div><div><br></div><div>So. I wonder where can I find these rules? I googled but I could not found official documents or something likes that.</div><div><br></div><div>Please help me.</div><div><br></div><div>Thanks.</div><div>Chanhyun.</div><div><br></div><div> <br></div><div><br></div><div><br></div></div>