lra-constraints.c (process_address_1): Do not attempt to decompose addresses for...
authorEric Botcazou <ebotcazou@adacore.com>
Wed, 14 Dec 2016 08:34:15 +0000 (08:34 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Wed, 14 Dec 2016 08:34:15 +0000 (08:34 +0000)
* lra-constraints.c (process_address_1): Do not attempt to decompose
addresses for MEMs that satisfy fixed-form constraints.

From-SVN: r243632

gcc/ChangeLog
gcc/lra-constraints.c

index 17a33618b5ec06649afc093cc2d57c16a9c82519..24c6672e008249de9f8fa6f36611cd1bc81f10f9 100644 (file)
@@ -1,3 +1,8 @@
+2016-12-14  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * lra-constraints.c (process_address_1): Do not attempt to decompose
+       addresses for MEMs that satisfy fixed-form constraints.
+
 2016-12-14  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/78788
index e661aefe202e70cb0fe439a4a568f41f91552de4..f7009eac32969d347bb39e2874546a1b9cf19b67 100644 (file)
@@ -3080,7 +3080,11 @@ process_address_1 (int nop, bool check_only_p,
 
   if (insn_extra_address_constraint (cn))
     decompose_lea_address (&ad, curr_id->operand_loc[nop]);
-  else if (MEM_P (op))
+  /* Do not attempt to decompose arbitrary addresses generated by combine
+     for asm operands with loose constraints, e.g 'X'.  */
+  else if (MEM_P (op)
+          && !(get_constraint_type (cn) == CT_FIXED_FORM
+               && constraint_satisfied_p (op, cn)))
     decompose_mem_address (&ad, op);
   else if (GET_CODE (op) == SUBREG
           && MEM_P (SUBREG_REG (op)))