rpms/gcc/devel gcc44-pr39412.patch, NONE, 1.1 gcc44-pr39443.patch, NONE, 1.1 gcc44-pr39454.patch, NONE, 1.1 .cvsignore, 1.260, 1.261 gcc.spec, 1.30, 1.31 sources, 1.263, 1.264

Jakub Jelinek jakub at fedoraproject.org
Fri Mar 13 15:22:56 UTC 2009


Author: jakub

Update of /cvs/pkgs/rpms/gcc/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv6784

Modified Files:
	.cvsignore gcc.spec sources 
Added Files:
	gcc44-pr39412.patch gcc44-pr39443.patch gcc44-pr39454.patch 
Log Message:
4.4.0-0.25

gcc44-pr39412.patch:

--- NEW FILE gcc44-pr39412.patch ---
2009-03-11  Jakub Jelinek  <jakub at redhat.com>

	PR debug/39412
	* dwarf2out.c (gen_inlined_enumeration_type_die,
	gen_inlined_structure_type_die, gen_inlined_union_type_die,
	gen_tagged_type_instantiation_die): Removed.
	(gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
	do nothing.

	* gcc.dg/debug/pr39412.c: New test.

--- gcc/dwarf2out.c.jj	2009-03-09 11:38:55.000000000 +0100
+++ gcc/dwarf2out.c	2009-03-11 11:12:02.000000000 +0100
@@ -5149,9 +5149,6 @@ static void gen_descr_array_type_die (tr
 #if 0
 static void gen_entry_point_die (tree, dw_die_ref);
 #endif
-static void gen_inlined_enumeration_type_die (tree, dw_die_ref);
-static void gen_inlined_structure_type_die (tree, dw_die_ref);
-static void gen_inlined_union_type_die (tree, dw_die_ref);
 static dw_die_ref gen_enumeration_type_die (tree, dw_die_ref);
 static dw_die_ref gen_formal_parameter_die (tree, tree, dw_die_ref);
 static void gen_unspecified_parameters_die (tree, dw_die_ref);
@@ -5172,7 +5169,6 @@ static void gen_struct_or_union_type_die
 static void gen_subroutine_type_die (tree, dw_die_ref);
 static void gen_typedef_die (tree, dw_die_ref);
 static void gen_type_die (tree, dw_die_ref);
-static void gen_tagged_type_instantiation_die (tree, dw_die_ref);
 static void gen_block_die (tree, dw_die_ref, int);
 static void decls_for_scope (tree, dw_die_ref, int);
 static int is_redundant_typedef (const_tree);
@@ -13149,18 +13145,6 @@ retry_incomplete_types (void)
     gen_type_die (VEC_index (tree, incomplete_types, i), comp_unit_die);
 }
 
-/* Generate a DIE to represent an inlined instance of an enumeration type.  */
-
-static void
-gen_inlined_enumeration_type_die (tree type, dw_die_ref context_die)
-{
-  dw_die_ref type_die = new_die (DW_TAG_enumeration_type, context_die, type);
-
-  /* We do not check for TREE_ASM_WRITTEN (type) being set, as the type may
-     be incomplete and such types are not marked.  */
-  add_abstract_origin_attribute (type_die, type);
-}
-
 /* Determine what tag to use for a record type.  */
 
 static enum dwarf_tag
@@ -13185,30 +13169,6 @@ record_type_tag (tree type)
     }
 }
 
-/* Generate a DIE to represent an inlined instance of a structure type.  */
-
-static void
-gen_inlined_structure_type_die (tree type, dw_die_ref context_die)
-{
-  dw_die_ref type_die = new_die (record_type_tag (type), context_die, type);
-
-  /* We do not check for TREE_ASM_WRITTEN (type) being set, as the type may
-     be incomplete and such types are not marked.  */
-  add_abstract_origin_attribute (type_die, type);
-}
-
-/* Generate a DIE to represent an inlined instance of a union type.  */
-
-static void
-gen_inlined_union_type_die (tree type, dw_die_ref context_die)
-{
-  dw_die_ref type_die = new_die (DW_TAG_union_type, context_die, type);
-
-  /* We do not check for TREE_ASM_WRITTEN (type) being set, as the type may
-     be incomplete and such types are not marked.  */
-  add_abstract_origin_attribute (type_die, type);
-}
-
 /* Generate a DIE to represent an enumeration type.  Note that these DIEs
    include all of the information about the enumeration values also. Each
    enumerated type name/value is listed as a child of the enumerated type
@@ -14835,46 +14795,6 @@ gen_type_die (tree type, dw_die_ref cont
   gen_type_die_with_usage (type, context_die, DINFO_USAGE_DIR_USE);
 }
 
-/* Generate a DIE for a tagged type instantiation.  */
-
-static void
-gen_tagged_type_instantiation_die (tree type, dw_die_ref context_die)
-{
-  if (type == NULL_TREE || type == error_mark_node)
-    return;
-
-  /* We are going to output a DIE to represent the unqualified version of
-     this type (i.e. without any const or volatile qualifiers) so make sure
-     that we have the main variant (i.e. the unqualified version) of this
-     type now.  */
-  gcc_assert (type == type_main_variant (type));
-
-  /* Do not check TREE_ASM_WRITTEN (type) as it may not be set if this is
-     an instance of an unresolved type.  */
-
-  switch (TREE_CODE (type))
-    {
-    case ERROR_MARK:
-      break;
-
-    case ENUMERAL_TYPE:
-      gen_inlined_enumeration_type_die (type, context_die);
-      break;
-
-    case RECORD_TYPE:
-      gen_inlined_structure_type_die (type, context_die);
-      break;
-
-    case UNION_TYPE:
-    case QUAL_UNION_TYPE:
-      gen_inlined_union_type_die (type, context_die);
-      break;
-
-    default:
-      gcc_unreachable ();
-    }
-}
-
 /* Generate a DW_TAG_lexical_block DIE followed by DIEs to represent all of the
    things which are local to the given block.  */
 
@@ -15315,14 +15235,14 @@ gen_decl_die (tree decl, tree origin, dw
 	 of some type tag, if the given TYPE_DECL is marked as having been
 	 instantiated from some other (original) TYPE_DECL node (e.g. one which
 	 was generated within the original definition of an inline function) we
-	 have to generate a special (abbreviated) DW_TAG_structure_type,
-	 DW_TAG_union_type, or DW_TAG_enumeration_type DIE here.  */
-      if (TYPE_DECL_IS_STUB (decl) && decl_ultimate_origin (decl) != NULL_TREE
-	  && is_tagged_type (TREE_TYPE (decl)))
-	{
-	  gen_tagged_type_instantiation_die (TREE_TYPE (decl), context_die);
-	  break;
-	}
+	 used to generate a special (abbreviated) DW_TAG_structure_type,
+	 DW_TAG_union_type, or DW_TAG_enumeration_type DIE here.  But nothing
+	 should be actually referencing those DIEs, as variable DIEs with that
+	 type would be emitted already in the abstract origin, so it was always
+	 removed during unused type prunning.  Don't add anything in this
+	 case.  */
+      if (TYPE_DECL_IS_STUB (decl) && decl_ultimate_origin (decl) != NULL_TREE)
+	break;
 
       if (is_redundant_typedef (decl))
 	gen_type_die (TREE_TYPE (decl), context_die);
--- gcc/testsuite/gcc.dg/debug/pr39412.c.jj	2009-03-11 11:14:32.000000000 +0100
+++ gcc/testsuite/gcc.dg/debug/pr39412.c	2009-03-11 11:14:39.000000000 +0100
@@ -0,0 +1,16 @@
+/* PR debug/39412 */
+/* { dg-do compile } */
+
+struct S { int i; };
+
+inline void
+bar (const void *x, unsigned long y)
+{
+  const union { struct S a[y]; } *u = x;
+}
+
+void
+foo (const void *x, unsigned long y)
+{
+  bar (x, y);
+}

gcc44-pr39443.patch:

--- NEW FILE gcc44-pr39443.patch ---
2009-03-12  Jakub Jelinek  <jakub at redhat.com>

	PR middle-end/39443
	* optabs.c (set_user_assembler_libfunc): New function.
	* expr.h (set_user_assembler_libfunc): New prototype.
	* c-common.c: Include libfuncs.h.
	(set_builtin_user_assembler_name): Call set_user_assembler_libfunc
	for memcmp, memset, memcpy, memmove and abort.

	* gcc.dg/pr39443.c: New test.

--- gcc/optabs.c.jj	2008-11-18 19:24:09.000000000 +0100
+++ gcc/optabs.c	2009-03-12 16:16:56.000000000 +0100
@@ -6072,6 +6072,24 @@ init_one_libfunc (const char *name)
   return XEXP (DECL_RTL (decl), 0);
 }
 
+/* Adjust the assembler name of libfunc NAME to ASMSPEC.  */
+
+rtx
+set_user_assembler_libfunc (const char *name, const char *asmspec)
+{
+  tree id, decl;
+  void **slot;
+  hashval_t hash;
+
+  id = get_identifier (name);
+  hash = htab_hash_string (name);
+  slot = htab_find_slot_with_hash (libfunc_decls, id, hash, INSERT);
+  decl = (tree) *slot;
+  gcc_assert (decl);
+  set_user_assembler_name (decl, asmspec);
+  return XEXP (DECL_RTL (decl), 0);
+}
+
 /* Call this to reset the function entry for one optab (OPTABLE) in mode
    MODE to NAME, which should be either 0 or a string constant.  */
 void
--- gcc/expr.h.jj	2009-02-20 15:33:46.000000000 +0100
+++ gcc/expr.h	2009-03-12 16:17:41.000000000 +0100
@@ -1,6 +1,6 @@
 /* Definitions for code generation pass of GNU compiler.
    Copyright (C) 1987, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
    Free Software Foundation, Inc.
 
 This file is part of GCC.
@@ -786,6 +786,7 @@ extern void init_all_optabs (void);
 
 /* Call this to initialize an optab function entry.  */
 extern rtx init_one_libfunc (const char *);
+extern rtx set_user_assembler_libfunc (const char *, const char *);
 
 extern int vector_mode_valid_p (enum machine_mode);
 
--- gcc/c-common.c.jj	2009-03-02 09:45:47.000000000 +0100
+++ gcc/c-common.c	2009-03-12 16:20:37.000000000 +0100
@@ -51,6 +51,7 @@ along with GCC; see the file COPYING3.  
 #include "target-def.h"
 #include "gimple.h"
 #include "fixed-value.h"
+#include "libfuncs.h"
 
 cpp_reader *parse_in;		/* Declared in c-pragma.h.  */
 
@@ -4401,10 +4402,28 @@ set_builtin_user_assembler_name (tree de
 
   builtin = built_in_decls [DECL_FUNCTION_CODE (decl)];
   set_user_assembler_name (builtin, asmspec);
-  if (DECL_FUNCTION_CODE (decl) == BUILT_IN_MEMCPY)
-    init_block_move_fn (asmspec);
-  else if (DECL_FUNCTION_CODE (decl) == BUILT_IN_MEMSET)
-    init_block_clear_fn (asmspec);
+  switch (DECL_FUNCTION_CODE (decl))
+    {
+    case BUILT_IN_MEMCPY:
+      init_block_move_fn (asmspec);
+      memcpy_libfunc = set_user_assembler_libfunc ("memcpy", asmspec);
+      break;
+    case BUILT_IN_MEMSET:
+      init_block_clear_fn (asmspec);
+      memset_libfunc = set_user_assembler_libfunc ("memset", asmspec);
+      break;
+    case BUILT_IN_MEMMOVE:
+      memmove_libfunc = set_user_assembler_libfunc ("memmove", asmspec);
+      break;
+    case BUILT_IN_MEMCMP:
+      memcmp_libfunc = set_user_assembler_libfunc ("memcmp", asmspec);
+      break;
+    case BUILT_IN_ABORT:
+      abort_libfunc = set_user_assembler_libfunc ("abort", asmspec);
+      break;
+    default:
+      break;
+    }
 }
 
 /* The number of named compound-literals generated thus far.  */
--- gcc/Makefile.in.jj	2009-02-20 15:49:01.000000000 +0100
+++ gcc/Makefile.in	2009-03-12 16:42:47.000000000 +0100
@@ -1890,7 +1890,7 @@ c-common.o : c-common.c $(CONFIG_H) $(SY
 	$(TARGET_H) $(C_TREE_H) tree-iterator.h langhooks.h tree-mudflap.h \
 	intl.h opts.h $(REAL_H) $(CPPLIB_H) $(TREE_INLINE_H) $(HASHTAB_H) \
 	$(BUILTINS_DEF) $(CGRAPH_H) $(BASIC_BLOCK_H) $(TARGET_DEF_H) \
-	$(GIMPLE_H)
+	$(GIMPLE_H) libfuncs.h
 
 c-pretty-print.o : c-pretty-print.c $(C_PRETTY_PRINT_H) \
 	$(C_TREE_H) $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(REAL_H) \
--- gcc/testsuite/gcc.dg/pr39443.c.jj	2009-03-12 16:33:41.000000000 +0100
+++ gcc/testsuite/gcc.dg/pr39443.c	2009-03-12 16:33:22.000000000 +0100
@@ -0,0 +1,18 @@
+/* PR middle-end/39443 */
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+/* { dg-final { scan-assembler-not "memcmp" } } */
+
+typedef __SIZE_TYPE__ size_t;
+
+extern int memcmp (const void *s1, const void *s2, size_t n)
+  __attribute__ ((__nothrow__, __pure__));
+extern __typeof (memcmp) memcmp __asm__ ("memory_compare");
+
+int
+test (char *s, char *t, int cnt)
+{
+  if (__builtin_expect (cnt, 0))
+    return memcmp (s, t, cnt);
+  return 0;
+}

gcc44-pr39454.patch:

--- NEW FILE gcc44-pr39454.patch ---
2009-03-13  Jakub Jelinek  <jakub at redhat.com>

	PR bootstrap/39454
	* cse.c (fold_rtx): Don't modify original const_arg1 when
	canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
	separate variable instead.
	* rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
	from out of range shift counts.
	(num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.

--- gcc/cse.c.jj	2009-03-06 20:29:07.000000000 +0100
+++ gcc/cse.c	2009-03-13 11:44:11.000000000 +0100
@@ -3464,6 +3464,7 @@ fold_rtx (rtx x, rtx insn)
 	      int is_shift
 		= (code == ASHIFT || code == ASHIFTRT || code == LSHIFTRT);
 	      rtx y, inner_const, new_const;
+	      rtx canon_const_arg1 = const_arg1;
 	      enum rtx_code associate_code;
 
 	      if (is_shift
@@ -3471,8 +3472,9 @@ fold_rtx (rtx x, rtx insn)
 		      || INTVAL (const_arg1) < 0))
 		{
 		  if (SHIFT_COUNT_TRUNCATED)
-		    const_arg1 = GEN_INT (INTVAL (const_arg1)
-					  & (GET_MODE_BITSIZE (mode) - 1));
+		    canon_const_arg1 = GEN_INT (INTVAL (const_arg1)
+						& (GET_MODE_BITSIZE (mode)
+						   - 1));
 		  else
 		    break;
 		}
@@ -3531,7 +3533,8 @@ fold_rtx (rtx x, rtx insn)
 	      associate_code = (is_shift || code == MINUS ? PLUS : code);
 
 	      new_const = simplify_binary_operation (associate_code, mode,
-						     const_arg1, inner_const);
+						     canon_const_arg1,
+						     inner_const);
 
 	      if (new_const == 0)
 		break;
--- gcc/rtlanal.c.jj	2009-02-20 15:55:28.000000000 +0100
+++ gcc/rtlanal.c	2009-03-13 13:30:55.000000000 +0100
@@ -4061,7 +4061,8 @@ nonzero_bits1 (const_rtx x, enum machine
 	 low-order bits by left shifts.  */
       if (GET_CODE (XEXP (x, 1)) == CONST_INT
 	  && INTVAL (XEXP (x, 1)) >= 0
-	  && INTVAL (XEXP (x, 1)) < HOST_BITS_PER_WIDE_INT)
+	  && INTVAL (XEXP (x, 1)) < HOST_BITS_PER_WIDE_INT
+	  && INTVAL (XEXP (x, 1)) < GET_MODE_BITSIZE (GET_MODE (x)))
 	{
 	  enum machine_mode inner_mode = GET_MODE (x);
 	  unsigned int width = GET_MODE_BITSIZE (inner_mode);
@@ -4542,7 +4543,8 @@ num_sign_bit_copies1 (const_rtx x, enum 
       num0 = cached_num_sign_bit_copies (XEXP (x, 0), mode,
 					 known_x, known_mode, known_ret);
       if (GET_CODE (XEXP (x, 1)) == CONST_INT
-	  && INTVAL (XEXP (x, 1)) > 0)
+	  && INTVAL (XEXP (x, 1)) > 0
+	  && INTVAL (XEXP (x, 1)) < GET_MODE_BITSIZE (GET_MODE (x)))
 	num0 = MIN ((int) bitwidth, num0 + INTVAL (XEXP (x, 1)));
 
       return num0;
@@ -4551,7 +4553,8 @@ num_sign_bit_copies1 (const_rtx x, enum 
       /* Left shifts destroy copies.  */
       if (GET_CODE (XEXP (x, 1)) != CONST_INT
 	  || INTVAL (XEXP (x, 1)) < 0
-	  || INTVAL (XEXP (x, 1)) >= (int) bitwidth)
+	  || INTVAL (XEXP (x, 1)) >= (int) bitwidth
+	  || INTVAL (XEXP (x, 1)) >= GET_MODE_BITSIZE (GET_MODE (x)))
 	return 1;
 
       num0 = cached_num_sign_bit_copies (XEXP (x, 0), mode,


Index: .cvsignore
===================================================================
RCS file: /cvs/pkgs/rpms/gcc/devel/.cvsignore,v
retrieving revision 1.260
retrieving revision 1.261
diff -u -r1.260 -r1.261
--- .cvsignore	10 Mar 2009 11:23:07 -0000	1.260
+++ .cvsignore	13 Mar 2009 15:22:24 -0000	1.261
@@ -1,2 +1,2 @@
 fastjar-0.97.tar.gz
-gcc-4.4.0-20090310.tar.bz2
+gcc-4.4.0-20090313.tar.bz2


Index: gcc.spec
===================================================================
RCS file: /cvs/pkgs/rpms/gcc/devel/gcc.spec,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- gcc.spec	12 Mar 2009 14:51:57 -0000	1.30
+++ gcc.spec	13 Mar 2009 15:22:24 -0000	1.31
@@ -1,9 +1,9 @@
-%define DATE 20090310
-%define SVNREV 144741
+%define DATE 20090313
+%define SVNREV 144837
 %define gcc_version 4.4.0
 # Note, gcc_release must be integer, if you want to add suffixes to
 # %{release}, append them after %{gcc_release} on Release: line.
-%define gcc_release 0.24
+%define gcc_release 0.25
 %define _unpackaged_files_terminate_build 0
 %define multilib_64_archs sparc64 ppc64 s390x x86_64
 %define include_gappletviewer 1
@@ -152,6 +152,9 @@
 Patch24: gcc44-atom.patch
 Patch25: gcc44-pr39226.patch
 Patch26: gcc44-power7.patch
+Patch27: gcc44-pr39412.patch
+Patch28: gcc44-pr39443.patch
+Patch29: gcc44-pr39454.patch
 
 Patch1000: fastjar-0.97-segfault.patch
 
@@ -441,6 +444,9 @@
 %patch24 -p0 -b .atom~
 %patch25 -p0 -b .pr39226~
 %patch26 -p0 -b .power7~
+%patch27 -p0 -b .pr39412~
+%patch28 -p0 -b .pr39443~
+%patch29 -p0 -b .pr39454~
 
 # This testcase doesn't compile.
 rm libjava/testsuite/libjava.lang/PR35020*
@@ -631,11 +637,7 @@
 %endif
 
 #GCJFLAGS="$OPT_FLAGS" make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" bootstrap
-%ifarch sparcv9
-GCJFLAGS="$OPT_FLAGS" make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" bootstrap
-%else
 GCJFLAGS="$OPT_FLAGS" make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" profiledbootstrap
-%endif
 
 # run the tests.
 make %{?_smp_mflags} -k check ALT_CC_UNDER_TEST=gcc ALT_CXX_UNDER_TEST=g++ RUNTESTFLAGS="--target_board=unix/'{,-fstack-protector}'" || :
@@ -1755,10 +1757,18 @@
 %doc rpm.doc/changelogs/libmudflap/ChangeLog*
 
 %changelog
+* Fri Mar 13 2009 Jakub Jelinek <jakub at redhat.com> 4.4.0-0.25
+- update from trunk
+  - PRs debug/39086, debug/39432, libobjc/27466, middle-end/37850,
+	target/39137, target/39181, target/39431, target/39445, target/5362,
+	testsuite/39451, tree-optimization/39422
+- fix ICE in gen_tagged_type_instantiation_die (#489308, PR debug/39412)
+- fix memcmp builtin asm redirection (PR middle-end/39443)
+- fix sparcv9 profiledbootstrap (PR bootstrap/39454)
+
 * Thu Mar 12 2009 Dennis Gilmore <dennis at ausil.us> 
-- don't build cloog support on sparc arches
-- missing some deps still
-- build sparcv9  with bootstrap not profiledbootstrap
+- don't build with graphite support on sparc arches
+  - still missing some deps
 
 * Tue Mar 10 2009 Jakub Jelinek <jakub at redhat.com> 4.4.0-0.24
 - update from trunk


Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/gcc/devel/sources,v
retrieving revision 1.263
retrieving revision 1.264
diff -u -r1.263 -r1.264
--- sources	10 Mar 2009 11:23:08 -0000	1.263
+++ sources	13 Mar 2009 15:22:25 -0000	1.264
@@ -1,2 +1,2 @@
 2659f09c2e43ef8b7d4406321753f1b2  fastjar-0.97.tar.gz
-f6c306d03c8512974488b21eee60a438  gcc-4.4.0-20090310.tar.bz2
+6dca5ece6628cb31123bf1fba7b1cd1e  gcc-4.4.0-20090313.tar.bz2




More information about the fedora-extras-commits mailing list