aboutsummaryrefslogtreecommitdiff
path: root/gcc/calls.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2010-07-19 15:39:51 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2010-07-19 15:39:51 +0000
commit8b4c365c560219ff8d4cf1f34857bcbf7d109325 (patch)
tree0ae59fd9f0d195c2d6333012468dd2a2a43fcd65 /gcc/calls.c
parentab73eba8bf38a703e40b5e5077b51408fb715d67 (diff)
downloadgcc-8b4c365c560219ff8d4cf1f34857bcbf7d109325.zip
gcc-8b4c365c560219ff8d4cf1f34857bcbf7d109325.tar.gz
gcc-8b4c365c560219ff8d4cf1f34857bcbf7d109325.tar.bz2
re PR rtl-optimization/44941 (ICE: RTL check: expected code 'mem', have 'reg' in emit_block_move_hints, at expr.c:1189)
2010-07-19 Richard Guenther <rguenther@suse.de> PR middle-end/44941 * expr.c (emit_block_move_hints): Move zero size check first. Move asserts to more useful places. * calls.c (load_register_parameters): Check for zero size. * gcc.c-torture/compile/pr44941.c: New testcase. From-SVN: r162308
Diffstat (limited to 'gcc/calls.c')
-rw-r--r--gcc/calls.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/calls.c b/gcc/calls.c
index 0489294..7377109 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -1668,7 +1668,8 @@ load_register_parameters (struct arg_data *args, int num_actuals,
emit_move_insn (gen_rtx_REG (word_mode, REGNO (reg) + j),
args[i].aligned_regs[j]);
- else if (partial == 0 || args[i].pass_on_stack)
+ else if ((partial == 0 || args[i].pass_on_stack)
+ && size != 0)
{
rtx mem = validize_mem (args[i].value);