[LLVMdev] Argument Lowering Redux

Anton Korobeynikov anton at korobeynikov.info
Wed Aug 6 00:53:12 PDT 2014


> Not just Fortran. For example, for X86_64 clang returns complex<float> as a
> vector, but complex<double> as a structure. For X86 I think it returns them
> using an extra pointer argument.
Modern ABIs are pretty complex. Even more, they are usually worded in
high-level terms (C) which require special handling at frontend side.
Probably one would need to familiarize with X86-64, ARM and AArch64
ABIs to understand the whole problem (e.g. split register / stack
passing, homogeneous aggregates, etc.). Passing of 'complex' becomes
easy after this ;)

-- 
With best regards, Anton Korobeynikov
Faculty of Mathematics and Mechanics, Saint Petersburg State University



More information about the llvm-dev mailing list