Commit bd5d3961 by Uros Bizjak Committed by Uros Bizjak

re PR target/87928 (ICE in ix86_compute_frame_layout, at config/i386/i386.c:11161 since r228607)

	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
parent 6d6fbec5
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> 2018-11-11 Xianmiao Qu <xianmiao_qu@c-sky.com>
* config/csky/csky-linux-elf.h (CC1_SPEC): Support -profile. * config/csky/csky-linux-elf.h (CC1_SPEC): Support -profile.
...@@ -268,9 +268,6 @@ do { \ ...@@ -268,9 +268,6 @@ do { \
bytes in one go. */ bytes in one go. */
#define CHECK_STACK_LIMIT 4000 #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, /* By default, target has a 80387, uses IEEE compatible arithmetic,
returns float values in the 387 and needs stack probes. returns float values in the 387 and needs stack probes.
We also align doubles to 64-bits for MSVC default compatibility. */ We also align doubles to 64-bits for MSVC default compatibility. */
......
...@@ -113,8 +113,7 @@ extern int darwin_emit_branch_islands; ...@@ -113,8 +113,7 @@ extern int darwin_emit_branch_islands;
or dynamic loader. */ or dynamic loader. */
#undef STACK_BOUNDARY #undef STACK_BOUNDARY
#define STACK_BOUNDARY \ #define STACK_BOUNDARY \
((profile_flag || (TARGET_64BIT && ix86_abi == MS_ABI)) \ ((profile_flag || TARGET_64BIT_MS_ABI) ? 128 : BITS_PER_WORD)
? 128 : BITS_PER_WORD)
#undef MAIN_STACK_BOUNDARY #undef MAIN_STACK_BOUNDARY
#define MAIN_STACK_BOUNDARY 128 #define MAIN_STACK_BOUNDARY 128
......
...@@ -809,8 +809,7 @@ extern const char *host_detect_local_cpu (int argc, const char **argv); ...@@ -809,8 +809,7 @@ extern const char *host_detect_local_cpu (int argc, const char **argv);
#define PARM_BOUNDARY BITS_PER_WORD #define PARM_BOUNDARY BITS_PER_WORD
/* Boundary (in *bits*) on which stack pointer should be aligned. */ /* Boundary (in *bits*) on which stack pointer should be aligned. */
#define STACK_BOUNDARY \ #define STACK_BOUNDARY (TARGET_64BIT_MS_ABI ? 128 : BITS_PER_WORD)
(TARGET_64BIT && ix86_abi == MS_ABI ? 128 : BITS_PER_WORD)
/* Stack boundary of the main function guaranteed by OS. */ /* Stack boundary of the main function guaranteed by OS. */
#define MAIN_STACK_BOUNDARY (TARGET_64BIT ? 128 : 32) #define MAIN_STACK_BOUNDARY (TARGET_64BIT ? 128 : 32)
......
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> 2018-11-09 Martin Sebor <msebor@redhat.com>
PR testsuite/87965 PR testsuite/87965
......
/* { 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;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment