SOURCES: gcc-branch.diff - updated.

pluto pluto at pld-linux.org
Wed Apr 25 23:15:25 CEST 2007


Author: pluto                        Date: Wed Apr 25 21:15:25 2007 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- updated.

---- Files affected:
SOURCES:
   gcc-branch.diff (1.1 -> 1.2) 

---- Diffs:

================================================================
Index: SOURCES/gcc-branch.diff
diff -u SOURCES/gcc-branch.diff:1.1 SOURCES/gcc-branch.diff:1.2
--- SOURCES/gcc-branch.diff:1.1	Mon Apr 16 10:57:44 2007
+++ SOURCES/gcc-branch.diff	Wed Apr 25 23:15:20 2007
@@ -1,7 +1,7 @@
 Index: gcc-4_2-branch/libgomp/configure
 ===================================================================
 --- gcc-4_2-branch/libgomp/configure	(revision 123014)
-+++ gcc-4_2-branch/libgomp/configure	(revision 123843)
++++ gcc-4_2-branch/libgomp/configure	(revision 124164)
 @@ -9315,7 +9315,7 @@
    # does some of this, but throws away the result.
  
@@ -14,7 +14,7 @@
 Index: gcc-4_2-branch/libgomp/ChangeLog
 ===================================================================
 --- gcc-4_2-branch/libgomp/ChangeLog	(revision 123014)
-+++ gcc-4_2-branch/libgomp/ChangeLog	(revision 123843)
++++ gcc-4_2-branch/libgomp/ChangeLog	(revision 124164)
 @@ -1,3 +1,9 @@
 +2007-03-18  Andreas Schwab  <schwab at suse.de>
 +
@@ -28,7 +28,7 @@
 Index: gcc-4_2-branch/libgomp/acinclude.m4
 ===================================================================
 --- gcc-4_2-branch/libgomp/acinclude.m4	(revision 123014)
-+++ gcc-4_2-branch/libgomp/acinclude.m4	(revision 123843)
++++ gcc-4_2-branch/libgomp/acinclude.m4	(revision 124164)
 @@ -148,7 +148,7 @@
    # does some of this, but throws away the result.
    changequote(,)
@@ -41,8 +41,61 @@
 Index: gcc-4_2-branch/gcc/tree-vrp.c
 ===================================================================
 --- gcc-4_2-branch/gcc/tree-vrp.c	(revision 123014)
