patches/gcc/4.0.0/pr21173-fix.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sat Feb 24 11:00:05 2007 +0000 (2007-02-24)
changeset 1 eeea35fbf182
permissions -rw-r--r--
Add the full crosstool-NG sources to the new repository of its own.
You might just say: 'Yeah! crosstool-NG's got its own repo!".
Unfortunately, that's because the previous repo got damaged beyond repair and I had no backup.
That means I'm putting backups in place in the afternoon.
That also means we've lost history... :-(
yann@1
     1
See http://gcc.gnu.org/PR21173
yann@1
     2
This is a fix for a last minute brown-bag bug with gcc-4.0.0
yann@1
     3
yann@1
     4
 ------- Additional Comment #24 From CVS Commits 2005-04-25 14:03 [reply] ------- 
yann@1
     5
Subject: Bug 21173
yann@1
     6
yann@1
     7
CVSROOT:        /cvs/gcc
yann@1
     8
Module name:    gcc
yann@1
     9
Branch:         gcc-4_0-branch
yann@1
    10
Changes by:     dberlin@gcc.gnu.org     2005-04-25 14:02:38
yann@1
    11
yann@1
    12
Modified files:
yann@1
    13
        gcc            : ChangeLog tree-ssa-pre.c 
yann@1
    14
yann@1
    15
Log message:
yann@1
    16
        2005-04-25  Daniel Berlin  <dberlin@dberlin.org>
yann@1
    17
        
yann@1
    18
        Fix PR tree-optimization/21173
yann@1
    19
        
yann@1
    20
        * tree-ssa-pre.c (create_expression_by_pieces): Call unshare_expr
yann@1
    21
        on things we pass to force_gimple_operand.  Don't try to special
yann@1
    22
        case min_invariants.
yann@1
    23
yann@1
    24
Patches:
yann@1
    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@1
    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@1
    27
yann@1
    28
===================================================================
yann@1
    29
RCS file: /cvs/gcc/gcc/gcc/tree-ssa-pre.c,v
yann@1
    30
retrieving revision 2.65.4.2
yann@1
    31
retrieving revision 2.65.4.3
yann@1
    32
diff -u -r2.65.4.2 -r2.65.4.3
yann@1
    33
--- gcc/gcc/tree-ssa-pre.c	2005/04/17 23:40:31	2.65.4.2
yann@1
    34
+++ gcc/gcc/tree-ssa-pre.c	2005/04/25 14:02:31	2.65.4.3
yann@1
    35
@@ -1330,7 +1330,8 @@
yann@1
    36
 	
yann@1
    37
 	folded = fold (build (TREE_CODE (expr), TREE_TYPE (expr), 
yann@1
    38
 			      genop1, genop2));
yann@1
    39
-	newexpr = force_gimple_operand (folded, &forced_stmts, false, NULL);
yann@1
    40
+	newexpr = force_gimple_operand (unshare_expr (folded), 
yann@1
    41
+					&forced_stmts, false, NULL);
yann@1
    42
 	if (forced_stmts)
yann@1
    43
 	  {
yann@1
    44
 	    tsi = tsi_start (forced_stmts);
yann@1
    45
@@ -1372,14 +1373,8 @@
yann@1
    46
 	add_referenced_tmp_var (temp);
yann@1
    47
 	folded = fold (build (TREE_CODE (expr), TREE_TYPE (expr), 
yann@1
    48
 			      genop1));
yann@1
    49
-	/* If the generated operand  is already GIMPLE min_invariant
yann@1
    50
-	   just use it instead of calling force_gimple_operand on it,
yann@1
    51
-	   since that may make it not invariant by copying it into an
yann@1
    52
-	   assignment.  */
yann@1
    53
-	if (!is_gimple_min_invariant (genop1))
yann@1
    54
-	  newexpr = force_gimple_operand (folded, &forced_stmts, false, NULL);
yann@1
    55
-	else
yann@1
    56
-	  newexpr = genop1;
yann@1
    57
+	newexpr = force_gimple_operand (unshare_expr (folded), 
yann@1
    58
+					&forced_stmts, false, NULL);
yann@1
    59
 	if (forced_stmts)
yann@1
    60
 	  {
yann@1
    61
 	    tsi = tsi_start (forced_stmts);
yann@1
    62
yann@1
    63
    0K .                                                         1.24 MB/s
yann@1
    64
yann@1
    65
13:16:54 (1.24 MB/s) - `-' saved [1303]
yann@1
    66