diff options
author | Hui-May Chang <hm.chang@apple.com> | 2007-05-29 22:49:42 +0000 |
---|---|---|
committer | Hui-May Chang <hmchang@gcc.gnu.org> | 2007-05-29 22:49:42 +0000 |
commit | f2f0a9602a03847ef4da72d015a52b15aca14354 (patch) | |
tree | b448a9e3d24b0f17725eff5b9708233f7a6f4ae9 | |
parent | 5417e0224b5fef840b1faa50c43dc660579e4f7b (diff) | |
download | gcc-f2f0a9602a03847ef4da72d015a52b15aca14354.zip gcc-f2f0a9602a03847ef4da72d015a52b15aca14354.tar.gz gcc-f2f0a9602a03847ef4da72d015a52b15aca14354.tar.bz2 |
i386.c (ix86_function_regparm): Added checking of ix86_force_align_arg_pointer to determine the number of...
* config/i386/i386.c (ix86_function_regparm): Added checking of
ix86_force_align_arg_pointer to determine the number of
register parameters.
* gcc.target/i386/stack-realign.c: New.
From-SVN: r125173
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/stack-realign.c | 16 |
4 files changed, 27 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9c74295..8dca307 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2007-05-29 Hui-May Chang <hm.chang@apple.com> + * config/i386/i386.c (ix86_function_regparm): Added checking of + ix86_force_align_arg_pointer to determine the number of + register parameters. + 2007-05-29 Zdenek Dvorak <dvorakz@suse.cz> * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index f68dc6a..51d7afe 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -2837,7 +2837,8 @@ ix86_function_regparm (tree type, tree decl) /* We can't use regparm(3) for nested functions as these use static chain pointer in third argument. */ if (local_regparm == 3 - && decl_function_context (decl) + && (decl_function_context (decl) + || ix86_force_align_arg_pointer) && !DECL_NO_STATIC_CHAIN (decl)) local_regparm = 2; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6340ca4..8ed7efe 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2007-05-29 Hui-May Chang <hm.chang@apple.com> + + * gcc.target/i386/stack-realign.c: New. + 2007-05-29 Zdenek Dvorak <dvorakz@suse.cz> * gcc.dg/tree-ssa/prefetch-6.c: New test. diff --git a/gcc/testsuite/gcc.target/i386/stack-realign.c b/gcc/testsuite/gcc.target/i386/stack-realign.c new file mode 100644 index 0000000..75054e0 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/stack-realign.c @@ -0,0 +1,16 @@ +/* { dg-do run { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */ +/* { dg-options "-mstackrealign -O2" } */ + +extern void abort (void); + +__attribute__((noinline)) static void foo (int i1, int i2, int i3) +{ + if (i3 != 3) + abort (); +} + +int main (int argc, char **argv) +{ + foo (1, 2, 3); + return 0; +} |