[PATCH] Fix ARM AAPCS regression caused by r211898

Renato Golin renato.golin at linaro.org
Wed Jul 16 13:35:10 PDT 2014


I don't think there are enough changes here to warrant a bigger refactoring, but this mechanism has proven to be fragile, given the number of "this commit broke byval" post-commits.

I'm not against this particular patch, but I'd like to see a bit more work on making the code robust, not just adding special cases...

cheers,
--renato

================
Comment at: lib/CodeGen/TargetInfo.cpp:4004
@@ -4001,1 +4003,3 @@
+    if (!IsCPRC && PreAllocationGPRs < NumGPRs && AllocatedGPRs > NumGPRs &&
+        StackUsed && !IsByVal) {
       llvm::Type *PaddingTy = llvm::ArrayType::get(
----------------
This is getting slightly out of hand...

================
Comment at: test/CodeGen/arm-aapcs-vfp.c:150
@@ +149,3 @@
+// Here, parameter k would need padding to prevent it from being split, but it
+// is passed ByVal (due to being > 64 bytes), so the backend handles this instead.
+void test_vfp_stack_gpr_split_6(double a, double b, double c, double d, double e, double f, double g, double h, double i, int j, struct_seventeen_ints k) {}
----------------
and this relationship between the front-end and the back-end is getting thinner...

http://reviews.llvm.org/D4541






More information about the cfe-commits mailing list