From: Alan Modra Date: Tue, 24 Sep 2013 11:32:28 +0000 (+0930) Subject: re PR middle-end/57134 (ICE with -mstrict-align and inline assembly on ppc64) X-Git-Tag: releases/gcc-4.9.0~3911 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5a8c2b571c68cea56cab84c90bf407363c8a3587;p=thirdparty%2Fgcc.git re PR middle-end/57134 (ICE with -mstrict-align and inline assembly on ppc64) 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. From-SVN: r202866 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 72bca64b0313..cbd30bd62507 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2013-09-24 Alan Modra + + 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 PR middle-end/58513 diff --git a/gcc/stmt.c b/gcc/stmt.c index 1dc447a5c858..c56e419312bd 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);