yann@1: See http://gcc.gnu.org/PR21173 yann@1: This is a fix for a last minute brown-bag bug with gcc-4.0.0 yann@1: yann@1: ------- Additional Comment #24 From CVS Commits 2005-04-25 14:03 [reply] ------- yann@1: Subject: Bug 21173 yann@1: yann@1: CVSROOT: /cvs/gcc yann@1: Module name: gcc yann@1: Branch: gcc-4_0-branch yann@1: Changes by: dberlin@gcc.gnu.org 2005-04-25 14:02:38 yann@1: yann@1: Modified files: yann@1: gcc : ChangeLog tree-ssa-pre.c yann@1: yann@1: Log message: yann@1: 2005-04-25 Daniel Berlin yann@1: yann@1: Fix PR tree-optimization/21173 yann@1: yann@1: * tree-ssa-pre.c (create_expression_by_pieces): Call unshare_expr yann@1: on things we pass to force_gimple_operand. Don't try to special yann@1: case min_invariants. yann@1: yann@1: Patches: yann@1: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=2.7592.2.192&r2=2.7592.2.193 yann@1: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa-pre.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=2.65.4.2&r2=2.65.4.3 yann@1: yann@1: =================================================================== yann@1: RCS file: /cvs/gcc/gcc/gcc/tree-ssa-pre.c,v yann@1: retrieving revision 2.65.4.2 yann@1: retrieving revision 2.65.4.3 yann@1: diff -u -r2.65.4.2 -r2.65.4.3 yann@1: --- gcc/gcc/tree-ssa-pre.c 2005/04/17 23:40:31 2.65.4.2 yann@1: +++ gcc/gcc/tree-ssa-pre.c 2005/04/25 14:02:31 2.65.4.3 yann@1: @@ -1330,7 +1330,8 @@ yann@1: yann@1: folded = fold (build (TREE_CODE (expr), TREE_TYPE (expr), yann@1: genop1, genop2)); yann@1: - newexpr = force_gimple_operand (folded, &forced_stmts, false, NULL); yann@1: + newexpr = force_gimple_operand (unshare_expr (folded), yann@1: + &forced_stmts, false, NULL); yann@1: if (forced_stmts) yann@1: { yann@1: tsi = tsi_start (forced_stmts); yann@1: @@ -1372,14 +1373,8 @@ yann@1: add_referenced_tmp_var (temp); yann@1: folded = fold (build (TREE_CODE (expr), TREE_TYPE (expr), yann@1: genop1)); yann@1: - /* If the generated operand is already GIMPLE min_invariant yann@1: - just use it instead of calling force_gimple_operand on it, yann@1: - since that may make it not invariant by copying it into an yann@1: - assignment. */ yann@1: - if (!is_gimple_min_invariant (genop1)) yann@1: - newexpr = force_gimple_operand (folded, &forced_stmts, false, NULL); yann@1: - else yann@1: - newexpr = genop1; yann@1: + newexpr = force_gimple_operand (unshare_expr (folded), yann@1: + &forced_stmts, false, NULL); yann@1: if (forced_stmts) yann@1: { yann@1: tsi = tsi_start (forced_stmts); yann@1: yann@1: 0K . 1.24 MB/s yann@1: yann@1: 13:16:54 (1.24 MB/s) - `-' saved [1303] yann@1: