dsanders added a comment.

This change agrees with what I think the calling convention is and the 
documentation. However, I've hit quite a few discrepancies between the 
documented calling convention and the de-facto one implemented by gcc so I'm 
wary of going by that alone.

Have you tried putting the caller and callee side of this test in different 
compilation units and then linking a gcc-compiled caller with a clang-compiled 
callee (and then repeating that for the other three combinations) like the test 
generator in tools/clang/utils/ABITest does? Does this produce a program that 
executes correctly for all four combinations?

> > Hmm.  On MIPS64, a slot is 64 bits, right?  How is a float passed?

>  Oh, floats are promoted to doubles in varargs, of course, which neatly makes 
> that an impossible situation.

> 

> My inclination is that the right condition here is that only integer types 
> should be right-justified in their slot, but I'll admit to not having an easy 
> example of a type for which your condition doesn't work.


Floats are left justified according to the 'MIPSproTM N32 ABI Handbook' (which 
also discusses the O32 and N64 ABI's) but I can't think of a test case that 
would expose a problem due to the promotion to double.


================
Comment at: test/CodeGen/struct-union-BE.c:1-3
@@ +1,4 @@
+// RUN: %clang -O2 -target mips-linux-gnu  -EB -S -emit-llvm %s -o - | 
FileCheck %s -check-prefix=MIPS
+// RUN: %clang -O2 -target mips64-linux-gnu  -EB -S -emit-llvm %s -o - | 
FileCheck %s -check-prefix=MIPS64
+// RUN: %clang -O2 -target armeb-linux-gnueabihf -march=armv7a  -EB -S 
-emit-llvm %s -o - | FileCheck %s -check-prefix=ARM
+
----------------
Do we need %clang and -O2? Can we use %clang_cc1 and the default optimization 
level instead?


http://reviews.llvm.org/D21611



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to