]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
backport: re PR target/87928 (ICE in ix86_compute_frame_layout, at config/i386/i386...
authorUros Bizjak <ubizjak@gmail.com>
Sun, 18 Nov 2018 21:36:30 +0000 (22:36 +0100)
committerUros Bizjak <uros@gcc.gnu.org>
Sun, 18 Nov 2018 21:36:30 +0000 (22:36 +0100)
Backport from mainline
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.

testsuite/ChangeLog:

Backport from mainline
2018-11-11  Uros Bizjak  <ubizjak@gmail.com>

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

From-SVN: r266254

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 41d1344ae49695f0f7f144ea4fa58203f8680ce1..2d07ddf9d440db80d18cc7ee2bd90aa6b3344172 100644 (file)
@@ -1,3 +1,14 @@
+2018-11-18  Uros Bizjak  <ubizjak@gmail.com>
+
+       Backport from mainline
+       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-15  Nathan Sidwell  <nathan@acm.org>
 
        PR debug/88006
index a731e2f6c6ad9c338f16cc02440b537c1ff79d76..8cca8615114ce842fafc103bd51a91e190224f8e 100644 (file)
@@ -269,9 +269,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 fccaf7eb94ba51cc7a70dc76abba815c0219d023..3a4beb05904f72d41e68a7d4fcc98daa7cc2c117 100644 (file)
@@ -87,8 +87,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 16396fc250bdbea3869da6a6a7dc7f5764468f4f..0fe4c8b2caad22a3b849967904ec762dac663866 100644 (file)
@@ -759,8 +759,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 3d3d1aefe0006c66e7bae698683eaa6859913563..37ef7160cc192e66d4ba31b35aa60e4c3fa81749 100644 (file)
@@ -1,3 +1,11 @@
+2018-11-18  Uros Bizjak  <ubizjak@gmail.com>
+
+       Backport from mainline
+       2018-11-11  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/87928
+       * gcc.target/i386/pr87928.c: New test.
+
 2018-11-15  Nathan Sidwell  <nathan@acm.org>
 
        PR debug/88006
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;
+}