PR middle-end/57134
authoramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 24 Sep 2013 11:32:28 +0000 (11:32 +0000)
committeramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 24 Sep 2013 11:32:28 +0000 (11:32 +0000)
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@202866 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/stmt.c

index 72bca64..cbd30bd 100644 (file)
@@ -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
index 1dc447a..c56e419 100644 (file)
@@ -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);