re PR target/87928 (ICE in ix86_compute_frame_layout, at config/i386/i386.c:11161...
authorUros Bizjak <ubizjak@gmail.com>
Sun, 11 Nov 2018 17:49:33 +0000 (18:49 +0100)
committerUros Bizjak <uros@gcc.gnu.org>
Sun, 11 Nov 2018 17:49:33 +0000 (18:49 +0100)
PR target/87928
* config/i386/i386.h (STACK_BOUNDARY): Use TARGET_64BIT_MS_ABI
instead of (TARGET_64BIT && ix86_abi == MS_ABI).
* config/i386/darwin.h (STACK_BOUNDARY): Ditto.
* config/i386/cygming.h (STACK_BOUNDARY): Remove.

testsuite /Changelog:

PR target/87928
* gcc.target/i386/pr87928.c: New test.

From-SVN: r266016

gcc/ChangeLog
gcc/config/i386/cygming.h
gcc/config/i386/darwin.h
gcc/config/i386/i386.h
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr87928.c [new file with mode: 0644]

index c19badc61c3428ee8beaabcf203850a8efdb1ab0..67a6b80c0a44dbd9bece80827c318aa746adbc36 100644 (file)
@@ -1,3 +1,11 @@
+2018-11-11  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/87928
+       * config/i386/i386.h (STACK_BOUNDARY): Use TARGET_64BIT_MS_ABI
+       instead of (TARGET_64BIT && ix86_abi == MS_ABI).
+       * config/i386/darwin.h (STACK_BOUNDARY): Ditto.
+       * config/i386/cygming.h (STACK_BOUNDARY): Remove.
+
 2018-11-11  Xianmiao Qu  <xianmiao_qu@c-sky.com>
 
        * config/csky/csky-linux-elf.h (CC1_SPEC): Support -profile.
index d7c7dd7057bf600ba7a678b0fdc7af4a30f02ca7..0a3c9a0dd40167ffbdba30c43716470cc989b5a7 100644 (file)
@@ -268,9 +268,6 @@ do {                                                \
    bytes in one go.  */
 #define CHECK_STACK_LIMIT 4000
 
-#undef STACK_BOUNDARY
-#define STACK_BOUNDARY (TARGET_64BIT && ix86_abi == MS_ABI ? 128 : BITS_PER_WORD)
-
 /* By default, target has a 80387, uses IEEE compatible arithmetic,
    returns float values in the 387 and needs stack probes.
    We also align doubles to 64-bits for MSVC default compatibility.  */
index cf7d4effd1e658376282c88a9456906ae8855313..1ea5dc3b8297f4a620a75c716b4f051afb581936 100644 (file)
@@ -113,8 +113,7 @@ extern int darwin_emit_branch_islands;
    or dynamic loader.  */
 #undef STACK_BOUNDARY
 #define STACK_BOUNDARY \
- ((profile_flag || (TARGET_64BIT && ix86_abi == MS_ABI)) \
-  ? 128 : BITS_PER_WORD)
+  ((profile_flag || TARGET_64BIT_MS_ABI) ? 128 : BITS_PER_WORD)
 
 #undef MAIN_STACK_BOUNDARY
 #define MAIN_STACK_BOUNDARY 128
index 3a26644b49001ea91bc821d84b06b08c0dadf9b5..813c86dbdfa94cafe73d198de16ce14f1510d389 100644 (file)
@@ -809,8 +809,7 @@ extern const char *host_detect_local_cpu (int argc, const char **argv);
 #define PARM_BOUNDARY BITS_PER_WORD
 
 /* Boundary (in *bits*) on which stack pointer should be aligned.  */
-#define STACK_BOUNDARY \
- (TARGET_64BIT && ix86_abi == MS_ABI ? 128 : BITS_PER_WORD)
+#define STACK_BOUNDARY (TARGET_64BIT_MS_ABI ? 128 : BITS_PER_WORD)
 
 /* Stack boundary of the main function guaranteed by OS.  */
 #define MAIN_STACK_BOUNDARY (TARGET_64BIT ? 128 : 32)
index 562c4e2896edf1a3459bd8fcf6fd0cf36a2b8a3e..dd2cc13ccfc4185ed23d3034d665e51acc3bd717 100644 (file)
@@ -1,3 +1,8 @@
+2018-11-11  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/87928
+       * gcc.target/i386/pr87928.c: New test.
+
 2018-11-09  Martin Sebor  <msebor@redhat.com>
 
        PR testsuite/87965
diff --git a/gcc/testsuite/gcc.target/i386/pr87928.c b/gcc/testsuite/gcc.target/i386/pr87928.c
new file mode 100644 (file)
index 0000000..5edaa5f
--- /dev/null
@@ -0,0 +1,23 @@
+/* { dg-do compile { target lp64 } } */
+/* { dg-options "-O1 -mstackrealign -mabi=ms" } */
+
+struct foo
+{
+  int a;
+  int b;
+  int c;
+  int d;
+};
+
+__attribute__ ((sysv_abi))
+struct foo bar (void)
+{
+  struct foo retval;
+
+  retval.a = 1;
+  retval.b = 2;
+  retval.c = 3;
+  retval.d = 4;
+
+  return retval;
+}