-+++ gcc-4_2-branch/gcc/tree-vrp.c	(revision 123843)
-@@ -1892,10 +1892,18 @@
++++ gcc-4_2-branch/gcc/tree-vrp.c	(revision 124164)
+@@ -266,6 +266,10 @@
+ 
+       cmp = compare_values (min, max);
+       gcc_assert (cmp == 0 || cmp == -1 || cmp == -2);
++
++      if (needs_overflow_infinity (TREE_TYPE (min)))
++	gcc_assert (!is_overflow_infinity (min)
++		    || !is_overflow_infinity (max));
+     }
+ 
+   if (t == VR_UNDEFINED || t == VR_VARYING)
+@@ -314,6 +318,23 @@
+     bitmap_clear (vr->equiv);
+ }
+ 
++/* Set value range VR to a single value.  This function is only called
++   with values we get from statements, and exists to clear the
++   TREE_OVERFLOW flag so that we don't think we have an overflow
++   infinity when we shouldn't.  */
++
++static inline void
++set_value_range_to_value (value_range_t *vr, tree val)
++{
++  gcc_assert (is_gimple_min_invariant (val));
++  if (is_overflow_infinity (val))
++    {
++      val = copy_node (val);
++      TREE_OVERFLOW (val) = 0;
++    }
++  set_value_range (vr, VR_RANGE, val, val, NULL);
++}
++
+ /* Set value range VR to a non-negative range of type TYPE.
+    OVERFLOW_INFINITY indicates whether to use a overflow infinity
+    rather than TYPE_MAX_VALUE; this should be true if we determine
+@@ -1565,7 +1586,7 @@
+   if (TREE_CODE (op0) == SSA_NAME)
+     vr0 = *(get_value_range (op0));
+   else if (is_gimple_min_invariant (op0))
+-    set_value_range (&vr0, VR_RANGE, op0, op0, NULL);
++    set_value_range_to_value (&vr0, op0);
+   else
+     set_value_range_to_varying (&vr0);
+ 
+@@ -1573,7 +1594,7 @@
+   if (TREE_CODE (op1) == SSA_NAME)
+     vr1 = *(get_value_range (op1));
+   else if (is_gimple_min_invariant (op1))
+-    set_value_range (&vr1, VR_RANGE, op1, op1, NULL);
++    set_value_range_to_value (&vr1, op1);
+   else
+     set_value_range_to_varying (&vr1);
+ 
+@@ -1892,10 +1913,18 @@
        return;
      }
  
@@ -63,10 +116,89 @@
      {
        set_value_range_to_varying (vr);
        return;
+@@ -1946,7 +1975,7 @@
+   if (TREE_CODE (op0) == SSA_NAME)
+     vr0 = *(get_value_range (op0));
+   else if (is_gimple_min_invariant (op0))
+-    set_value_range (&vr0, VR_RANGE, op0, op0, NULL);
++    set_value_range_to_value (&vr0, op0);
+   else
+     set_value_range_to_varying (&vr0);
+ 
+@@ -2078,7 +2107,9 @@
+ 	min = fold_unary_to_constant (code, TREE_TYPE (expr), vr0.max);
+       else if (needs_overflow_infinity (TREE_TYPE (expr)))
+ 	{
+-	  if (supports_overflow_infinity (TREE_TYPE (expr)))
++	  if (supports_overflow_infinity (TREE_TYPE (expr))
++	      && !is_overflow_infinity (vr0.min)
++	      && vr0.min != TYPE_MIN_VALUE (TREE_TYPE (expr)))
+ 	    min = positive_overflow_infinity (TREE_TYPE (expr));
+ 	  else
+ 	    {
+@@ -2254,6 +2285,18 @@
+       if (needs_overflow_infinity (TREE_TYPE (expr)))
+ 	{
+ 	  gcc_assert (code != NEGATE_EXPR && code != ABS_EXPR);
++
++	  /* If both sides have overflowed, we don't know
++	     anything.  */
++	  if ((is_overflow_infinity (vr0.min)
++	       || TREE_OVERFLOW (min))
++	      && (is_overflow_infinity (vr0.max)
++		  || TREE_OVERFLOW (max)))
++	    {
++	      set_value_range_to_varying (vr);
++	      return;
++	    }
++
+ 	  if (is_overflow_infinity (vr0.min))
+ 	    min = vr0.min;
+ 	  else if (TREE_OVERFLOW (min))
+@@ -2350,7 +2393,7 @@
+   else if (TREE_CODE_CLASS (code) == tcc_comparison)
+     extract_range_from_comparison (vr, expr);
+   else if (is_gimple_min_invariant (expr))
+-    set_value_range (vr, VR_RANGE, expr, expr, NULL);
++    set_value_range_to_value (vr, expr);
+   else
+     set_value_range_to_varying (vr);
+ 
+@@ -4514,6 +4557,17 @@
+ 	      return;
+ 	    }
+ 
++	  /* Check for useless ranges.  */
++	  if (INTEGRAL_TYPE_P (TREE_TYPE (min))
++	      && ((min == TYPE_MIN_VALUE (TREE_TYPE (min))
++		   || is_overflow_infinity (min))
++		  && (max == TYPE_MAX_VALUE (TREE_TYPE (max))
++		      || is_overflow_infinity (max))))
++	    {
++	      set_value_range_to_varying (vr0);
++	      return;
++	    }
++
+ 	  /* The resulting set of equivalences is the intersection of
+ 	     the two sets.  */
+ 	  if (vr0->equiv && vr1->equiv && vr0->equiv != vr1->equiv)
+@@ -4639,6 +4693,12 @@
+ 	    vr_arg = *(get_value_range (arg));
+ 	  else
+ 	    {
++	      if (is_overflow_infinity (arg))
++		{
++		  arg = copy_node (arg);
++		  TREE_OVERFLOW (arg) = 0;
++		}
++
+ 	      vr_arg.type = VR_RANGE;
+ 	      vr_arg.min = arg;
+ 	      vr_arg.max = arg;
 Index: gcc-4_2-branch/gcc/doc/invoke.texi
 ===================================================================
 --- gcc-4_2-branch/gcc/doc/invoke.texi	(revision 123014)
-+++ gcc-4_2-branch/gcc/doc/invoke.texi	(revision 123843)
++++ gcc-4_2-branch/gcc/doc/invoke.texi	(revision 124164)
 @@ -695,9 +695,11 @@
  -mwarn-framesize  -mwarn-dynamicstack  -mstack-size -mstack-guard}
  
