public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/gcc] rhel-f41-base: 4.4.0-0.28
@ 2026-06-29 12:24 Jakub Jelinek
  0 siblings, 0 replies; only message in thread
From: Jakub Jelinek @ 2026-06-29 12:24 UTC (permalink / raw)
  To: git-commits

A new commit has been pushed.

Repo   : rpms/gcc
Branch : rhel-f41-base
Commit : 9ecc1a3a56d3cfe8691f660e1a3623d6640dd37f
Author : Jakub Jelinek <jakub@fedoraproject.org>
Date   : 2009-03-19T16:53:24+00:00
Stats  : +429/-9 in 7 file(s)
URL    : https://src.fedoraproject.org/rpms/gcc/c/9ecc1a3a56d3cfe8691f660e1a3623d6640dd37f?branch=rhel-f41-base

Log:
4.4.0-0.28

---
diff --git a/.cvsignore b/.cvsignore
index c4b0c0b..86a08f7 100644
--- a/.cvsignore
+++ b/.cvsignore
@@ -1,2 +1,2 @@
 fastjar-0.97.tar.gz
-gcc-4.4.0-20090317.tar.bz2
+gcc-4.4.0-20090319.tar.bz2

diff --git a/gcc.spec b/gcc.spec
index 23512d7..f550a1d 100644
--- a/gcc.spec
+++ b/gcc.spec
@@ -1,9 +1,9 @@
-%define DATE 20090317
-%define SVNREV 144916
+%define DATE 20090319
+%define SVNREV 144967
 %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.27
+%define gcc_release 0.28
 %define _unpackaged_files_terminate_build 0
 %define multilib_64_archs sparc64 ppc64 s390x x86_64
 %define include_gappletviewer 1
@@ -47,7 +47,7 @@ License: GPLv3+ and GPLv2+ with exceptions
 Group: Development/Languages
 # The source for this package was pulled from upstream's vcs.  Use the
 # following commands to generate the tarball:
-# svn export svn://gcc.gnu.org/svn/gcc/branches/redhat/gcc-4_3-branch@%{SVNREV} gcc-%{version}-%{DATE}
+# svn export svn://gcc.gnu.org/svn/gcc/branches/redhat/gcc-4_4-branch@%{SVNREV} gcc-%{version}-%{DATE}
 # tar cf - gcc-%{version}-%{DATE} | bzip2 -9 > gcc-%{version}-%{DATE}.tar.bz2
 Source0: gcc-%{version}-%{DATE}.tar.bz2
 Source1: libgcc_post_upgrade.c
@@ -153,6 +153,9 @@ Patch24: gcc44-atom.patch
 Patch25: gcc44-pr39226.patch
 Patch26: gcc44-power7.patch
 Patch27: gcc44-power7-2.patch
+Patch28: gcc44-pr38757.patch
+Patch29: gcc44-pr37959.patch
+Patch30: gcc44-memmove-opt.patch
 
 Patch1000: fastjar-0.97-segfault.patch
 
@@ -443,6 +446,9 @@ which are required to compile with the GNAT.
 %patch25 -p0 -b .pr39226~
 %patch26 -p0 -b .power7~
 %patch27 -p0 -b .power7-2~
+%patch28 -p0 -b .pr38757~
+%patch29 -p0 -b .pr37959~
+%patch30 -p0 -b .memmove-opt~
 
 # This testcase doesn't compile.
 rm libjava/testsuite/libjava.lang/PR35020*
@@ -1753,6 +1759,17 @@ fi
 %doc rpm.doc/changelogs/libmudflap/ChangeLog*
 
 %changelog
