constraints.md: Change "Q" and "T" constraints to memory constraints.

* config/pa/constraints.md: Change "Q" and "T" constraints to memory
	constraints.
	* config/pa/pa.c (pa_cannot_force_const_mem): Don't allow constant
	symbolic references to data to be forced to constant memory on the
	SOM target.

From-SVN: r220680
This commit is contained in:
John David Anglin 2015-02-13 13:06:54 +00:00
parent fb0653ab96
commit 98056c540e
3 changed files with 18 additions and 2 deletions

View File

@ -1,3 +1,11 @@
2015-02-13 John David Anglin <danglin@gcc.gnu.org>
* config/pa/constraints.md: Change "Q" and "T" constraints to memory
constraints.
* config/pa/pa.c (pa_cannot_force_const_mem): Don't allow constant
symbolic references to data to be forced to constant memory on the
SOM target.
2015-02-13 Ilya Enkovich <ilya.enkovich@intel.com>
PR tree-optimization/65002

View File

@ -106,7 +106,7 @@
(and (match_code "mem")
(match_test "IS_LO_SUM_DLT_ADDR_P (XEXP (op, 0))")))
(define_constraint "Q"
(define_memory_constraint "Q"
"A memory operand that can be used as the destination operand of an
integer store, or the source operand of an integer load. That is
any memory operand that isn't a symbolic, indexed or lo_sum memory
@ -122,7 +122,7 @@
(and (match_code "mem")
(match_test "IS_INDEX_ADDR_P (XEXP (op, 0))")))
(define_constraint "T"
(define_memory_constraint "T"
"A memory operand for floating-point loads and stores."
(match_test "floating_point_store_memory_operand (op, mode)"))

View File

@ -1569,6 +1569,14 @@ force_mode (machine_mode mode, rtx orig)
static bool
pa_cannot_force_const_mem (machine_mode mode ATTRIBUTE_UNUSED, rtx x)
{
/* Reload sometimes tries to put const data symbolic operands in
readonly memory. The HP SOM linker doesn't allow symbolic data
in readonly memory. */
if (TARGET_SOM
&& !function_label_operand (x, VOIDmode)
&& symbolic_operand (x, VOIDmode))
return true;
return tls_referenced_p (x);
}