[NDS32] Since argument pointer must be 8-byte alignment...
authorChung-Ju Wu <jasonwucj@gmail.com>
Wed, 3 Sep 2014 09:44:49 +0000 (09:44 +0000)
committerChung-Ju Wu <jasonwucj@gcc.gnu.org>
Wed, 3 Sep 2014 09:44:49 +0000 (09:44 +0000)
[NDS32] Since argument pointer must be 8-byte alignment, our first parameter may
        require 4-byte offset if pushed varargs is not 8-byte aligned.

* config/nds32/nds32.h (FIRST_PARM_OFFSET): Set proper location
according to the value of crtl->args.pretend_args_size.

From-SVN: r214863

gcc/ChangeLog
gcc/config/nds32/nds32.h

index 31baaaddc4b15b6daf4c35bbd51273e45fd3ef0d..90be64a084dbbfd275c64a038eebeebc8c96977b 100644 (file)
@@ -1,3 +1,8 @@
+2014-09-03  Chung-Ju Wu  <jasonwucj@gmail.com>
+
+       * config/nds32/nds32.h (FIRST_PARM_OFFSET): Set proper location
+       according to the value of crtl->args.pretend_args_size.
+
 2014-09-03  Chung-Ju Wu  <jasonwucj@gmail.com>
 
        * config/nds32/nds32.c (nds32_compute_stack_frame): Prepare necessary
index 3f4c3ae3d5cedca92db545839c12065d5e74ccc2..d3336b6be13ead43efb398ec0e63d89283520ce8 100644 (file)
@@ -671,7 +671,8 @@ enum reg_class
 
 #define STACK_POINTER_OFFSET 0
 
-#define FIRST_PARM_OFFSET(fundecl) 0
+#define FIRST_PARM_OFFSET(fundecl) \
+  (NDS32_DOUBLE_WORD_ALIGN_P (crtl->args.pretend_args_size) ? 0 : 4)
 
 #define RETURN_ADDR_RTX(count, frameaddr) \
   nds32_return_addr_rtx (count, frameaddr)