diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2015-12-08 18:47:54 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2015-12-08 18:47:54 +0000 |
commit | 21fc3950f686e37785b377d44d0054b75e8e203f (patch) | |
tree | 2cd69c5e36666ee9b948247a6efa48eef6cbc59d /gcc | |
parent | 2f0ce51aee5b0036b4134a8acf6b9b801293b4d3 (diff) | |
download | gcc-21fc3950f686e37785b377d44d0054b75e8e203f.zip gcc-21fc3950f686e37785b377d44d0054b75e8e203f.tar.gz gcc-21fc3950f686e37785b377d44d0054b75e8e203f.tar.bz2 |
re PR middle-end/68291 (ICE in emit_move_insn, at expr.c:3540)
PR middle-end/68291
PR middle-end/68292
* cfgexpand.c (set_rtl): Always accept mode mismatch for SSA names
with BLKmode promoted mode based on RESULT_DECLs.
From-SVN: r231422
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cfgexpand.c | 11 |
2 files changed, 14 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ed8dd11..e186901 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2015-12-08 Eric Botcazou <ebotcazou@adacore.com> + + PR middle-end/68291 + PR middle-end/68292 + * cfgexpand.c (set_rtl): Always accept mode mismatch for SSA names + with BLKmode promoted mode based on RESULT_DECLs. + 2015-12-08 Uros Bizjak <ubizjak@gmail.com> PR target/68701 diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c index 5338c25..7fe02a9 100644 --- a/gcc/cfgexpand.c +++ b/gcc/cfgexpand.c @@ -203,11 +203,14 @@ set_rtl (tree t, rtx x) PARM_DECLs and RESULT_DECLs, we'll have been called by set_parm_rtl, which will give us the default def, so we don't have to compute it ourselves. For RESULT_DECLs, we accept mode - mismatches too, as long as we're not coalescing across variables, - so that we don't reject BLKmode PARALLELs or unpromoted REGs. */ + mismatches too, as long as we have BLKmode or are not coalescing + across variables, so that we don't reject BLKmode PARALLELs or + unpromoted REGs. */ gcc_checking_assert (!x || x == pc_rtx || TREE_CODE (t) != SSA_NAME - || (SSAVAR (t) && TREE_CODE (SSAVAR (t)) == RESULT_DECL - && !flag_tree_coalesce_vars) + || (SSAVAR (t) + && TREE_CODE (SSAVAR (t)) == RESULT_DECL + && (promote_ssa_mode (t, NULL) == BLKmode + || !flag_tree_coalesce_vars)) || !use_register_for_decl (t) || GET_MODE (x) == promote_ssa_mode (t, NULL)); |