From: Uros Bizjak Date: Sun, 18 Nov 2018 21:36:30 +0000 (+0100) Subject: backport: re PR target/87928 (ICE in ix86_compute_frame_layout, at config/i386/i386... X-Git-Tag: releases/gcc-7.4.0~41 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=effe5b750c1614551400c5b6aaebf264729e95f0;p=thirdparty%2Fgcc.git backport: re PR target/87928 (ICE in ix86_compute_frame_layout, at config/i386/i386.c:11161 since r228607) Backport from mainline 2018-11-11 Uros Bizjak 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 PR target/87928 * gcc.target/i386/pr87928.c: New test. From-SVN: r266254 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 41d1344ae496..2d07ddf9d440 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2018-11-18 Uros Bizjak + + Backport from mainline + 2018-11-11 Uros Bizjak + + 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 PR debug/88006 diff --git a/gcc/config/i386/cygming.h b/gcc/config/i386/cygming.h index a731e2f6c6ad..8cca8615114c 100644 --- a/gcc/config/i386/cygming.h +++ b/gcc/config/i386/cygming.h @@ -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. */ diff --git a/gcc/config/i386/darwin.h b/gcc/config/i386/darwin.h index fccaf7eb94ba..3a4beb05904f 100644 --- a/gcc/config/i386/darwin.h +++ b/gcc/config/i386/darwin.h @@ -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 diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index 16396fc250bd..0fe4c8b2caad 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -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) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3d3d1aefe000..37ef7160cc19 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2018-11-18 Uros Bizjak + + Backport from mainline + 2018-11-11 Uros Bizjak + + PR target/87928 + * gcc.target/i386/pr87928.c: New test. + 2018-11-15 Nathan Sidwell 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 index 000000000000..5edaa5f0676e --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr87928.c @@ -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; +}