mirror of git://gcc.gnu.org/git/gcc.git
re PR target/52999 (ICE, segmentation fault in c_tree_printer)
2012-05-30 John David Anglin <dave.anglin@nrc-cnrc.gc.ca> PR target/52999 * config/pa/pa.c (TARGET_SECTION_TYPE_FLAGS): Define. (pa_section_type_flags): New. (pa_legitimate_constant_p): Revert previous change. From-SVN: r188031
This commit is contained in:
parent
66edf32a6f
commit
fda33f152e
|
@ -1,3 +1,10 @@
|
||||||
|
2012-05-30 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
|
||||||
|
|
||||||
|
PR target/52999
|
||||||
|
* config/pa/pa.c (TARGET_SECTION_TYPE_FLAGS): Define.
|
||||||
|
(pa_section_type_flags): New.
|
||||||
|
(pa_legitimate_constant_p): Revert previous change.
|
||||||
|
|
||||||
2012-05-30 Steven Bosscher <steven@gcc.gnu.org>
|
2012-05-30 Steven Bosscher <steven@gcc.gnu.org>
|
||||||
|
|
||||||
* ira.c (allocate_initial_values): Make static.
|
* ira.c (allocate_initial_values): Make static.
|
||||||
|
|
|
@ -187,6 +187,7 @@ static enum machine_mode pa_c_mode_for_suffix (char);
|
||||||
static section *pa_function_section (tree, enum node_frequency, bool, bool);
|
static section *pa_function_section (tree, enum node_frequency, bool, bool);
|
||||||
static bool pa_cannot_force_const_mem (enum machine_mode, rtx);
|
static bool pa_cannot_force_const_mem (enum machine_mode, rtx);
|
||||||
static bool pa_legitimate_constant_p (enum machine_mode, rtx);
|
static bool pa_legitimate_constant_p (enum machine_mode, rtx);
|
||||||
|
static unsigned int pa_section_type_flags (tree, const char *, int);
|
||||||
|
|
||||||
/* The following extra sections are only used for SOM. */
|
/* The following extra sections are only used for SOM. */
|
||||||
static GTY(()) section *som_readonly_data_section;
|
static GTY(()) section *som_readonly_data_section;
|
||||||
|
@ -382,6 +383,8 @@ static size_t n_deferred_plabels = 0;
|
||||||
|
|
||||||
#undef TARGET_LEGITIMATE_CONSTANT_P
|
#undef TARGET_LEGITIMATE_CONSTANT_P
|
||||||
#define TARGET_LEGITIMATE_CONSTANT_P pa_legitimate_constant_p
|
#define TARGET_LEGITIMATE_CONSTANT_P pa_legitimate_constant_p
|
||||||
|
#undef TARGET_SECTION_TYPE_FLAGS
|
||||||
|
#define TARGET_SECTION_TYPE_FLAGS pa_section_type_flags
|
||||||
|
|
||||||
struct gcc_target targetm = TARGET_INITIALIZER;
|
struct gcc_target targetm = TARGET_INITIALIZER;
|
||||||
|
|
||||||
|
@ -10339,7 +10342,29 @@ pa_legitimate_constant_p (enum machine_mode mode, rtx x)
|
||||||
&& !pa_cint_ok_for_move (INTVAL (x)))
|
&& !pa_cint_ok_for_move (INTVAL (x)))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
if (function_label_operand (x, mode))
|
||||||
|
return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Implement TARGET_SECTION_TYPE_FLAGS. */
|
||||||
|
|
||||||
|
static unsigned int
|
||||||
|
pa_section_type_flags (tree decl, const char *name, int reloc)
|
||||||
|
{
|
||||||
|
unsigned int flags;
|
||||||
|
|
||||||
|
flags = default_section_type_flags (decl, name, reloc);
|
||||||
|
|
||||||
|
/* Function labels are placed in the constant pool. This can
|
||||||
|
cause a section conflict if decls are put in ".data.rel.ro"
|
||||||
|
or ".data.rel.ro.local" using the __attribute__ construct. */
|
||||||
|
if (strcmp (name, ".data.rel.ro") == 0
|
||||||
|
|| strcmp (name, ".data.rel.ro.local") == 0)
|
||||||
|
flags |= SECTION_WRITE | SECTION_RELRO;
|
||||||
|
|
||||||
|
return flags;
|
||||||
|
}
|
||||||
|
|
||||||
#include "gt-pa.h"
|
#include "gt-pa.h"
|
||||||
|
|
Loading…
Reference in New Issue