4.9.1-7
This commit is contained in:
		
							parent
							
								
									af3b5a8175
								
							
						
					
					
						commit
						d048d4b08d
					
				
							
								
								
									
										10
									
								
								gcc.spec
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								gcc.spec
									
									
									
									
									
								
							| @ -3,7 +3,7 @@ | ||||
| %global gcc_version 4.9.1 | ||||
| # Note, gcc_release must be integer, if you want to add suffixes to | ||||
| # %{release}, append them after %{gcc_release} on Release: line. | ||||
| %global gcc_release 6 | ||||
| %global gcc_release 7 | ||||
| %global _unpackaged_files_terminate_build 0 | ||||
| %global _performance_build 1 | ||||
| %global multilib_64_archs sparc64 ppc64 ppc64p7 s390x x86_64 | ||||
| @ -200,6 +200,8 @@ Patch17: gcc49-aarch64-async-unw-tables.patch | ||||
| Patch18: gcc49-aarch64-unwind-opt.patch | ||||
| Patch19: gcc49-pr62098.patch | ||||
| Patch20: gcc49-pr62103.patch | ||||
| Patch21: gcc49-pr62025.patch | ||||
| Patch22: gcc49-pr62073.patch | ||||
| 
 | ||||
| Patch1100: cloog-%{cloog_version}-ppc64le-config.patch | ||||
| 
 | ||||
| @ -730,6 +732,8 @@ rm -f libgo/go/crypto/elliptic/p224{,_test}.go | ||||
| %patch18 -p0 -b .aarch64-unwind-opt~ | ||||
| %patch19 -p0 -b .pr62098~ | ||||
| %patch20 -p0 -b .pr62103~ | ||||
| %patch21 -p0 -b .pr62025~ | ||||
| %patch22 -p0 -b .pr62073~ | ||||
| 
 | ||||
| %if 0%{?_enable_debug_packages} | ||||
| cat > split-debuginfo.sh <<\EOF | ||||
| @ -2802,6 +2806,10 @@ fi | ||||
| %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/plugin | ||||
| 
 | ||||
| %changelog | ||||
| * Thu Aug 14 2014 Jakub Jelinek <jakub@redhat.com> 4.9.1-7 | ||||
| - fix up scheduler deps handling fix (PR target/62025) | ||||
| - vectorization fix (PR tree-optimization/62073) | ||||
| 
 | ||||
| * Wed Aug 13 2014 Jakub Jelinek <jakub@redhat.com> 4.9.1-6 | ||||
| - update from the 4.9 branch | ||||
|   - PRs c++/58714, c++/60872, c++/61959, c++/61994, fortran/61999, | ||||
|  | ||||
							
								
								
									
										94
									
								
								gcc49-pr62025.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										94
									
								
								gcc49-pr62025.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,94 @@ | ||||
| 2014-08-14  Jakub Jelinek  <jakub@redhat.com> | ||||
| 
 | ||||
| 	PR target/62025 | ||||
| 	* sched-deps.c (find_inc): Limit the test for inc_insn defs | ||||
| 	vs. mem_insn uses to !backwards case only.  Give up also if | ||||
| 	any mem_insn def is used by inc_insn or if non-clobber | ||||
| 	mem_insn def in backwards case is clobbered by inc_insn. | ||||
| 
 | ||||
| --- gcc/sched-deps.c.jj	2014-08-12 17:06:26.000000000 +0200
 | ||||
| +++ gcc/sched-deps.c	2014-08-14 00:09:38.000000000 +0200
 | ||||
| @@ -4746,23 +4746,70 @@ find_inc (struct mem_inc_info *mii, bool
 | ||||
|  			     "inc conflicts with store failure.\n"); | ||||
|  		  goto next; | ||||
|  		} | ||||
| +	      else
 | ||||
| +		{
 | ||||
| +		  df_ref *use_rec, *def2_rec;
 | ||||
| +		  for (use_rec = DF_INSN_USES (mii->inc_insn);
 | ||||
| +		       *use_rec; use_rec++)
 | ||||
| +		    {
 | ||||
| +		      df_ref use = *use_rec;
 | ||||
| +		      if (reg_overlap_mentioned_p (DF_REF_REG (def),
 | ||||
| +						   DF_REF_REG (use)))
 | ||||
| +			{
 | ||||
| +			  if (sched_verbose >= 5)
 | ||||
| +			    fprintf (sched_dump,
 | ||||
| +				     "mem def conflict with inc use "
 | ||||
| +				     "failure.\n");
 | ||||
| +			  goto next;
 | ||||
| +			}
 | ||||
| +		    }
 | ||||
| +		  /* If both inc_insn and mem_insn clobber the same register,
 | ||||
| +		     it is fine, but avoid the case where mem_insn e.g.
 | ||||
| +		     sets CC and originally earlier inc_insn clobbers it.  */
 | ||||
| +		  if ((DF_REF_FLAGS (def) & DF_REF_MUST_CLOBBER) == 0
 | ||||
| +		      && backwards)
 | ||||
| +		    for (def2_rec = DF_INSN_DEFS (mii->inc_insn);
 | ||||
| +			 *def2_rec; def2_rec++)
 | ||||
| +		      {
 | ||||
| +			df_ref def2 = *def2_rec;
 | ||||
| +			if (reg_overlap_mentioned_p (DF_REF_REG (def),
 | ||||
| +						     DF_REF_REG (def2)))
 | ||||
| +			  {
 | ||||
| +			    if (sched_verbose >= 5)
 | ||||
| +			      fprintf (sched_dump,
 | ||||
| +				       "mem def conflict with inc def "
 | ||||
| +				       "failure.\n");
 | ||||
| +			    goto next;
 | ||||
| +			  }
 | ||||
| +		      }
 | ||||
| +		}
 | ||||
|  	    } | ||||
|   | ||||
|  	  /* The inc instruction could have clobbers, make sure those | ||||
| -	     registers are not used in mem insn.  */
 | ||||
| -	  for (def_rec = DF_INSN_DEFS (mii->inc_insn); *def_rec; def_rec++)
 | ||||
| -	    if (!reg_overlap_mentioned_p (DF_REF_REG (*def_rec), mii->mem_reg0))
 | ||||
| +	     registers are not used in mem insn, if mem_insn is originally
 | ||||
| +	     earlier than inc_insn.  */
 | ||||
| +	  if (!backwards)
 | ||||
| +	    for (def_rec = DF_INSN_DEFS (mii->inc_insn); *def_rec; def_rec++)
 | ||||
|  	      { | ||||
| -		df_ref *use_rec;
 | ||||
| -		for (use_rec = DF_INSN_USES (mii->mem_insn); *use_rec; use_rec++)
 | ||||
| -		  if (reg_overlap_mentioned_p (DF_REF_REG (*def_rec),
 | ||||
| -					       DF_REF_REG (*use_rec)))
 | ||||
| -		    {
 | ||||
| -		      if (sched_verbose >= 5)
 | ||||
| -			fprintf (sched_dump,
 | ||||
| -				 "inc clobber used in store failure.\n");
 | ||||
| -		      goto next;
 | ||||
| -		    }
 | ||||
| +		df_ref def = *def_rec;
 | ||||
| +		if (!reg_overlap_mentioned_p (DF_REF_REG (def), mii->mem_reg0))
 | ||||
| +		  {
 | ||||
| +		    df_ref *use_rec;
 | ||||
| +		    for (use_rec = DF_INSN_USES (mii->mem_insn);
 | ||||
| +			 *use_rec; use_rec++)
 | ||||
| +		      {
 | ||||
| +			df_ref use = *use_rec;
 | ||||
| +			if (reg_overlap_mentioned_p (DF_REF_REG (def),
 | ||||
| +						     DF_REF_REG (use)))
 | ||||
| +			  {
 | ||||
| +			    if (sched_verbose >= 5)
 | ||||
| +			      fprintf (sched_dump,
 | ||||
| +				       "inc def conflict with mem use "
 | ||||
| +				       "failure.\n");
 | ||||
| +			    goto next;
 | ||||
| +			  }
 | ||||
| +		      }
 | ||||
| +		  }
 | ||||
|  	      } | ||||
|   | ||||
|  	  newaddr = mii->inc_input; | ||||
							
								
								
									
										63
									
								
								gcc49-pr62073.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								gcc49-pr62073.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,63 @@ | ||||
| 2014-08-12  Felix Yang  <fei.yang0953@gmail.com> | ||||
| 
 | ||||
| 	PR tree-optimization/62073 | ||||
| 	* tree-vect-loop.c (vect_is_simple_reduction_1): Check that DEF1 has | ||||
| 	a basic block. | ||||
| 
 | ||||
| 	* gcc.dg/vect/pr62073.c: New test. | ||||
| 
 | ||||
| --- gcc/tree-vect-loop.c	(revision 213900)
 | ||||
| +++ gcc/tree-vect-loop.c	(revision 213901)
 | ||||
| @@ -2321,7 +2321,8 @@ vect_is_simple_reduction_1 (loop_vec_inf
 | ||||
|          } | ||||
|   | ||||
|        def1 = SSA_NAME_DEF_STMT (op1); | ||||
| -      if (flow_bb_inside_loop_p (loop, gimple_bb (def_stmt))
 | ||||
| +      if (gimple_bb (def1)
 | ||||
| +	  && flow_bb_inside_loop_p (loop, gimple_bb (def_stmt))
 | ||||
|            && loop->inner | ||||
|            && flow_bb_inside_loop_p (loop->inner, gimple_bb (def1)) | ||||
|            && is_gimple_assign (def1)) | ||||
| --- gcc/testsuite/gcc.dg/vect/pr62073.c	(revision 0)
 | ||||
| +++ gcc/testsuite/gcc.dg/vect/pr62073.c	(revision 213901)
 | ||||
| @@ -0,0 +1,40 @@
 | ||||
| +/* { dg-do compile } */
 | ||||
| +/* { dg-additional-options "-O1" } */
 | ||||
| +
 | ||||
| +struct S0
 | ||||
| +{
 | ||||
| +  int f7;
 | ||||
| +};
 | ||||
| +struct S0 g_50;
 | ||||
| +int g_70;
 | ||||
| +int g_76;
 | ||||
| +
 | ||||
| +int foo (long long p_56, int * p_57)
 | ||||
| +{
 | ||||
| +  int *l_77;
 | ||||
| +  int l_101;
 | ||||
| +
 | ||||
| +  for (; g_70;)
 | ||||
| +    {
 | ||||
| +      int **l_78 = &l_77;
 | ||||
| +      if (g_50.f7)
 | ||||
| +	continue;
 | ||||
| +      *l_78 = 0;
 | ||||
| +    }
 | ||||
| +  for (g_76 = 1; g_76 >= 0; g_76--)
 | ||||
| +    {
 | ||||
| +      int *l_90;
 | ||||
| +      for (l_101 = 4; l_101 >= 0; l_101--)
 | ||||
| +	if (l_101)
 | ||||
| +	  *l_90 = 0;
 | ||||
| +	else
 | ||||
| +	  {
 | ||||
| +	    int **l_113 = &l_77;
 | ||||
| +	    *l_113 = p_57;
 | ||||
| +	  }
 | ||||
| +    }
 | ||||
| +
 | ||||
| +  return *l_77;
 | ||||
| +}
 | ||||
| +
 | ||||
| +/* { dg-final { cleanup-tree-dump "vect" } } */
 | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user