patches/gcc/4.0.0/140-pr21173-fix.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Feb 17 22:08:06 2008 +0000 (2008-02-17)
changeset 431 8bde4c6ea47a
permissions -rw-r--r--
Robert P. J. DAY says:

apparently, the patchset for gcc 4.2.1 applies properly to the
source for gcc 4.2.2 and gcc 4.2.3. so, if you want, you can simply
add support for those last two just by augmenting menuconfig and
adding a couple symlinks for those two directories. seems like a
cheap way to add a couple new versions.
yann@402
     1
See http://gcc.gnu.org/PR21173
yann@402
     2
This is a fix for a last minute brown-bag bug with gcc-4.0.0
yann@402
     3
yann@402
     4
 ------- Additional Comment #24 From CVS Commits 2005-04-25 14:03 [reply] ------- 
yann@402
     5
Subject: Bug 21173
yann@402
     6
yann@402
     7
CVSROOT:        /cvs/gcc
yann@402
     8
Module name:    gcc
yann@402
     9
Branch:         gcc-4_0-branch
yann@402
    10
Changes by:     dberlin@gcc.gnu.org     2005-04-25 14:02:38
yann@402
    11
yann@402
    12
Modified files:
yann@402
    13
        gcc            : ChangeLog tree-ssa-pre.c 
yann@402
    14
yann@402
    15
Log message:
yann@402
    16
        2005-04-25  Daniel Berlin  <dberlin@dberlin.org>
yann@402
    17
        
yann@402
    18
        Fix PR tree-optimization/21173
yann@402
    19
        
yann@402
    20
        * tree-ssa-pre.c (create_expression_by_pieces): Call unshare_expr
yann@402
    21
        on things we pass to force_gimple_operand.  Don't try to special
yann@402
    22
        case min_invariants.
yann@402
    23
yann@402
    24
Patches:
yann@402
    25
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@402
    26
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@402
    27
yann@402
    28
===================================================================
yann@402
    29
RCS file: /cvs/gcc/gcc/gcc/tree-ssa-pre.c,v
yann@402
    30
retrieving revision 2.65.4.2
yann@402
    31
retrieving revision 2.65.4.3
yann@402
    32
diff -u -r2.65.4.2 -r2.65.4.3
yann@402
    33
--- gcc/gcc/tree-ssa-pre.c	2005/04/17 23:40:31	2.65.4.2
yann@402
    34
+++ gcc/gcc/tree-ssa-pre.c	2005/04/25 14:02:31	2.65.4.3
yann@402
    35
@@ -1330,7 +1330,8 @@
yann@402
    36
 	
yann@402
    37
 	folded = fold (build (TREE_CODE (expr), TREE_TYPE (expr), 
yann@402
    38
 			      genop1, genop2));
yann@402
    39
-	newexpr = force_gimple_operand (folded, &forced_stmts, false, NULL);
yann@402
    40
+	newexpr = force_gimple_operand (unshare_expr (folded), 
yann@402
    41
+					&forced_stmts, false, NULL);
yann@402
    42
 	if (forced_stmts)
yann@402
    43
 	  {
yann@402
    44
 	    tsi = tsi_start (forced_stmts);
yann@402
    45
@@ -1372,14 +1373,8 @@
yann@402
    46
 	add_referenced_tmp_var (temp);
yann@402
    47
 	folded = fold (build (TREE_CODE (expr), TREE_TYPE (expr), 
yann@402
    48
 			      genop1));
yann@402
    49
-	/* If the generated operand  is already GIMPLE min_invariant
yann@402
    50
-	   just use it instead of calling force_gimple_operand on it,
yann@402
    51
-	   since that may make it not invariant by copying it into an
yann@402
    52
-	   assignment.  */
yann@402
    53
-	if (!is_gimple_min_invariant (genop1))
yann@402
    54
-	  newexpr = force_gimple_operand (folded, &forced_stmts, false, NULL);
yann@402
    55
-	else
yann@402
    56
-	  newexpr = genop1;
yann@402
    57
+	newexpr = force_gimple_operand (unshare_expr (folded), 
yann@402
    58
+					&forced_stmts, false, NULL);
yann@402
    59
 	if (forced_stmts)
yann@402
    60
 	  {
yann@402
    61
 	    tsi = tsi_start (forced_stmts);
yann@402
    62
yann@402
    63
    0K .                                                         1.24 MB/s
yann@402
    64
yann@402
    65
13:16:54 (1.24 MB/s) - `-' saved [1303]
yann@402
    66