diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/stmt.c | 5 |
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 @@ -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); |