aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChung-Ju Wu <jasonwucj@gmail.com>2014-09-03 09:44:49 +0000
committerChung-Ju Wu <jasonwucj@gcc.gnu.org>2014-09-03 09:44:49 +0000
commit4f44e960ea3c175eb8ec92b6872b8a2ef6775dba (patch)
tree4f15f075b3f2f4ae828d408b82e2152870da9354
parent35da54a6086474e5c37826fb63aeaf70bc794181 (diff)
downloadgcc-4f44e960ea3c175eb8ec92b6872b8a2ef6775dba.zip
gcc-4f44e960ea3c175eb8ec92b6872b8a2ef6775dba.tar.gz
gcc-4f44e960ea3c175eb8ec92b6872b8a2ef6775dba.tar.bz2
[NDS32] Since argument pointer must be 8-byte alignment...
[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
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/nds32/nds32.h3
2 files changed, 7 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 31baaad..90be64a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
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
varargs information.
diff --git a/gcc/config/nds32/nds32.h b/gcc/config/nds32/nds32.h
index 3f4c3ae..d3336b6 100644
--- a/gcc/config/nds32/nds32.h
+++ b/gcc/config/nds32/nds32.h
@@ -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)