+* Thu Mar 19 2009 Jakub Jelinek <jakub@redhat.com> 4.4.0-0.28
+- update from trunk
+  - PRs c++/39425, c++/39475, c/39495, debug/39485, middle-end/37805,
+	middle-end/38609, middle-end/39378, middle-end/39447,
+	middle-end/39500, target/35180, target/39063, target/39496
+  - fix RA bug with global reg variables (#490509)
+- use DW_LANG_C99 for -std=c99 or -std=gnu99 compiled C code (PR debug/38757)
+- emit DW_AT_explicit when needed (PR debug/37959)
+- optimize memmove into memcpy in more cases when we can prove src and dest
+  don't overlap
+
 * Tue Mar 17 2009 Jakub Jelinek <jakub@redhat.com> 4.4.0-0.27
 - update from trunk
   - PRs debug/37890, debug/39471, debug/39474, libstdc++/39405, target/34299,

diff --git a/gcc44-c++-builtin-redecl.patch b/gcc44-c++-builtin-redecl.patch
index 77655ad..1f36f1f 100644
--- a/gcc44-c++-builtin-redecl.patch
+++ b/gcc44-c++-builtin-redecl.patch
@@ -9,7 +9,7 @@
 
 --- gcc/cp/decl.c.jj	2007-10-01 22:11:09.000000000 +0200
 +++ gcc/cp/decl.c	2007-10-02 11:39:46.000000000 +0200
-@@ -1988,23 +1988,21 @@ duplicate_decls (tree newdecl, tree oldd
+@@ -2001,23 +2001,21 @@ duplicate_decls (tree newdecl, tree oldd
  	  DECL_ARGUMENTS (olddecl) = DECL_ARGUMENTS (newdecl);
  	  DECL_RESULT (olddecl) = DECL_RESULT (newdecl);
  	}
@@ -40,8 +40,8 @@
 -	    }
 -
  	  DECL_RESULT (newdecl) = DECL_RESULT (olddecl);
- 	  /* Don't clear out the arguments if we're redefining a function.  */
- 	  if (DECL_ARGUMENTS (olddecl))
+ 	  /* Don't clear out the arguments if we're just redeclaring a
+ 	     function.  */
 --- gcc/testsuite/gcc.dg/builtins-65.c.jj	2007-10-02 11:23:51.000000000 +0200
 +++ gcc/testsuite/gcc.dg/builtins-65.c	2007-10-02 11:24:12.000000000 +0200
 @@ -0,0 +1,25 @@

diff --git a/gcc44-memmove-opt.patch b/gcc44-memmove-opt.patch
new file mode 100644
index 0000000..e35ade2
--- /dev/null
+++ b/gcc44-memmove-opt.patch
@@ -0,0 +1,128 @@
+2009-03-18  Jakub Jelinek  <jakub@redhat.com>
+
+	* builtins.c (fold_builtin_memory_op): Optimize memmove
+	into memcpy if we can prove source and destination don't overlap.
+
+	* gcc.dg/memmove-2.c: New test.
+	* gcc.dg/memmove-3.c: New test.
+
+--- gcc/builtins.c.jj	2009-03-04 20:06:31.000000000 +0100
++++ gcc/builtins.c	2009-03-18 18:19:28.000000000 +0100
+@@ -8882,17 +8882,74 @@ fold_builtin_memory_op (tree dest, tree 
+ 	     really mandatory?
+ 
+ 	     If either SRC is readonly or length is 1, we can use memcpy.  */
+-	  if (dest_align && src_align
+-	      && (readonly_data_expr (src)
+-	          || (host_integerp (len, 1)
+-		      && (MIN (src_align, dest_align) / BITS_PER_UNIT >=
+-			  tree_low_cst (len, 1)))))
++	  if (!dest_align || !src_align)
++	    return NULL_TREE;
++	  if (readonly_data_expr (src)
++	      || (host_integerp (len, 1)
++		  && (MIN (src_align, dest_align) / BITS_PER_UNIT >=
++		      tree_low_cst (len, 1))))
+ 	    {
+ 	      tree fn = implicit_built_in_decls[BUILT_IN_MEMCPY];
+ 	      if (!fn)
+ 		return NULL_TREE;
+               return build_call_expr (fn, 3, dest, src, len);
+ 	    }
++
++	  /* If *src and *dest can't overlap, optimize into memcpy as well.  */
++	  srcvar = build_fold_indirect_ref (src);
++	  destvar = build_fold_indirect_ref (dest);
++	  if (srcvar && !TREE_THIS_VOLATILE (srcvar)
++	      && destvar && !TREE_THIS_VOLATILE (destvar))
++	    {
++	      tree src_base, dest_base, fn;
++	      HOST_WIDE_INT src_offset = 0, dest_offset = 0;
++	      HOST_WIDE_INT size = -1;
++	      HOST_WIDE_INT maxsize = -1;
++
++	      src_base = srcvar;
++	      if (handled_component_p (src_base))
++		src_base = get_ref_base_and_extent (src_base, &src_offset,
++						    &size, &maxsize);
++	      dest_base = destvar;
++	      if (handled_component_p (dest_base))
++		dest_base = get_ref_base_and_extent (dest_base, &dest_offset,
++						     &size, &maxsize);
++	      if (host_integerp (len, 1))
++		{
++		  maxsize = tree_low_cst (len, 1);
++		  if (maxsize
++		      > INTTYPE_MAXIMUM (HOST_WIDE_INT) / BITS_PER_UNIT)
++		    maxsize = -1;
++		  else
++		    maxsize *= BITS_PER_UNIT;
++		}
++	      else
++		maxsize = -1;
++	      if (SSA_VAR_P (src_base)
++		  && SSA_VAR_P (dest_base))
++		{
++		  if (operand_equal_p (src_base, dest_base, 0)
++		      && ranges_overlap_p (src_offset, maxsize,
++					   dest_offset, maxsize))
++		    return NULL_TREE;
++		}
++	      else if (TREE_CODE (src_base) == INDIRECT_REF
++		       && TREE_CODE (dest_base) == INDIRECT_REF)
++		{
++		  if (! operand_equal_p (TREE_OPERAND (src_base, 0),
++					 TREE_OPERAND (dest_base, 0), 0)
++		      || ranges_overlap_p (src_offset, maxsize,
++					   dest_offset, maxsize))
++		    return NULL_TREE;
++		}
++	      else
++		return NULL_TREE;
++
++	      fn = implicit_built_in_decls[BUILT_IN_MEMCPY];
++	      if (!fn)
++		return NULL_TREE;
++	      return build_call_expr (fn, 3, dest, src, len);
++	    }
+ 	  return NULL_TREE;
+ 	}
+ 
+--- gcc/testsuite/gcc.dg/memmove-2.c.jj	2009-03-18 18:30:17.000000000 +0100
++++ gcc/testsuite/gcc.dg/memmove-2.c	2009-03-18 18:30:49.000000000 +0100
+@@ -0,0 +1,16 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -fdump-tree-optimized" } */
++/* { dg-final { scan-tree-dump-times "memmove" 0 "optimized" } } */
++/* { dg-final { cleanup-tree-dump "optimized" } } */
++
++char a[40];
++extern void bar (char *);
++
++void
++foo (void)
++{
++  char b[10];
++  __builtin_memmove (&a[0], &a[20], 20);
++  __builtin_memmove (&b[1], &a[25], 9);
++  bar (b);
++}
+--- gcc/testsuite/gcc.dg/memmove-3.c.jj	2009-03-18 18:30:19.000000000 +0100
++++ gcc/testsuite/gcc.dg/memmove-3.c	2009-03-18 18:31:01.000000000 +0100
+@@ -0,0 +1,16 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -fdump-tree-optimized" } */
++/* { dg-final { scan-tree-dump-times "memmove" 3 "optimized" } } */
++/* { dg-final { cleanup-tree-dump "optimized" } } */
++
++char a[40];
++struct A { char a[30]; };
++
++void
++foo (struct A *p, char *q, char *r)
++{
++  char b[10];
++  __builtin_memmove (&a[1], &a[19], 20);
++  __builtin_memmove (&p->a[1], &p->a[9], 10);
++  __builtin_memmove (q, r, 9);
++}

diff --git a/gcc44-pr37959.patch b/gcc44-pr37959.patch
new file mode 100644
index 0000000..00363b1
--- /dev/null
+++ b/gcc44-pr37959.patch
@@ -0,0 +1,146 @@
+2009-03-18  Dodji Seketeli  <dodji@redhat.com>
+	    Jakub Jelinek  <jakub@redhat.com>
+
+	PR debug/37959
+	* dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
+	(gen_subprogram_die): When a function is explicit, generate the DW_AT_explicit
+	attribute.
+	* langhooks.h (struct lang_hooks_for_decls): Add function_decl_explicit_p
+	langhook.
+	* langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
+	(LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
+
+	* cp-objcp-common.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
+	(cp_function_decl_explicit_p): New prototype.
+	* cp-objcp-common.c (cp_function_decl_explicit_p): New function.
+
+	* g++.dg/debug/dwarf2/explicit-constructor.C: New test.
+
+--- gcc/cp/cp-objcp-common.c.jj	2009-03-05 22:32:17.000000000 +0100
++++ gcc/cp/cp-objcp-common.c	2009-03-18 14:31:17.000000000 +0100
+@@ -1,5 +1,5 @@
+ /* Some code common to C++ and ObjC++ front ends.
+-   Copyright (C) 2004, 2007, 2008 Free Software Foundation, Inc.
++   Copyright (C) 2004, 2007, 2008, 2009 Free Software Foundation, Inc.
+    Contributed by Ziemowit Laski  <zlaski@apple.com>
+ 
+ This file is part of GCC.
+@@ -203,6 +203,16 @@ cxx_staticp (tree arg)
+   return NULL_TREE;
+ }
+ 
++/* Return true if DECL is explicit member function.  */
++
++bool
++cp_function_decl_explicit_p (tree decl)
++{
++  return (decl
++	  && FUNCTION_FIRST_USER_PARMTYPE (decl) != void_list_node
++	  && DECL_NONCONVERTING_P (decl));
++}
++
+ /* Stubs to keep c-opts.c happy.  */
+ void
+ push_file_scope (void)
+--- gcc/cp/cp-objcp-common.h.jj	2009-03-02 16:21:33.000000000 +0100
++++ gcc/cp/cp-objcp-common.h	2009-03-18 14:33:51.000000000 +0100
+@@ -1,5 +1,5 @@
+ /* Language hooks common to C++ and ObjC++ front ends.
+-   Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
++   Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc.
+    Contributed by Ziemowit Laski  <zlaski@apple.com>
+ 
+ This file is part of GCC.
+@@ -26,6 +26,8 @@ along with GCC; see the file COPYING3.  
+ extern tree objcp_tsubst_copy_and_build (tree, tree, tsubst_flags_t,
+ 					 tree, bool);
+ 
++extern bool cp_function_decl_explicit_p (tree decl);
++
+ /* Lang hooks that are shared between C++ and ObjC++ are defined here.  Hooks
+    specific to C++ or ObjC++ go in cp/cp-lang.c and objcp/objcp-lang.c,
+    respectively.  */
+@@ -131,6 +133,8 @@ extern tree objcp_tsubst_copy_and_build 
+ #define LANG_HOOKS_TO_TARGET_CHARSET c_common_to_target_charset
+ #undef LANG_HOOKS_GIMPLIFY_EXPR
+ #define LANG_HOOKS_GIMPLIFY_EXPR cp_gimplify_expr
++#undef LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P
++#define LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P cp_function_decl_explicit_p
+ #undef LANG_HOOKS_OMP_PREDETERMINED_SHARING
+ #define LANG_HOOKS_OMP_PREDETERMINED_SHARING cxx_omp_predetermined_sharing
+ #undef LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR
+--- gcc/langhooks-def.h.jj	2009-03-18 14:24:43.000000000 +0100
++++ gcc/langhooks-def.h	2009-03-18 14:32:37.000000000 +0100
+@@ -190,6 +190,7 @@ extern tree lhd_make_node (enum tree_cod
+ #define LANG_HOOKS_GLOBAL_BINDINGS_P global_bindings_p
+ #define LANG_HOOKS_PUSHDECL	pushdecl
+ #define LANG_HOOKS_GETDECLS	getdecls
++#define LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P hook_bool_tree_false
+ #define LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL lhd_warn_unused_global_decl
+ #define LANG_HOOKS_WRITE_GLOBALS write_global_declarations
+ #define LANG_HOOKS_DECL_OK_FOR_SIBCALL	lhd_decl_ok_for_sibcall
+@@ -209,6 +210,7 @@ extern tree lhd_make_node (enum tree_cod
+   LANG_HOOKS_GLOBAL_BINDINGS_P, \
+   LANG_HOOKS_PUSHDECL, \
+   LANG_HOOKS_GETDECLS, \
++  LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P, \
+   LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL, \
+   LANG_HOOKS_WRITE_GLOBALS, \
+   LANG_HOOKS_DECL_OK_FOR_SIBCALL, \
+--- gcc/langhooks.h.jj	2009-03-18 14:24:43.000000000 +0100
++++ gcc/langhooks.h	2009-03-18 14:32:06.000000000 +0100
+@@ -159,6 +159,9 @@ struct lang_hooks_for_decls
+   /* Returns the chain of decls so far in the current scope level.  */
+   tree (*getdecls) (void);
+ 
++  /* Returns true if DECL is explicit member function.  */
++  bool (*function_decl_explicit_p) (tree);
++
+   /* Returns true when we should warn for an unused global DECL.
+      We will already have checked that it has static binding.  */
+   bool (*warn_unused_global) (const_tree);
+--- gcc/dwarf2out.c.jj	2009-03-18 14:24:43.000000000 +0100
++++ gcc/dwarf2out.c	2009-03-18 14:33:04.000000000 +0100
+@@ -5599,6 +5599,8 @@ dwarf_attr_name (unsigned int attr)
+       return "DW_AT_encoding";
+     case DW_AT_external:
+       return "DW_AT_external";
++    case DW_AT_explicit:
++      return "DW_AT_explicit";
+     case DW_AT_frame_base:
+       return "DW_AT_frame_base";
+     case DW_AT_friend:
+@@ -13620,6 +13622,11 @@ gen_subprogram_die (tree decl, dw_die_re
+ 	{
+ 	  add_AT_flag (subr_die, DW_AT_declaration, 1);
+ 
++	  /* If this is an explicit function declaration then generate
++	     a DW_AT_explicit attribute.  */
++          if (lang_hooks.decls.function_decl_explicit_p (decl))
++	    add_AT_flag (subr_die, DW_AT_explicit, 1);
++
+ 	  /* The first time we see a member function, it is in the context of
+ 	     the class to which it belongs.  We make sure of this by emitting
+ 	     the class first.  The next time is the definition, which is
+--- gcc/testsuite/g++.dg/debug/dwarf2/explicit-constructor.C.jj	2009-03-18 14:24:55.000000000 +0100
++++ gcc/testsuite/g++.dg/debug/dwarf2/explicit-constructor.C	2009-03-18 14:24:55.000000000 +0100
+@@ -0,0 +1,19 @@
++// Contributed by Dodji Seketeli <dodji@redhat.com>
++// Origin: PR c++
++// { dg-do compile }
++// { dg-options "-O -g -dA" }
++// { dg-final { scan-assembler-times "DW_AT_explicit" 2 } }
++
++struct Foo
++{
++  Foo () {}
++  explicit Foo (int) {}
++  Foo (char) {}
++  ~Foo () {};
++};
++
++void
++bar ()
++{
++  Foo foo;
++}

diff --git a/gcc44-pr38757.patch b/gcc44-pr38757.patch
new file mode 100644
index 0000000..c166411
--- /dev/null
+++ b/gcc44-pr38757.patch
@@ -0,0 +1,129 @@
+2009-03-18  Jakub Jelinek  <jakub@redhat.com>
+
+	PR debug/38757
+	* langhooks.h (struct lang_hooks): Add source_language langhook.
+	* langhooks-def.h (LANG_HOOKS_SOURCE_LANGUAGE): Define to NULL.
+	(LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_SOURCE_LANGUAGE.
+	* c-lang.c (c_source_language): New function.
+	(LANG_HOOKS_SOURCE_LANGUAGE): Define.
+	* dwarf2out.c (add_prototyped_attribute): Add DW_AT_prototype
+	also for DW_LANG_{C,C99,ObjC}.
+	(gen_compile_unit_die): Use lang_hooks.source_language () to
+	determine if DW_LANG_C99 or DW_LANG_C89 should be returned.
+
+--- gcc/langhooks.h.jj	2009-03-02 09:45:47.000000000 +0100
++++ gcc/langhooks.h	2009-03-18 12:53:24.000000000 +0100
+@@ -1,5 +1,5 @@
+ /* The lang_hooks data structure.
+-   Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
++   Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+    Free Software Foundation, Inc.
+ 
+ This file is part of GCC.
+@@ -414,6 +414,10 @@ struct lang_hooks
+      if in the process TREE_CONSTANT or TREE_SIDE_EFFECTS need updating.  */
+   tree (*expr_to_decl) (tree expr, bool *tc, bool *se);
+ 
++  /* Return year of the source language standard version if the FE supports
++     multiple versions of the standard.  */
++  int (*source_language) (void);
++
+   /* Whenever you add entries here, make sure you adjust langhooks-def.h
+      and langhooks.c accordingly.  */
+ };
+--- gcc/langhooks-def.h.jj	2009-03-02 09:45:47.000000000 +0100
++++ gcc/langhooks-def.h	2009-03-18 12:53:45.000000000 +0100
+@@ -1,5 +1,5 @@
+ /* Default macros to initialize the lang_hooks data structure.
+-   Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
++   Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+    Free Software Foundation, Inc.
+    Contributed by Alexandre Oliva  <aoliva@redhat.com>
+ 
+@@ -113,6 +113,7 @@ extern void lhd_omp_firstprivatize_type_
+ #define LANG_HOOKS_EXPR_TO_DECL		lhd_expr_to_decl
+ #define LANG_HOOKS_TO_TARGET_CHARSET	lhd_to_target_charset
+ #define LANG_HOOKS_INIT_TS		lhd_do_nothing
++#define LANG_HOOKS_SOURCE_LANGUAGE	NULL
+ 
+ /* Attribute hooks.  */
+ #define LANG_HOOKS_ATTRIBUTE_TABLE		NULL
+@@ -270,6 +271,7 @@ extern tree lhd_make_node (enum tree_cod
+   LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE, \
+   LANG_HOOKS_INIT_TS,          \
+   LANG_HOOKS_EXPR_TO_DECL, \
++  LANG_HOOKS_SOURCE_LANGUAGE, \
+ }
+ 
+ #endif /* GCC_LANG_HOOKS_DEF_H */
+--- gcc/c-lang.c.jj	2009-02-20 15:06:14.000000000 +0100
++++ gcc/c-lang.c	2009-03-18 13:33:41.000000000 +0100
+@@ -1,6 +1,6 @@
+ /* Language-specific hook definitions for C front end.
+    Copyright (C) 1991, 1995, 1997, 1998,
+-   1999, 2000, 2001, 2003, 2004, 2005, 2007, 2008
++   1999, 2000, 2001, 2003, 2004, 2005, 2007, 2008, 2009
+    Free Software Foundation, Inc.
+ 
+ This file is part of GCC.
+@@ -37,6 +37,12 @@ along with GCC; see the file COPYING3.  
+ 
+ enum c_language_kind c_language = clk_c;
+ 
++static int
++c_source_language (void)
++{
++  return flag_isoc99 ? 1999 : 1989;
++}
++
+ /* Lang hooks common to C and ObjC are declared in c-objc-common.h;
+    consequently, there should be very few hooks below.  */
+ 
+@@ -44,6 +50,8 @@ enum c_language_kind c_language = clk_c;
+ #define LANG_HOOKS_NAME "GNU C"
+ #undef LANG_HOOKS_INIT
+ #define LANG_HOOKS_INIT c_objc_common_init
++#undef LANG_HOOKS_SOURCE_LANGUAGE
++#define LANG_HOOKS_SOURCE_LANGUAGE c_source_language
+ 
+ /* Each front end provides its own lang hook initializer.  */
+ const struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER;
+--- gcc/dwarf2out.c.jj	2009-03-17 13:06:29.000000000 +0100
++++ gcc/dwarf2out.c	2009-03-18 12:55:36.000000000 +0100
+@@ -12470,9 +12470,18 @@ add_bit_size_attribute (dw_die_ref die, 
+ static inline void
+ add_prototyped_attribute (dw_die_ref die, tree func_type)
+ {
+-  if (get_AT_unsigned (comp_unit_die, DW_AT_language) == DW_LANG_C89
+-      && TYPE_ARG_TYPES (func_type) != NULL)
+-    add_AT_flag (die, DW_AT_prototyped, 1);
++  switch (get_AT_unsigned (comp_unit_die, DW_AT_language))
++    {
++    case DW_LANG_C:
++    case DW_LANG_C89:
++    case DW_LANG_C99:
++    case DW_LANG_ObjC:
++      if (TYPE_ARG_TYPES (func_type) != NULL)
++	add_AT_flag (die, DW_AT_prototyped, 1);
++      break;
++    default:
++      break;
++    }
+ }
+ 
+ /* Add an 'abstract_origin' attribute below a given DIE.  The DIE is found
+@@ -14419,7 +14428,13 @@ gen_compile_unit_die (const char *filena
+   else if (strcmp (language_string, "GNU Objective-C++") == 0)
+     language = DW_LANG_ObjC_plus_plus;
+   else
+-    language = DW_LANG_C89;
++    {
++      if (lang_hooks.source_language
++	  && lang_hooks.source_language () >= 1999)
++	language = DW_LANG_C99;
++      else
++	language = DW_LANG_C89;
++    }
+ 
+   add_AT_unsigned (die, DW_AT_language, language);
+   return die;

diff --git a/sources b/sources
index e936ca6..bf0f36a 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
 2659f09c2e43ef8b7d4406321753f1b2  fastjar-0.97.tar.gz
-fc00990e92faf4bc5668d2cd6234fa4c  gcc-4.4.0-20090317.tar.bz2
+2992035eaf092d72eb98ad16b173f737  gcc-4.4.0-20090319.tar.bz2

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-06-29 12:24 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-06-29 12:24 [rpms/gcc] rhel-f41-base: 4.4.0-0.28 Jakub Jelinek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox