packages: gcc/gcc-branch.diff - updated

arekm arekm at pld-linux.org
Thu Mar 15 19:24:34 CET 2012


Author: arekm                        Date: Thu Mar 15 18:24:34 2012 GMT
Module: packages                      Tag: HEAD
---- Log message:
- updated

---- Files affected:
packages/gcc:
   gcc-branch.diff (1.59 -> 1.60) 

---- Diffs:

================================================================
Index: packages/gcc/gcc-branch.diff
diff -u packages/gcc/gcc-branch.diff:1.59 packages/gcc/gcc-branch.diff:1.60
--- packages/gcc/gcc-branch.diff:1.59	Thu Mar  1 19:23:52 2012
+++ packages/gcc/gcc-branch.diff	Thu Mar 15 19:24:28 2012
@@ -1,14 +1,140 @@
+Index: gcc/targhooks.c
+===================================================================
+--- gcc/targhooks.c	(.../tags/gcc_4_6_3_release)	(wersja 185440)
++++ gcc/targhooks.c	(.../branches/gcc-4_6-branch)	(wersja 185440)
+@@ -529,6 +529,7 @@
+       case scalar_to_vec:
+       case cond_branch_not_taken:
+       case vec_perm:
++      case vec_promote_demote:
+         return 1;
+ 
+       case unaligned_load:
+Index: gcc/DATESTAMP
+===================================================================
+--- gcc/DATESTAMP	(.../tags/gcc_4_6_3_release)	(wersja 185440)
++++ gcc/DATESTAMP	(.../branches/gcc-4_6-branch)	(wersja 185440)
+@@ -1 +1 @@
+-20120301
++20120315
+Index: gcc/target.h
+===================================================================
+--- gcc/target.h	(.../tags/gcc_4_6_3_release)	(wersja 185440)
++++ gcc/target.h	(.../branches/gcc-4_6-branch)	(wersja 185440)
+@@ -128,7 +128,8 @@
+   scalar_to_vec,
+   cond_branch_not_taken,
+   cond_branch_taken,
+-  vec_perm
++  vec_perm,
++  vec_promote_demote
+ };
+ 
+ /* Sets of optimization levels at which an option may be enabled by
 Index: gcc/DEV-PHASE
 ===================================================================
---- gcc/DEV-PHASE	(.../tags/gcc_4_6_3_release)	(wersja 184753)
-+++ gcc/DEV-PHASE	(.../branches/gcc-4_6-branch)	(wersja 184753)
+--- gcc/DEV-PHASE	(.../tags/gcc_4_6_3_release)	(wersja 185440)
++++ gcc/DEV-PHASE	(.../branches/gcc-4_6-branch)	(wersja 185440)
 @@ -0,0 +1 @@
 +prerelease
 Index: gcc/ChangeLog
 ===================================================================
---- gcc/ChangeLog	(.../tags/gcc_4_6_3_release)	(wersja 184753)
-+++ gcc/ChangeLog	(.../branches/gcc-4_6-branch)	(wersja 184753)
-@@ -1,3 +1,8 @@
+--- gcc/ChangeLog	(.../tags/gcc_4_6_3_release)	(wersja 185440)
++++ gcc/ChangeLog	(.../branches/gcc-4_6-branch)	(wersja 185440)
+@@ -1,3 +1,101 @@
++2012-03-15  Chung-Lin Tang  <cltang at codesourcery.com>
++
++	Backport from mainline
++	2012-03-10  Chung-Lin Tang  <cltang at codesourcery.com>
++
++	PR rtl-optimization/52528
++	* combine.c (can_combine_p): Add setting of subst_low_luid
++	before call to expand_field_assignment().
++
++2012-03-12  John David Anglin  <dave.anglin at nrc-cnrc.gc.ca>
++
++	Backport from mainline
++	2011-09-03  John David Anglin  <dave.anglin at nrc-cnrc.gc.ca>
++
++	PR Bug middle-end/50232
++	* config/pa/pa.md (return): Define "return" insn pattern.
++	(epilogue): Use it when no epilogue is needed.
++	* config/pa/pa.c (pa_can_use_return_insn): New function.
++	* config/pa/pa-protos.h (pa_can_use_return_insn): Declare.
++
++	Backport for mainline
++	2012-01-28  John David Anglin  <dave.anglin at nrc-cnrc.gc.ca>
++
++	PR target/51871
++	* config/pa/pa.c (pa_return_addr_rtx): Add support for PA2.0 export
++	stubs.
++
++2012-03-06  Michael Meissner  <meissner at linux.vnet.ibm.com>
++
++	Backport from mainline
++	PR target/50310
++	* config/rs6000/vector.md (vector_uneq<mode>): Add support for
++	UNEQ, LTGT, ORDERED, and UNORDERED IEEE vector comparisons.
++	(vector_ltgt<mode>): Likewise.
++	(vector_ordered<mode>): Likewise.
++	(vector_unordered<mode>): Likewise.
++	* config/rs6000/rs6000.c (rs6000_emit_vector_compare_inner):
++	Likewise.
++
++2012-03-04  John David Anglin  <dave.anglin at nrc-cnrc.gc.ca>
++
++	Backport from mainline
++	2012-03-01  John David Anglin  <dave.anglin at nrc-cnrc.gc.ca>
++
++	PR target/52408
++	* config/pa/pa.md (zvdep_imm32): Change type of variable x from int to
++	unsigned HOST_WIDE_INT.
++	(zvdep_imm64): Likewise.
++	(vdepi_ior): Change type of variable x from int to HOST_WIDE_INT.
++	(vdepi_and): Likewise.
++	Likewise for unamed 64-bit patterns.
++	* config/pa/predicates.md (lhs_lshift_cint_operand): Update comment.
++
++2012-03-03  Eric Botcazou  <ebotcazou at adacore.com>
++
++	PR target/52425
++	Backport from mainline
++	2011-05-22  Eric Botcazou  <ebotcazou at adacore.com>
++
++	* config/sparc/sparc.c (sparc_delegitimize_address): Handle
++	UNSPEC_MOVE_PIC pattern.
++
++2012-03-02  Peter Bergner  <bergner at vnet.ibm.com>
++
++	Backport from mainline
++	2012-03-02  Peter Bergner  <bergner at vnet.ibm.com>
++
++	* config/rs6000/vsx.md (vsx_set_<mode>): Reorder operands.
++
++2012-03-02  Bill Schmidt <wschmidt at linux.vnet.ibm.com>
++	    Ira Rosen <irar at il.ibm.com>
++
++	PR tree-optimization/50031
++	PR tree-optimization/50969
++	* targhooks.c (default_builtin_vectorization_cost): Handle
++	vec_promote_demote.
++	* target.h (enum vect_cost_for_stmt): Add vec_promote_demote.
++	* tree-vect-loop.c (vect_get_single_scalar_iteraion_cost): Handle
++	all types of reduction and pattern statements.
++	(vect_estimate_min_profitable_iters): Likewise.
++	* tree-vect-stmts.c (vect_model_promotion_demotion_cost): New function.
++	(vect_model_store_cost): Use vec_perm rather than vector_stmt for
++	statement cost.
++	(vect_model_load_cost): Likewise.
++	(vect_get_load_cost): Likewise; add dump logic for explicit realigns.
++	(vectorizable_type_demotion): Call vect_model_promotion_demotion_cost.
++	(vectorizable_type_promotion): Likewise.
++	* config/spu/spu.c (spu_builtin_vectorization_cost): Handle
++	vec_promote_demote.
++	* config/i386/i386.c (ix86_builtin_vectorization_cost): Likewise.
++	* config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Update
++	vec_perm for VSX and handle vec_promote_demote.
++
 +2012-03-01  Jakub Jelinek  <jakub at redhat.com>
 +
 +	* BASE-VER: Set to 4.6.4.
@@ -17,10 +143,1130 @@
  2012-03-01  Release Manager
  
  	* GCC 4.6.3 released.
+Index: gcc/testsuite/gcc.target/powerpc/pr52457.c
+===================================================================
+--- gcc/testsuite/gcc.target/powerpc/pr52457.c	(.../tags/gcc_4_6_3_release)	(wersja 0)
++++ gcc/testsuite/gcc.target/powerpc/pr52457.c	(.../branches/gcc-4_6-branch)	(wersja 185440)
+@@ -0,0 +1,34 @@
++/* { dg-do run { target { powerpc*-*-linux* } } } */
++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
++/* { dg-skip-if "" { powerpc*-*-*spe* } { "*" } { "" } } */
++/* { dg-require-effective-target vsx_hw } */
++/* { dg-options "-O1 -mcpu=power7" } */
++
++extern void abort (void);
++
++typedef long long T;
++typedef T vl_t __attribute__((vector_size(2 * sizeof (T))));
++
++vl_t
++buggy_func (T x)
++{
++  vl_t w;
++  T *p = (T *)&w;
++  p[0] = p[1] = x;
++  return w;
++}
++
++int
++main(void)
++{
++  vl_t rval;
++  T *pl;
++
++  pl = (T *) &rval;
++  rval = buggy_func (2);
++
++  if (pl[0] != 2 || pl[1] != 2)
++    abort ();
++
++  return 0;
++}
+Index: gcc/testsuite/gfortran.dg/intrinsic_8.f90
+===================================================================
+--- gcc/testsuite/gfortran.dg/intrinsic_8.f90	(.../tags/gcc_4_6_3_release)	(wersja 0)
++++ gcc/testsuite/gfortran.dg/intrinsic_8.f90	(.../branches/gcc-4_6-branch)	(wersja 185440)
+@@ -0,0 +1,23 @@
++! { dg-do compile }
++!
++! PR fortran/52452
++!
++! Contributed by Roger Ferrer Ibanez
++!
++PROGRAM test_etime
++    IMPLICIT NONE
++    INTRINSIC :: etime
++    REAL(4) :: tarray(1:2)
++    REAL(4) :: result
++
++    CALL etime(tarray, result)
++END PROGRAM test_etime
++
++subroutine test_etime2
++    IMPLICIT NONE
++    INTRINSIC :: etime
++    REAL(4) :: tarray(1:2)
++    REAL(4) :: result
++
++    result = etime(tarray)
++END subroutine test_etime2
+Index: gcc/testsuite/gfortran.dg/proc_ptr_34.f90
+===================================================================
+--- gcc/testsuite/gfortran.dg/proc_ptr_34.f90	(.../tags/gcc_4_6_3_release)	(wersja 0)
++++ gcc/testsuite/gfortran.dg/proc_ptr_34.f90	(.../branches/gcc-4_6-branch)	(wersja 185440)
+@@ -0,0 +1,79 @@
++! { dg-do compile }
++!
++! PR fortran/52469
++!
++! This was failing as the DECL of the proc pointer "func"
++! was used for the interface of the proc-pointer component "my_f_ptr"
++! rather than the decl of the proc-pointer target
++!
++! Contributed by palott at gmail.com
++!
++
++module ExampleFuncs
++  implicit none
++
++  ! NOTE: "func" is a procedure pointer!
++  pointer :: func
++  interface
++     function func (z)
++        real :: func
++        real, intent (in) :: z
++     end function func
++  end interface
++
++  type Contains_f_ptr
++     procedure (func), pointer, nopass :: my_f_ptr
++  end type Contains_f_ptr
++contains
++
++function f1 (x)
++  real :: f1
++  real, intent (in) :: x
++
++  f1 = 2.0 * x
++
++  return
++end function f1
++
++function f2 (x)
++   real :: f2
++   real, intent (in) :: x
++
++   f2 = 3.0 * x**2
++
++   return
++end function f2
++
++function fancy (func, x)
++   real :: fancy
++   real, intent (in) :: x
++
++   interface AFunc
++      function func (y)
++         real :: func
++         real, intent (in) ::y
++      end function func
++   end interface AFunc
++
++   fancy = func (x) + 3.3 * x
++end function fancy
++
++end module  ExampleFuncs
++
++
++program test_proc_ptr
++  use ExampleFuncs
++  implicit none
++
++  type (Contains_f_ptr), dimension (2) :: NewType
++ 
++  !NewType(1) % my_f_ptr => f1
++  NewType(2) % my_f_ptr => f2
++
++  !write (*, *) NewType(1) % my_f_ptr (3.0), NewType(2) % my_f_ptr (3.0)
++  write (6, *)  NewType(2) % my_f_ptr (3.0) ! < Shall print '27.0'
++
++  stop
++end program test_proc_ptr
++
++! { dg-final { cleanup-modules "examplefuncs" } }
+Index: gcc/testsuite/ChangeLog
+===================================================================
+--- gcc/testsuite/ChangeLog	(.../tags/gcc_4_6_3_release)	(wersja 185440)
++++ gcc/testsuite/ChangeLog	(.../branches/gcc-4_6-branch)	(wersja 185440)
+@@ -1,3 +1,23 @@
++2012-03-10  Tobias Burnus  <burnus at net-b.de>
++
++	PR fortran/52469
++	* gfortran.dg/proc_ptr_34.f90: New.
++
++2012-03-06  Tobias Burnus  <burnus at net-b.de>
++
++	Backport from mainline
++	2012-03-02  Tobias Burnus  <burnus at net-b.de>
++
++	PR fortran/52452
++	* gfortran.dg/intrinsic_8.f90: New.
++
++2012-03-02  Peter Bergner  <bergner at vnet.ibm.com>
++
++	Backport from mainline
++	2012-03-02  Peter Bergner  <bergner at vnet.ibm.com>
++
++	* gcc.target/powerpc/pr52457.c: New test.
++
+ 2012-03-01  Release Manager
+ 
+ 	* GCC 4.6.3 released.
+Index: gcc/fortran/ChangeLog
+===================================================================
+--- gcc/fortran/ChangeLog	(.../tags/gcc_4_6_3_release)	(wersja 185440)
++++ gcc/fortran/ChangeLog	(.../branches/gcc-4_6-branch)	(wersja 185440)
+@@ -1,3 +1,18 @@
++2012-03-10  Tobias Burnus  <burnus at net-b.de>
++
++	PR fortran/52469
++	* trans-types.c (gfc_get_function_type): Handle backend_decl
++	of a procedure pointer.
++
++2012-03-06  Tobias Burnus  <burnus at net-b.de>
++
++	Backport from mainline
++	2012-03-02  Tobias Burnus  <burnus at net-b.de>
++
++	PR fortran/52452
++	* resolve.c (resolve_intrinsic): Don't search for a
++	function if we know that it is a subroutine.
++
+ 2012-03-01  Release Manager
+ 
+ 	* GCC 4.6.3 released.
+Index: gcc/fortran/trans-types.c
+===================================================================
+--- gcc/fortran/trans-types.c	(.../tags/gcc_4_6_3_release)	(wersja 185440)
++++ gcc/fortran/trans-types.c	(.../branches/gcc-4_6-branch)	(wersja 185440)
+@@ -2519,7 +2519,11 @@
+ 	      || sym->attr.flavor == FL_PROGRAM);
+ 
+   if (sym->backend_decl)
+-    return TREE_TYPE (sym->backend_decl);
++    {
++      if (sym->attr.proc_pointer)
++	return TREE_TYPE (TREE_TYPE (sym->backend_decl));
++      return TREE_TYPE (sym->backend_decl);
++    }
+ 
+   alternate_return = 0;
+   typelist = NULL_TREE;
+Index: gcc/fortran/resolve.c
+===================================================================
+--- gcc/fortran/resolve.c	(.../tags/gcc_4_6_3_release)	(wersja 185440)
++++ gcc/fortran/resolve.c	(.../branches/gcc-4_6-branch)	(wersja 185440)
+@@ -1452,7 +1452,7 @@
+ 
+   if (sym->intmod_sym_id)
+     isym = gfc_intrinsic_function_by_id ((gfc_isym_id) sym->intmod_sym_id);
+-  else
++  else if (!sym->attr.subroutine)
+     isym = gfc_find_function (sym->name);
+ 
+   if (isym)
 Index: gcc/BASE-VER
 ===================================================================
