mirror of git://gcc.gnu.org/git/gcc.git
re PR target/48344 (powerpc ICE with -fstack-limit-register=r2)
[gcc] 2016-02-16 Kelvin Nilsen <kelvin@gcc.gnu.org> PR Target/48344 * opts-global.c (handle_common_deferred_options): Introduce and initialize two global variables to remember command-line options specifying a stack-limiting register. * opts.h: Add extern declarations of the two new global variables. * emit-rtl.c (init_emit_once): Initialize the stack_limit_rtx variable based on the values of the two new global variables. [gcc/testsuite] 2016-02-16 Kelvin Nilsen <kelvin@gcc.gnu.org> PR Target/48344 * gcc.target/powerpc/pr48344-1.c: New test. From-SVN: r233477
This commit is contained in:
parent
49a1164ae3
commit
ecf835e901
|
|
@ -1,3 +1,13 @@
|
|||
2016-02-16 Kelvin Nilsen <kelvin@gcc.gnu.org>
|
||||
|
||||
PR Target/48344
|
||||
* opts-global.c (handle_common_deferred_options): Introduce and
|
||||
initialize two global variables to remember command-line options
|
||||
specifying a stack-limiting register.
|
||||
* opts.h: Add extern declarations of the two new global variables.
|
||||
* emit-rtl.c (init_emit_once): Initialize the stack_limit_rtx
|
||||
variable based on the values of the two new global variables.
|
||||
|
||||
2016-02-16 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c/69835
|
||||
|
|
|
|||
|
|
@ -57,6 +57,7 @@ along with GCC; see the file COPYING3. If not see
|
|||
#include "builtins.h"
|
||||
#include "rtl-iter.h"
|
||||
#include "stor-layout.h"
|
||||
#include "opts.h"
|
||||
|
||||
struct target_rtl default_target_rtl;
|
||||
#if SWITCHABLE_TARGET
|
||||
|
|
@ -5895,6 +5896,13 @@ init_emit_once (void)
|
|||
|
||||
/* Create the unique rtx's for certain rtx codes and operand values. */
|
||||
|
||||
/* Process stack-limiting command-line options. */
|
||||
if (opt_fstack_limit_symbol_arg != NULL)
|
||||
stack_limit_rtx
|
||||
= gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (opt_fstack_limit_symbol_arg));
|
||||
if (opt_fstack_limit_register_no >= 0)
|
||||
stack_limit_rtx = gen_rtx_REG (Pmode, opt_fstack_limit_register_no);
|
||||
|
||||
/* Don't use gen_rtx_CONST_INT here since gen_rtx_CONST_INT in this case
|
||||
tries to use these variables. */
|
||||
for (i = - MAX_SAVED_CONST_INT; i <= MAX_SAVED_CONST_INT; i++)
|
||||
|
|
|
|||
|
|
@ -310,6 +310,10 @@ decode_options (struct gcc_options *opts, struct gcc_options *opts_set,
|
|||
finish_options (opts, opts_set, loc);
|
||||
}
|
||||
|
||||
/* Hold command-line options associated with stack limitation. */
|
||||
const char *opt_fstack_limit_symbol_arg = NULL;
|
||||
int opt_fstack_limit_register_no = -1;
|
||||
|
||||
/* Process common options that have been deferred until after the
|
||||
handlers have been called for all options. */
|
||||
|
||||
|
|
@ -417,12 +421,18 @@ handle_common_deferred_options (void)
|
|||
if (reg < 0)
|
||||
error ("unrecognized register name %qs", opt->arg);
|
||||
else
|
||||
stack_limit_rtx = gen_rtx_REG (Pmode, reg);
|
||||
{
|
||||
/* Deactivate previous OPT_fstack_limit_symbol_ options. */
|
||||
opt_fstack_limit_symbol_arg = NULL;
|
||||
opt_fstack_limit_register_no = reg;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case OPT_fstack_limit_symbol_:
|
||||
stack_limit_rtx = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (opt->arg));
|
||||
/* Deactivate previous OPT_fstack_limit_register_ options. */
|
||||
opt_fstack_limit_register_no = -1;
|
||||
opt_fstack_limit_symbol_arg = opt->arg;
|
||||
break;
|
||||
|
||||
case OPT_fasan_shadow_offset_:
|
||||
|
|
|
|||
|
|
@ -296,6 +296,10 @@ struct cl_option_handlers
|
|||
struct cl_option_handler_func handlers[3];
|
||||
};
|
||||
|
||||
/* Hold command-line options associated with stack limitation. */
|
||||
extern const char *opt_fstack_limit_symbol_arg;
|
||||
extern int opt_fstack_limit_register_no;
|
||||
|
||||
/* Input file names. */
|
||||
|
||||
extern const char **in_fnames;
|
||||
|
|
|
|||
|
|
@ -1,3 +1,8 @@
|
|||
2016-02-16 Kelvin Nilsen <kelvin@gcc.gnu.org>
|
||||
|
||||
PR Target/48344
|
||||
* gcc.target/powerpc/pr48344-1.c: New test.
|
||||
|
||||
2015-02-16 Thomas Koenig <tkoenig@gcc.gnu.org>
|
||||
|
||||
PR fortran/69742
|
||||
|
|
|
|||
|
|
@ -0,0 +1,8 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-fstack-limit-register=r2" } */
|
||||
void foo ()
|
||||
{
|
||||
int N = 2;
|
||||
int slots[N];
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue