aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/stmt.c5
2 files changed, 12 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 72bca64..cbd30bd 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2013-09-24 Alan Modra <amodra@gmail.com>
+
+ PR middle-end/57134
+ PR middle-end/57586
+ * stmt.c (expand_asm_operands): Call expand_expr with
+ EXPAND_MEMORY for output operands that disallow regs. Don't
+ use EXPAND_WRITE on inout operands.
+
2013-09-24 Richard Biener <rguenther@suse.de>
PR middle-end/58513
diff --git a/gcc/stmt.c b/gcc/stmt.c
index 1dc447a..c56e419 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -806,7 +806,10 @@ expand_asm_operands (tree string, tree outputs, tree inputs,
|| ! allows_reg
|| is_inout)
{
- op = expand_expr (val, NULL_RTX, VOIDmode, EXPAND_WRITE);
+ op = expand_expr (val, NULL_RTX, VOIDmode,
+ !allows_reg ? EXPAND_MEMORY
+ : !is_inout ? EXPAND_WRITE
+ : EXPAND_NORMAL);
if (MEM_P (op))
op = validize_mem (op);