---- gcc/BASE-VER	(.../tags/gcc_4_6_3_release)	(wersja 184753)
-+++ gcc/BASE-VER	(.../branches/gcc-4_6-branch)	(wersja 184753)
+--- gcc/BASE-VER	(.../tags/gcc_4_6_3_release)	(wersja 185440)
++++ gcc/BASE-VER	(.../branches/gcc-4_6-branch)	(wersja 185440)
 @@ -1 +1 @@
 -4.6.3
 +4.6.4
+Index: gcc/tree-vect-loop.c
+===================================================================
+--- gcc/tree-vect-loop.c	(.../tags/gcc_4_6_3_release)	(wersja 185440)
++++ gcc/tree-vect-loop.c	(.../branches/gcc-4_6-branch)	(wersja 185440)
+@@ -2104,7 +2104,8 @@
+           if (stmt_info
+               && !STMT_VINFO_RELEVANT_P (stmt_info)
+               && (!STMT_VINFO_LIVE_P (stmt_info)
+-                  || STMT_VINFO_DEF_TYPE (stmt_info) != vect_reduction_def))
++                  || !VECTORIZABLE_CYCLE_DEF (STMT_VINFO_DEF_TYPE (stmt_info)))
++	      && !STMT_VINFO_IN_PATTERN_P (stmt_info))
+             continue;
+ 
+           if (STMT_VINFO_DATA_REF (vinfo_for_stmt (stmt)))
+@@ -2251,11 +2252,19 @@
+ 	{
+ 	  gimple stmt = gsi_stmt (si);
+ 	  stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
++
++	  if (STMT_VINFO_IN_PATTERN_P (stmt_info))
++	    {
++	      stmt = STMT_VINFO_RELATED_STMT (stmt_info);
++	      stmt_info = vinfo_for_stmt (stmt);
++	    }
++
+ 	  /* Skip stmts that are not vectorized inside the loop.  */
+ 	  if (!STMT_VINFO_RELEVANT_P (stmt_info)
+ 	      && (!STMT_VINFO_LIVE_P (stmt_info)
+-		  || STMT_VINFO_DEF_TYPE (stmt_info) != vect_reduction_def))
++		  || !VECTORIZABLE_CYCLE_DEF (STMT_VINFO_DEF_TYPE (stmt_info))))
+ 	    continue;
++
+ 	  vec_inside_cost += STMT_VINFO_INSIDE_OF_LOOP_COST (stmt_info) * factor;
+ 	  /* FIXME: for stmts in the inner-loop in outer-loop vectorization,
+ 	     some of the "outside" costs are generated inside the outer-loop.  */
+Index: gcc/tree-vect-stmts.c
+===================================================================
+--- gcc/tree-vect-stmts.c	(.../tags/gcc_4_6_3_release)	(wersja 185440)
++++ gcc/tree-vect-stmts.c	(.../branches/gcc-4_6-branch)	(wersja 185440)
+@@ -623,6 +623,46 @@
+ }
+ 
+ 
++/* Model cost for type demotion and promotion operations.  PWR is normally
++   zero for single-step promotions and demotions.  It will be one if 
++   two-step promotion/demotion is required, and so on.  Each additional
++   step doubles the number of instructions required.  */
++
++static void
++vect_model_promotion_demotion_cost (stmt_vec_info stmt_info,
++				    enum vect_def_type *dt, int pwr)
++{
++  int i, tmp;
++  int inside_cost = 0, outside_cost = 0, single_stmt_cost;
++
++  /* The SLP costs were already calculated during SLP tree build.  */
++  if (PURE_SLP_STMT (stmt_info))
++    return;
++
++  single_stmt_cost = vect_get_stmt_cost (vec_promote_demote);
++  for (i = 0; i < pwr + 1; i++)
++    {
++      tmp = (STMT_VINFO_TYPE (stmt_info) == type_promotion_vec_info_type) ?
++	(i + 1) : i;
++      inside_cost += vect_pow2 (tmp) * single_stmt_cost;
++    }
++
++  /* FORNOW: Assuming maximum 2 args per stmts.  */
++  for (i = 0; i < 2; i++)
++    {
++      if (dt[i] == vect_constant_def || dt[i] == vect_external_def)
++        outside_cost += vect_get_stmt_cost (vector_stmt);
++    }
++
++  if (vect_print_dump_info (REPORT_COST))
++    fprintf (vect_dump, "vect_model_promotion_demotion_cost: inside_cost = %d, "
++             "outside_cost = %d .", inside_cost, outside_cost);
++
++  /* Set the costs in STMT_INFO.  */
++  stmt_vinfo_set_inside_of_loop_cost (stmt_info, NULL, inside_cost);
++  stmt_vinfo_set_outside_of_loop_cost (stmt_info, NULL, outside_cost);
++}
++
+ /* Function vect_cost_strided_group_size
+ 
+    For strided load or store, return the group_size only if it is the first
+@@ -691,7 +731,7 @@
+     {
+       /* Uses a high and low interleave operation for each needed permute.  */
+       inside_cost = ncopies * exact_log2(group_size) * group_size
+-        * vect_get_stmt_cost (vector_stmt);
++        * vect_get_stmt_cost (vec_perm);
+ 
+       if (vect_print_dump_info (REPORT_COST))
+         fprintf (vect_dump, "vect_model_store_cost: strided group_size = %d .",
+@@ -795,7 +835,7 @@
+     {
+       /* Uses an even and odd extract operations for each needed permute.  */
+       inside_cost = ncopies * exact_log2(group_size) * group_size
+-	* vect_get_stmt_cost (vector_stmt);
++	* vect_get_stmt_cost (vec_perm);
+ 
+       if (vect_print_dump_info (REPORT_COST))
+         fprintf (vect_dump, "vect_model_load_cost: strided group_size = %d .",
+@@ -855,7 +895,7 @@
+     case dr_explicit_realign:
+       {
+         *inside_cost += ncopies * (2 * vect_get_stmt_cost (vector_load)
+-           + vect_get_stmt_cost (vector_stmt));
++				   + vect_get_stmt_cost (vec_perm));
+ 
+         /* FIXME: If the misalignment remains fixed across the iterations of
+            the containing loop, the following cost should be added to the
+@@ -863,6 +903,9 @@
+         if (targetm.vectorize.builtin_mask_for_load)
+           *inside_cost += vect_get_stmt_cost (vector_stmt);
+ 
++        if (vect_print_dump_info (REPORT_COST))
++          fprintf (vect_dump, "vect_model_load_cost: explicit realign");
++
+         break;
+       }
+     case dr_explicit_realign_optimized:
+@@ -886,7 +929,12 @@
+           }
+ 
+         *inside_cost += ncopies * (vect_get_stmt_cost (vector_load)
+-          + vect_get_stmt_cost (vector_stmt));
++				   + vect_get_stmt_cost (vec_perm));
++
++        if (vect_print_dump_info (REPORT_COST))
++          fprintf (vect_dump,
++		   "vect_model_load_cost: explicit realign optimized");
++
+         break;
+       }
+ 
+@@ -2919,7 +2967,7 @@
+       STMT_VINFO_TYPE (stmt_info) = type_demotion_vec_info_type;
+       if (vect_print_dump_info (REPORT_DETAILS))
+         fprintf (vect_dump, "=== vectorizable_demotion ===");
+-      vect_model_simple_cost (stmt_info, ncopies, dt, NULL);
++      vect_model_promotion_demotion_cost (stmt_info, dt, multi_step_cvt);
+       return true;
+     }
+ 
+@@ -3217,7 +3265,7 @@
+       STMT_VINFO_TYPE (stmt_info) = type_promotion_vec_info_type;
+       if (vect_print_dump_info (REPORT_DETAILS))
+         fprintf (vect_dump, "=== vectorizable_promotion ===");
+-      vect_model_simple_cost (stmt_info, 2*ncopies, dt, NULL);
++      vect_model_promotion_demotion_cost (stmt_info, dt, multi_step_cvt);
+       return true;
+     }
+ 
+Index: gcc/combine.c
+===================================================================
+--- gcc/combine.c	(.../tags/gcc_4_6_3_release)	(wersja 185440)
++++ gcc/combine.c	(.../branches/gcc-4_6-branch)	(wersja 185440)
+@@ -1788,6 +1788,10 @@
+   if (set == 0)
+     return 0;
+ 
++  /* The simplification in expand_field_assignment may call back to
++     get_last_value, so set safe guard here.  */
++  subst_low_luid = DF_INSN_LUID (insn);
++
+   set = expand_field_assignment (set);
+   src = SET_SRC (set), dest = SET_DEST (set);
+ 
+Index: gcc/config/spu/spu.c
+===================================================================
+--- gcc/config/spu/spu.c	(.../tags/gcc_4_6_3_release)	(wersja 185440)
++++ gcc/config/spu/spu.c	(.../branches/gcc-4_6-branch)	(wersja 185440)
+@@ -6794,6 +6794,7 @@
+       case scalar_to_vec:
+       case cond_branch_not_taken:
+       case vec_perm:
++      case vec_promote_demote:
+         return 1;
+ 
+       case scalar_store:
+Index: gcc/config/sparc/sparc.c
+===================================================================
+--- gcc/config/sparc/sparc.c	(.../tags/gcc_4_6_3_release)	(wersja 185440)
++++ gcc/config/sparc/sparc.c	(.../branches/gcc-4_6-branch)	(wersja 185440)
+@@ -3658,13 +3658,17 @@
+ {
+   x = delegitimize_mem_from_attrs (x);
+ 
+-  if (GET_CODE (x) == LO_SUM
+-      && GET_CODE (XEXP (x, 1)) == UNSPEC
+-      && XINT (XEXP (x, 1), 1) == UNSPEC_TLSLE)
+-    {
+-      x = XVECEXP (XEXP (x, 1), 0, 0);
+-      gcc_assert (GET_CODE (x) == SYMBOL_REF);
+-    }
++  if (GET_CODE (x) == LO_SUM && GET_CODE (XEXP (x, 1)) == UNSPEC)
++    switch (XINT (XEXP (x, 1), 1))
++      {
++      case UNSPEC_MOVE_PIC:
<<Diff was trimmed, longer than 597 lines>>

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/gcc/gcc-branch.diff?r1=1.59&r2=1.60&f=u



More information about the pld-cvs-commit mailing list