@@ -81,7 +213,28 @@
   
  @emph{SH Options}
  @gccoptlist{-m1  -m2  -m2e  -m3  -m3e @gol
-@@ -4673,7 +4675,7 @@
+@@ -2834,7 +2836,7 @@
+ 
+ @item -Wstrict-overflow
+ @item -Wstrict-overflow=@var{n}
+- at opindex -Wstrict-overflow
++ at opindex Wstrict-overflow
+ This option is only active when @option{-fstrict-overflow} is active.
+ It warns about cases where the compiler optimizes based on the
+ assumption that signed overflow does not occur.  Note that it does not
+@@ -2847,7 +2849,10 @@
+ overflow never does, in fact, occur.  Therefore this warning can
+ easily give a false positive: a warning about code which is not
+ actually a problem.  To help focus on important issues, several
+-warning levels are defined.
++warning levels are defined.  No warnings are issued for the use of
++undefined signed overflow when estimating how many iterations a loop
++will require, in particular when determining whether a loop will be
++executed at all.
+ 
+ @table @option
+ @item -Wstrict-overflow=1
+@@ -4673,7 +4678,7 @@
  arithmetic on them.  This produces better code by making all memory
  references potential common subexpressions.  When they are not common
  subexpressions, instruction combination should eliminate the separate
@@ -90,7 +243,65 @@
  
  @item -fforce-addr
  @opindex fforce-addr
-@@ -9759,7 +9761,9 @@
+@@ -5298,7 +5303,7 @@
+ @option{-funroll-loops},
+ 
+ @item -fsplit-ivs-in-unroller
+- at opindex -fsplit-ivs-in-unroller
++ at opindex fsplit-ivs-in-unroller
+ Enables expressing of values of induction variables in later iterations
+ of the unrolled loop using the value in the first iteration.  This breaks
+ long dependency chains, thus improving efficiency of the scheduling passes.
+@@ -5311,7 +5316,7 @@
+ This optimization is enabled by default.
+ 
+ @item -fvariable-expansion-in-unroller
+- at opindex -fvariable-expansion-in-unroller
++ at opindex fvariable-expansion-in-unroller
+ With this option, the compiler will create multiple copies of some
+ local variables when unrolling a loop which can result in superior code.
+ 
+@@ -8161,13 +8166,13 @@
+ @samp{"PrivateHeaders"} or @samp{"Headers"} directory.
+ 
+ @item -gused
+- at opindex -gused
++ at opindex gused
+ Emit debugging information for symbols that are used.  For STABS
+ debugging format, this enables @option{-feliminate-unused-debug-symbols}.
+ This is by default ON at .
+ 
+ @item -gfull
+- at opindex -gfull
++ at opindex gfull
+ Emit debugging information for all symbols and types.
+ 
+ @item -mmacosx-version-min=@var{version}
+@@ -8189,7 +8194,7 @@
+ @option{-mlong-branch} for PowerPC targets.
+ 
+ @item -mone-byte-bool
+- at opindex -mone-byte-bool
++ at opindex mone-byte-bool
+ Override the defaults for @samp{bool} so that @samp{sizeof(bool)==1}.
+ By default @samp{sizeof(bool)} is @samp{4} when compiling for
+ Darwin/PowerPC and @samp{1} when compiling for Darwin/x86, so this
+@@ -8238,12 +8243,12 @@
+ output file being linked.  See man ld(1) for more information.
+ 
+ @item -dynamiclib
+- at opindex -dynamiclib
++ at opindex dynamiclib
+ When passed this option, GCC will produce a dynamic library instead of
+ an executable when linking, using the Darwin @file{libtool} command.
+ 
+ @item -force_cpusubtype_ALL
+- at opindex -force_cpusubtype_ALL
++ at opindex force_cpusubtype_ALL
+ This causes GCC's output file to have the @var{ALL} subtype, instead of
+ one controlled by the @option{-mcpu} or @option{-march} option.
+ 
+@@ -9759,7 +9764,9 @@
  The 32-bit environment sets int, long and pointer to 32 bits and
  generates code that runs on any i386 system.
  The 64-bit environment sets int to 32 bits and long and pointer
@@ -101,27 +312,157 @@
  
  @item -mno-red-zone
  @opindex no-red-zone
-@@ -12273,25 +12277,41 @@
+@@ -9947,8 +9954,8 @@
+ 
+ @item -mno-sched-br-data-spec
+ @itemx -msched-br-data-spec
+- at opindex -mno-sched-br-data-spec
+- at opindex -msched-br-data-spec
++ at opindex mno-sched-br-data-spec
++ at opindex msched-br-data-spec
+ (Dis/En)able data speculative scheduling before reload.
+ This will result in generation of the ld.a instructions and
+ the corresponding check instructions (ld.c / chk.a).
+@@ -9956,8 +9963,8 @@
+ 
+ @item -msched-ar-data-spec
+ @itemx -mno-sched-ar-data-spec
+- at opindex -msched-ar-data-spec
+- at opindex -mno-sched-ar-data-spec
++ at opindex msched-ar-data-spec
++ at opindex mno-sched-ar-data-spec
+ (En/Dis)able data speculative scheduling after reload.
+ This will result in generation of the ld.a instructions and
+ the corresponding check instructions (ld.c / chk.a).
+@@ -9965,8 +9972,8 @@
+ 
+ @item -mno-sched-control-spec
+ @itemx -msched-control-spec
+- at opindex -mno-sched-control-spec
+- at opindex -msched-control-spec
++ at opindex mno-sched-control-spec
++ at opindex msched-control-spec
+ (Dis/En)able control speculative scheduling.  This feature is
+ available only during region scheduling (i.e. before reload).
+ This will result in generation of the ld.s instructions and
+@@ -9975,8 +9982,8 @@
+ 
+ @item -msched-br-in-data-spec
+ @itemx -mno-sched-br-in-data-spec
+- at opindex -msched-br-in-data-spec
+- at opindex -mno-sched-br-in-data-spec
++ at opindex msched-br-in-data-spec
++ at opindex mno-sched-br-in-data-spec
+ (En/Dis)able speculative scheduling of the instructions that
+ are dependent on the data speculative loads before reload.
+ This is effective only with @option{-msched-br-data-spec} enabled.
+@@ -9984,8 +9991,8 @@
+ 
+ @item -msched-ar-in-data-spec
+ @itemx -mno-sched-ar-in-data-spec
+- at opindex -msched-ar-in-data-spec
+- at opindex -mno-sched-ar-in-data-spec
++ at opindex msched-ar-in-data-spec
++ at opindex mno-sched-ar-in-data-spec
+ (En/Dis)able speculative scheduling of the instructions that
+ are dependent on the data speculative loads after reload.
+ This is effective only with @option{-msched-ar-data-spec} enabled.
+@@ -9993,8 +10000,8 @@
+ 
+ @item -msched-in-control-spec
+ @itemx -mno-sched-in-control-spec
+- at opindex -msched-in-control-spec
+- at opindex -mno-sched-in-control-spec
++ at opindex msched-in-control-spec
++ at opindex mno-sched-in-control-spec
+ (En/Dis)able speculative scheduling of the instructions that
+ are dependent on the control speculative loads.
+ This is effective only with @option{-msched-control-spec} enabled.
+@@ -10002,8 +10009,8 @@
+ 
+ @item -msched-ldc
+ @itemx -mno-sched-ldc
+- at opindex -msched-ldc
+- at opindex -mno-sched-ldc
++ at opindex msched-ldc
++ at opindex mno-sched-ldc
+ (En/Dis)able use of simple data speculation checks ld.c .
+ If disabled, only chk.a instructions will be emitted to check
+ data speculative loads.
+@@ -10011,8 +10018,8 @@
+ 
+ @item -mno-sched-control-ldc
+ @itemx -msched-control-ldc
+- at opindex -mno-sched-control-ldc
+- at opindex -msched-control-ldc 
++ at opindex mno-sched-control-ldc
++ at opindex msched-control-ldc 
+ (Dis/En)able use of ld.c instructions to check control speculative loads.
+ If enabled, in case of control speculative load with no speculatively
+ scheduled dependent instructions this load will be emitted as ld.sa and
+@@ -10021,14 +10028,14 @@
+ 
+ @item -mno-sched-spec-verbose
+ @itemx -msched-spec-verbose
+- at opindex -mno-sched-spec-verbose
+- at opindex -msched-spec-verbose
++ at opindex mno-sched-spec-verbose
++ at opindex msched-spec-verbose
+ (Dis/En)able printing of the information about speculative motions.
+ 
+ @item -mno-sched-prefer-non-data-spec-insns
+ @itemx -msched-prefer-non-data-spec-insns
+- at opindex -mno-sched-prefer-non-data-spec-insns
+- at opindex -msched-prefer-non-data-spec-insns
++ at opindex mno-sched-prefer-non-data-spec-insns
++ at opindex msched-prefer-non-data-spec-insns
+ If enabled, data speculative instructions will be chosen for schedule
+ only if there are no other choices at the moment.  This will make
+ the use of the data speculation much more conservative.
+@@ -10036,8 +10043,8 @@
+ 
+ @item -mno-sched-prefer-non-control-spec-insns
+ @itemx -msched-prefer-non-control-spec-insns
+- at opindex -mno-sched-prefer-non-control-spec-insns
+- at opindex -msched-prefer-non-control-spec-insns
++ at opindex mno-sched-prefer-non-control-spec-insns
++ at opindex msched-prefer-non-control-spec-insns
+ If enabled, control speculative instructions will be chosen for schedule
+ only if there are no other choices at the moment.  This will make
+ the use of the control speculation much more conservative.
+@@ -10045,8 +10052,8 @@
+ 
+ @item -mno-sched-count-spec-in-critical-path
+ @itemx -msched-count-spec-in-critical-path
+- at opindex -mno-sched-count-spec-in-critical-path
+- at opindex -msched-count-spec-in-critical-path
++ at opindex mno-sched-count-spec-in-critical-path
++ at opindex msched-count-spec-in-critical-path
+ If enabled, speculative dependencies will be considered during
+ computation of the instructions priorities.  This will make the use of the
+ speculation a bit more conservative.
+@@ -12273,25 +12280,41 @@
  These options are defined for Score implementations:
  
  @table @gcctabopt
-+ at item -meb
-+ at opindex meb
-+Compile code for big endian mode.  This is the default.
-+
- @item -mel
- @opindex -mel
- Compile code for little endian mode. 
- 
-- at item -meb
-- at opindex meb
--Compile code for big endian mode.  This is the default.
+- at item -mel
+- at opindex -mel
+-Compile code for little endian mode. 
+-
+ @item -meb
+ @opindex meb
+ Compile code for big endian mode.  This is the default.
+ 
++ at item -mel
++ at opindex mel
++Compile code for little endian mode. 
++
 + at item -mnhwloop
-+ at opindex -mnhwloop
++ at opindex mnhwloop
 +Disable generate bcnz instruction.
- 
++
 + at item -muls
-+ at opindex -muls
++ at opindex muls
 +Enable generate unaligned load and store instruction.
 +
  @item -mmac
@@ -150,7 +491,7 @@
 Index: gcc-4_2-branch/gcc/doc/md.texi
 ===================================================================
 --- gcc-4_2-branch/gcc/doc/md.texi	(revision 123014)
-+++ gcc-4_2-branch/gcc/doc/md.texi	(revision 123843)
++++ gcc-4_2-branch/gcc/doc/md.texi	(revision 124164)
 @@ -2814,7 +2814,7 @@
  cp1 + cp2 + cp3 registers.
  
@@ -182,14 +523,71 @@
 Index: gcc-4_2-branch/gcc/DATESTAMP
 ===================================================================
 --- gcc-4_2-branch/gcc/DATESTAMP	(revision 123014)
-+++ gcc-4_2-branch/gcc/DATESTAMP	(revision 123843)
++++ gcc-4_2-branch/gcc/DATESTAMP	(revision 124164)
 @@ -1 +1 @@
 -20070317
-+20070415
++20070425
+Index: gcc-4_2-branch/gcc/tree-ssa-loop-ch.c
+===================================================================
+--- gcc-4_2-branch/gcc/tree-ssa-loop-ch.c	(revision 123014)
++++ gcc-4_2-branch/gcc/tree-ssa-loop-ch.c	(revision 124164)
+@@ -1,5 +1,5 @@
+ /* Loop header copying on trees.
+-   Copyright (C) 2004, 2005 Free Software Foundation, Inc.
++   Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+    
+ This file is part of GCC.
+    
+@@ -204,6 +204,27 @@
+ 	  continue;
+ 	}
+ 
++      /* If the loop has the form "for (i = j; i < j + 10; i++)" then
++	 this copying can introduce a case where we rely on undefined
++	 signed overflow to eliminate the preheader condition, because
++	 we assume that "j < j + 10" is true.  We don't want to warn
++	 about that case for -Wstrict-overflow, because in general we
++	 don't warn about overflow involving loops.  Prevent the
++	 warning by setting TREE_NO_WARNING.  */
++      if (warn_strict_overflow > 0)
++	{
++	  unsigned int i;
++
++	  for (i = 0; i < n_bbs; ++i)
++	    {
++	      tree last;
++
++	      last = last_stmt (copied_bbs[i]);
++	      if (TREE_CODE (last) == COND_EXPR)
++		TREE_NO_WARNING (last) = 1;
++	    }
++	}
++
+       /* Ensure that the latch and the preheader is simple (we know that they
+ 	 are not now, since there was the loop exit condition.  */
+       loop_split_edge_with (loop_preheader_edge (loop), NULL);
+Index: gcc-4_2-branch/gcc/reload.c
+===================================================================
+--- gcc-4_2-branch/gcc/reload.c	(revision 123014)
++++ gcc-4_2-branch/gcc/reload.c	(revision 124164)
+@@ -1853,7 +1853,12 @@
+ 		    ||  ! (TEST_HARD_REG_BIT
+ 			   (reg_class_contents[(int) rld[secondary_out].class],
+ 			    REGNO (XEXP (note, 0)))))))
+-	&& ! fixed_regs[REGNO (XEXP (note, 0))])
++	&& ! fixed_regs[REGNO (XEXP (note, 0))]
++	/* Check that we don't use a hardreg for an uninitialized
++	   pseudo.  See also find_dummy_reload().  */
++	&& (ORIGINAL_REGNO (XEXP (note, 0)) < FIRST_PSEUDO_REGISTER
++	    || ! bitmap_bit_p (ENTRY_BLOCK_PTR->il.rtl->global_live_at_end,
++			       ORIGINAL_REGNO (XEXP (note, 0)))))
+       {
+ 	rld[output_reload].reg_rtx
+ 	  = gen_rtx_REG (rld[output_reload].outmode,
 Index: gcc-4_2-branch/gcc/builtins.c
 ===================================================================
 --- gcc-4_2-branch/gcc/builtins.c	(revision 123014)
-+++ gcc-4_2-branch/gcc/builtins.c	(revision 123843)
++++ gcc-4_2-branch/gcc/builtins.c	(revision 124164)
 @@ -5492,14 +5492,19 @@
  			       rtx target, bool ignore)
  {
@@ -270,7 +668,7 @@
 Index: gcc-4_2-branch/gcc/fold-const.c
 ===================================================================
 --- gcc-4_2-branch/gcc/fold-const.c	(revision 123014)
-+++ gcc-4_2-branch/gcc/fold-const.c	(revision 123843)
++++ gcc-4_2-branch/gcc/fold-const.c	(revision 124164)
 @@ -7052,7 +7052,7 @@
  {
    tree type = TREE_TYPE (expr);
@@ -360,10 +758,96 @@
  
        tmp[bitpos / 32] |= (unsigned long)value << (bitpos & 31);
      }
+@@ -7732,7 +7734,7 @@
+ 	    return fold_build1 (BIT_NOT_EXPR, type, fold_convert (type, tem));
+ 	}
+ 
+-      tem = fold_convert_const (code, type, arg0);
++      tem = fold_convert_const (code, type, op0);
+       return tem ? tem : NULL_TREE;
+ 
+     case VIEW_CONVERT_EXPR:
+@@ -11126,13 +11128,13 @@
+ 		  return omit_one_operand (type, integer_zero_node, arg0);
+ 
+ 		case GE_EXPR:
+-		  return fold_build2 (EQ_EXPR, type, arg0, arg1);
++		  return fold_build2 (EQ_EXPR, type, op0, op1);
+ 
+ 		case LE_EXPR:
+ 		  return omit_one_operand (type, integer_one_node, arg0);
+ 
+ 		case LT_EXPR:
+-		  return fold_build2 (NE_EXPR, type, arg0, arg1);
++		  return fold_build2 (NE_EXPR, type, op0, op1);
+ 
+ 		/* The GE_EXPR and LT_EXPR cases above are not normally
+ 		   reached because of previous transformations.  */
+@@ -11147,10 +11149,14 @@
+ 		{
+ 		case GT_EXPR:
+ 		  arg1 = const_binop (PLUS_EXPR, arg1, integer_one_node, 0);
+-		  return fold_build2 (EQ_EXPR, type, arg0, arg1);
++		  return fold_build2 (EQ_EXPR, type,
++				      fold_convert (TREE_TYPE (arg1), arg0),
++				      arg1);
+ 		case LE_EXPR:
+ 		  arg1 = const_binop (PLUS_EXPR, arg1, integer_one_node, 0);
+-		  return fold_build2 (NE_EXPR, type, arg0, arg1);
++		  return fold_build2 (NE_EXPR, type,
++				      fold_convert (TREE_TYPE (arg1), arg0),
++				      arg1);
+ 		default:
+ 		  break;
+ 		}
+@@ -11163,7 +11169,7 @@
<<Diff was trimmed, longer than 597 lines>>

---- CVS-web:
    http://cvs.pld-linux.org/SOURCES/gcc-branch.diff?r1=1.1&r2=1.2&f=u



More information about the pld-cvs-commit mailing list