[gcc] 4.8.0-0.12

Jakub Jelinek jakub at fedoraproject.org
Wed Feb 13 22:32:32 UTC 2013


commit 218acd09ac13e96f4e1e3714d97ac316c32863d4
Author: Jakub Jelinek <jakub at redhat.com>
Date:   Wed Feb 13 23:32:18 2013 +0100

    4.8.0-0.12

 .gitignore           |    1 +
 gcc.spec             |   26 ++++-
 gcc48-asan-fix.patch |   31 ++++++
 gcc48-pr54117.patch  |  263 ++++++++++++++++++++++++++++++++++++++++++++++++++
 gcc48-pr56111.patch  |   97 ++++++++++++++++++
 gcc48-pr56151.patch  |   73 --------------
 gcc48-pr56224.patch  |   81 +++++++++++++++
 sources              |    2 +-
 8 files changed, 495 insertions(+), 79 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index e48c1d4..cee0202 100644
--- a/.gitignore
+++ b/.gitignore
@@ -60,3 +60,4 @@
 /gcc-4.8.0-20130206.tar.bz2
 /gcc-4.8.0-20130208.tar.bz2
 /gcc-4.8.0-20130211.tar.bz2
+/gcc-4.8.0-20130213.tar.bz2
diff --git a/gcc.spec b/gcc.spec
index 945c3c0..d99a626 100644
--- a/gcc.spec
+++ b/gcc.spec
@@ -1,9 +1,9 @@
-%global DATE 20130211
-%global SVNREV 195954
+%global DATE 20130213
+%global SVNREV 196031
 %global gcc_version 4.8.0
 # 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 0.11
+%global gcc_release 0.12
 %global _unpackaged_files_terminate_build 0
 %global multilib_64_archs sparc64 ppc64 s390x x86_64
 %ifarch %{ix86} x86_64 ia64 ppc ppc64 alpha
@@ -194,7 +194,10 @@ Patch10: gcc48-pr38757.patch
 Patch11: gcc48-libstdc++-docs.patch
 Patch12: gcc48-no-add-needed.patch
 Patch13: gcc48-pr55608.patch
-Patch14: gcc48-pr56151.patch
+Patch14: gcc48-asan-fix.patch
+Patch15: gcc48-pr54117.patch
+Patch16: gcc48-pr56111.patch
+Patch17: gcc48-pr56224.patch
 
 Patch1000: fastjar-0.97-segfault.patch
 Patch1001: fastjar-0.97-len1.patch
@@ -747,7 +750,10 @@ package or when debugging this package.
 %endif
 %patch12 -p0 -b .no-add-needed~
 %patch13 -p0 -b .pr55608~
-%patch14 -p0 -b .pr56151~
+%patch14 -p0 -b .asan-fix~
+%patch15 -p0 -b .pr54117~
+%patch16 -p0 -b .pr56111~
+%patch17 -p0 -b .pr56224~
 
 %if 0%{?_enable_debug_packages}
 cat > split-debuginfo.sh <<\EOF
@@ -2971,6 +2977,16 @@ fi
 %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/plugin
 
 %changelog
+* Wed Feb 13 2013 Jakub Jelinek <jakub at redhat.com> 4.8.0-0.12
+- updated from trunk
+  - PRs c++/55710, c++/55879, c++/55993, c++/56135, c++/56155, c++/56285,
+	c++/56291, c/44938, fortran/46952, fortran/56204, inline-asm/56148,
+	libitm/55693, lto/56295, lto/56297, middle-end/56288,
+	sanitizer/56128, target/52122, testsuite/56082
+  - fix IRA bug that caused reload ICE on ARM (#910153, target/56184)
+  - attempt harder to fold "n" constrainted asm input operands in C++
+    with -O0 (#910421, c++/56302)
+
 * Mon Feb 11 2013 Jakub Jelinek <jakub at redhat.com> 4.8.0-0.11
 - updated from trunk
   - PRs c++/56238, c++/56247, c++/56268, fortran/55362, libstdc++/56267,
diff --git a/gcc48-asan-fix.patch b/gcc48-asan-fix.patch
new file mode 100644
index 0000000..dfe6f2b
--- /dev/null
+++ b/gcc48-asan-fix.patch
@@ -0,0 +1,31 @@
+2013-02-12  Dodji Seketeli  <dodji at redhat.com>
+
+	* asan.c (instrument_builtin_call):  Really put the length of the
+	second source argument into src1_len.
+
+	* c-c++-common/asan/memcmp-2.c: New test.
+
+--- gcc/asan.c
++++ gcc/asan.c
+@@ -1764,7 +1764,7 @@ instrument_builtin_call (gimple_stmt_iterator *iter)
+ 
+       if (get_mem_refs_of_builtin_call (call,
+ 					&src0, &src0_len, &src0_is_store,
+-					&src1, &src0_len, &src1_is_store,
++					&src1, &src1_len, &src1_is_store,
+ 					&dest, &dest_len, &dest_is_store,
+ 					&dest_is_deref))
+ 	{
+--- gcc/testsuite/c-c++-common/asan/memcmp-2.c
++++ gcc/testsuite/c-c++-common/asan/memcmp-2.c
+@@ -0,0 +1,10 @@
++/* { dg-do compile } */
++
++int
++foo ()
++{
++  char s0[5] = {0};
++  char s1[5] = {1};
++
++  return __builtin_memcmp (s0, s1, 2);
++}
diff --git a/gcc48-pr54117.patch b/gcc48-pr54117.patch
new file mode 100644
index 0000000..b1bad5a
--- /dev/null
+++ b/gcc48-pr54117.patch
@@ -0,0 +1,263 @@
+2013-02-13  Jakub Jelinek  <jakub at redhat.com>
+
+	PR pch/54117
+	Revert
+	2012-07-14  Steven Bosscher  <steven at gcc.gnu.org>
+
+	* toplev.c (init_asm_output): Open asm_out_file in 'w' mode.
+
+	* c-pch.c (CHECK_NO_ASM_OUT_DURING_PCH): Do not define.
+	Remove code conditional on it.
+
+	2012-07-01  Uros Bizjak  <ubizjak at gmail.com>
+
+	* c-pch.c (c_common_write_pch): Remove unused variables.
+
+	2012-06-21  Steven Bosscher  <steven at gcc.gnu.org>
+
+	* c-common.h (c_common_print_pch_checksum): Remove.
+	* c-pch.c: Do not include output.h.
+	(CHECK_NO_ASM_OUT_DURING_PCH): Define and add FIXME.
+	(asm_out_file): Define iff CHECK_NO_ASM_OUT_DURING_PCH isdefined.
+	(asm_file_startpos): Define iff CHECK_NO_ASM_OUT_DURING_PCH is defined.
+	(struct c_pch_header): Remove.
+	(get_ident): Update gpch version.
+	(pch_init): Do not print executable_checksum to asm_out_file.
+	Do not fail if there is no asm_out_file to read back from.  Set
+	asm_file_startpos only if CHECK_NO_ASM_OUT_DURING_PCH is defined.
+	(c_common_write_pch): Verify that nothing was written to asm_out_file
+	since pch_init was called.  Do not write a c_pch_header, and do not
+	copy from asm_out_file to the PCH.
+	(c_common_read_pch): Do not read a c_pch_header, and do not restore
+	the content of asm_out_file from the PCH.
+	(c_common_print_pch_checksum): Remove.
+	* c-opts.c (c_common_init): Print out executable_checksum directly.
+
+--- gcc/toplev.c.jj	2013-02-13 09:29:16.197757222 +0100
++++ gcc/toplev.c	2013-02-13 11:34:38.855800182 +0100
+@@ -912,7 +912,7 @@ init_asm_output (const char *name)
+       if (!strcmp (asm_file_name, "-"))
+ 	asm_out_file = stdout;
+       else
+-	asm_out_file = fopen (asm_file_name, "w");
++	asm_out_file = fopen (asm_file_name, "w+b");
+       if (asm_out_file == 0)
+ 	fatal_error ("can%'t open %s for writing: %m", asm_file_name);
+     }
+--- gcc/c-family/c-pch.c.jj	2013-02-13 09:29:16.065757956 +0100
++++ gcc/c-family/c-pch.c	2013-02-13 11:34:45.552761549 +0100
+@@ -25,6 +25,7 @@ along with GCC; see the file COPYING3.
+ #include "tree.h"
+ #include "flags.h"
+ #include "c-common.h"
++#include "output.h" /* for asm_out_file */
+ #include "debug.h"
+ #include "c-pragma.h"
+ #include "ggc.h"
+@@ -67,11 +68,19 @@ struct c_pch_validity
+   size_t target_data_length;
+ };
+ 
++struct c_pch_header
++{
++  unsigned long asm_size;
++};
++
+ #define IDENT_LENGTH 8
+ 
+ /* The file we'll be writing the PCH to.  */
+ static FILE *pch_outfile;
+ 
++/* The position in the assembler output file when pch_init was called.  */
++static long asm_file_startpos;
++
+ static const char *get_ident (void);
+ 
+ /* Compute an appropriate 8-byte magic number for the PCH file, so that
+@@ -83,7 +92,7 @@ static const char *
+ get_ident (void)
+ {
+   static char result[IDENT_LENGTH];
+-  static const char templ[] = "gpch.014";
++  static const char templ[] = "gpch.013";
+   static const char c_language_chars[] = "Co+O";
+ 
+   memcpy (result, templ, IDENT_LENGTH);
+@@ -97,7 +106,9 @@ get_ident (void)
+ static bool pch_ready_to_save_cpp_state = false;
+ 
+ /* Prepare to write a PCH file, if one is being written.  This is
+-   called at the start of compilation.  */
++   called at the start of compilation.
++
++   Also, print out the executable checksum if -fverbose-asm is in effect.  */
+ 
+ void
+ pch_init (void)
+@@ -107,6 +118,15 @@ pch_init (void)
+   void *target_validity;
+   static const char partial_pch[] = "gpcWrite";
+ 
++#ifdef ASM_COMMENT_START
++  if (flag_verbose_asm)
++    {
++      fprintf (asm_out_file, "%s ", ASM_COMMENT_START);
++      c_common_print_pch_checksum (asm_out_file);
++      fputc ('\n', asm_out_file);
++    }
++#endif
++
+   if (!pch_file)
+     return;
+ 
+@@ -136,6 +156,14 @@ pch_init (void)
+       || fwrite (target_validity, v.target_data_length, 1, f) != 1)
+     fatal_error ("can%'t write to %s: %m", pch_file);
+ 
++  /* We need to be able to re-read the output.  */
++  /* The driver always provides a valid -o option.  */
++  if (asm_file_name == NULL
++      || strcmp (asm_file_name, "-") == 0)
++    fatal_error ("%qs is not a valid output file", asm_file_name);
++
++  asm_file_startpos = ftell (asm_out_file);
++
+   /* Let the debugging format deal with the PCHness.  */
+   (*debug_hooks->handle_pch) (0);
+ 
+@@ -172,6 +200,11 @@ pch_cpp_save_state (void)
+ void
+ c_common_write_pch (void)
+ {
++  char *buf;
++  long asm_file_end;
++  long written;
++  struct c_pch_header h;
++
+   timevar_push (TV_PCH_SAVE);
+ 
+   targetm.prepare_pch_save ();
+@@ -180,6 +213,34 @@ c_common_write_pch (void)
+ 
+   cpp_write_pch_deps (parse_in, pch_outfile);
+ 
++  asm_file_end = ftell (asm_out_file);
++  h.asm_size = asm_file_end - asm_file_startpos;
++
++  if (fwrite (&h, sizeof (h), 1, pch_outfile) != 1)
++    fatal_error ("can%'t write %s: %m", pch_file);
++
++  buf = XNEWVEC (char, 16384);
++
++  if (fseek (asm_out_file, asm_file_startpos, SEEK_SET) != 0)
++    fatal_error ("can%'t seek in %s: %m", asm_file_name);
++
++  for (written = asm_file_startpos; written < asm_file_end; )
++    {
++      long size = asm_file_end - written;
++      if (size > 16384)
++	size = 16384;
++      if (fread (buf, size, 1, asm_out_file) != 1)
++	fatal_error ("can%'t read %s: %m", asm_file_name);
++      if (fwrite (buf, size, 1, pch_outfile) != 1)
++	fatal_error ("can%'t write %s: %m", pch_file);
++      written += size;
++    }
++  free (buf);
++  /* asm_out_file can be written afterwards, so fseek to clear
++     _IOREAD flag.  */
++  if (fseek (asm_out_file, 0, SEEK_END) != 0)
++    fatal_error ("can%'t seek in %s: %m", asm_file_name);
++
+   gt_pch_save (pch_outfile);
+ 
+   timevar_push (TV_PCH_CPP_SAVE);
+@@ -341,6 +402,7 @@ c_common_read_pch (cpp_reader *pfile, co
+ 		   int fd, const char *orig_name ATTRIBUTE_UNUSED)
+ {
+   FILE *f;
++  struct c_pch_header h;
+   struct save_macro_data *smd;
+   expanded_location saved_loc;
+   bool saved_trace_includes;
+@@ -357,6 +419,38 @@ c_common_read_pch (cpp_reader *pfile, co
+ 
+   cpp_get_callbacks (parse_in)->valid_pch = NULL;
+ 
++  if (fread (&h, sizeof (h), 1, f) != 1)
++    {
++      cpp_errno (pfile, CPP_DL_ERROR, "reading");
++      fclose (f);
++      goto end;
++    }
++
++  if (!flag_preprocess_only)
++    {
++      unsigned long written;
++      char * buf = XNEWVEC (char, 16384);
++
++      for (written = 0; written < h.asm_size; )
++	{
++	  long size = h.asm_size - written;
++	  if (size > 16384)
++	    size = 16384;
++	  if (fread (buf, size, 1, f) != 1
++	      || fwrite (buf, size, 1, asm_out_file) != 1)
++	    cpp_errno (pfile, CPP_DL_ERROR, "reading");
++	  written += size;
++	}
++      free (buf);
++    }
++  else
++    {
++      /* If we're preprocessing, don't write to a NULL
++	 asm_out_file.  */
++      if (fseek (f, h.asm_size, SEEK_CUR) != 0)
++	cpp_errno (pfile, CPP_DL_ERROR, "seeking");
++    }
++
+   /* Save the location and then restore it after reading the PCH.  */
+   saved_loc = expand_location (line_table->highest_line);
+   saved_trace_includes = line_table->trace_includes;
+@@ -435,3 +529,14 @@ c_common_pch_pragma (cpp_reader *pfile,
+   close (fd);
+ }
+ 
++/* Print out executable_checksum[].  */
++
++void
++c_common_print_pch_checksum (FILE *f)
++{
++  int i;
++  fputs ("Compiler executable checksum: ", f);
++  for (i = 0; i < 16; i++)
++    fprintf (f, "%02x", executable_checksum[i]);
++  putc ('\n', f);
++}
+--- gcc/c-family/c-opts.c.jj	2013-02-13 09:29:16.110757723 +0100
++++ gcc/c-family/c-opts.c	2013-02-13 11:34:45.551761562 +0100
+@@ -999,13 +999,7 @@ c_common_init (void)
+   cpp_init_iconv (parse_in);
+ 
+   if (version_flag)
+-    {
+-      int i;
+-      fputs ("Compiler executable checksum: ", stderr);
+-      for (i = 0; i < 16; i++)
+-	fprintf (stderr, "%02x", executable_checksum[i]);
+-      putc ('\n', stderr);
+-    }
++    c_common_print_pch_checksum (stderr);
+ 
+   /* Has to wait until now so that cpplib has its hash table.  */
+   init_pragma ();
+--- gcc/c-family/c-common.h.jj	2013-02-13 09:29:16.152757462 +0100
++++ gcc/c-family/c-common.h	2013-02-13 11:34:45.551761562 +0100
+@@ -1011,6 +1011,7 @@ extern void c_common_read_pch (cpp_reade
+ extern void c_common_write_pch (void);
+ extern void c_common_no_more_pch (void);
+ extern void c_common_pch_pragma (cpp_reader *pfile, const char *);
++extern void c_common_print_pch_checksum (FILE *f);
+ 
+ /* In *-checksum.c */
+ extern const unsigned char executable_checksum[16];
diff --git a/gcc48-pr56111.patch b/gcc48-pr56111.patch
new file mode 100644
index 0000000..05abb81
--- /dev/null
+++ b/gcc48-pr56111.patch
@@ -0,0 +1,97 @@
+2013-02-13  Marc Glisse  <marc.glisse at inria.fr>                                                                                                    
+                                                                                                                                                   
+	PR libstdc++/56111                                                                                                                         
+	* include/std/complex (complex): Undefine.                                                                                                 
+	* include/c_compatibility/complex.h (complex): Only undefine if                                                                            
+	<complex> has been included.                                                                                                               
+	* testsuite/26_numerics/complex/56111.cc: New testcase.                                                                                    
+
+--- libstdc++-v3/include/std/complex	(revision 196018)
++++ libstdc++-v3/include/std/complex	(working copy)
+@@ -37,20 +37,23 @@
+ #define _GLIBCXX_COMPLEX 1
+ 
+ #pragma GCC system_header
+ 
+ #include <bits/c++config.h>
+ #include <bits/cpp_type_traits.h>
+ #include <ext/type_traits.h>
+ #include <cmath>
+ #include <sstream>
+ 
++// Get rid of a macro possibly defined in <complex.h>
++#undef complex
++
+ namespace std _GLIBCXX_VISIBILITY(default)
+ {
+ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+ 
+   /**
+    * @defgroup complex_numbers Complex Numbers
+    * @ingroup numerics
+    *
+    * Classes and functions for complex numbers.
+    * @{
+--- libstdc++-v3/include/c_compatibility/complex.h	(revision 196018)
++++ libstdc++-v3/include/c_compatibility/complex.h	(working copy)
+@@ -27,17 +27,20 @@
+  */
+ 
+ #include <bits/c++config.h>
+ 
+ #if __cplusplus >= 201103L
+ # include <ccomplex>
+ #endif
+ 
+ #if _GLIBCXX_HAVE_COMPLEX_H
+ # include_next <complex.h>
+-# undef complex
++# ifdef _GLIBCXX_COMPLEX
++// See PR56111, keep the macro in C++03 if possible.
++#  undef complex
++# endif
+ #endif
+ 
+ #ifndef _GLIBCXX_COMPLEX_H
+ #define _GLIBCXX_COMPLEX_H 1
+ 
+ #endif
+--- libstdc++-v3/testsuite/26_numerics/complex/56111.cc	(revision 0)
++++ libstdc++-v3/testsuite/26_numerics/complex/56111.cc	(revision 0)
+@@ -0,0 +1,36 @@
++// { dg-do compile }
++// { dg-options "-std=c++98" }
++
++// Copyright (C) 2013 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 3, or (at your option)
++// any later version.
++
++// This library is distributed in the hope that it will be useful,
++// but WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++// GNU General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++
++// libstdc++/56111
++// In C++03, we try to keep the macro "complex" as long as it does not
++// conflict (std::complex).
++#include <bits/c++config.h>
++#if _GLIBCXX_HAVE_COMPLEX_H
++# include <complex.h>
++#endif
++
++int main()
++{
++#if _GLIBCXX_HAVE_COMPLEX_H
++  double complex x = .5;
++  double complex y = cacos (x);
++  (void)y;
++#endif
++}
diff --git a/gcc48-pr56224.patch b/gcc48-pr56224.patch
new file mode 100644
index 0000000..7635bf7
--- /dev/null
+++ b/gcc48-pr56224.patch
@@ -0,0 +1,81 @@
+2013-02-09  Thomas Koenig  <tkoenig at gcc.gnu.org>
+
+	PR fortran/56224
+	* gfortran.h (gfc_add_include_path):  Add boolean argument for warn.
+	* scanner.c (gfc_add_include_path):  Pass along warn argument
+	to add_path_to_list.
+	* options.c (gfc_post_options):  Add true warn argument to
+	gfc_add_include_path.
+	(gfc_handle_module_path_options):  Likewise.
+	(gfc_handle_option): Also gfc_add_include_path for intrinsic
+	modules, without warning.
+
+--- gcc/fortran/gfortran.h	(Revision 195686)
++++ gcc/fortran/gfortran.h	(Arbeitskopie)
+@@ -2378,7 +2378,7 @@ match gfc_match_char_spec (gfc_typespec *);
+ void gfc_scanner_done_1 (void);
+ void gfc_scanner_init_1 (void);
+ 
+-void gfc_add_include_path (const char *, bool, bool);
++void gfc_add_include_path (const char *, bool, bool, bool);
+ void gfc_add_intrinsic_modules_path (const char *);
+ void gfc_release_include_path (void);
+ FILE *gfc_open_included_file (const char *, bool, bool);
+--- gcc/fortran/scanner.c	(Revision 195686)
++++ gcc/fortran/scanner.c	(Arbeitskopie)
+@@ -375,9 +375,10 @@ add_path_to_list (gfc_directorylist **list, const
+ 
+ 
+ void
+-gfc_add_include_path (const char *path, bool use_for_modules, bool file_dir)
++gfc_add_include_path (const char *path, bool use_for_modules, bool file_dir,
++		      bool warn)
+ {
+-  add_path_to_list (&include_dirs, path, use_for_modules, file_dir, true);
++  add_path_to_list (&include_dirs, path, use_for_modules, file_dir, warn);
+ 
+   /* For '#include "..."' these directories are automatically searched.  */
+   if (!file_dir)
+--- gcc/fortran/options.c	(Revision 195686)
++++ gcc/fortran/options.c	(Arbeitskopie)
+@@ -337,10 +337,10 @@ gfc_post_options (const char **pfilename)
+       source_path = (char *) alloca (i + 1);
+       memcpy (source_path, canon_source_file, i);
+       source_path[i] = 0;
+-      gfc_add_include_path (source_path, true, true);
++      gfc_add_include_path (source_path, true, true, true);
+     }
+   else
+-    gfc_add_include_path (".", true, true);
++    gfc_add_include_path (".", true, true, true);
+ 
+   if (canon_source_file != gfc_source_file)
+     free (CONST_CAST (char *, canon_source_file));
+@@ -498,7 +498,7 @@ gfc_handle_module_path_options (const char *arg)
+   gfc_option.module_dir = XCNEWVEC (char, strlen (arg) + 2);
+   strcpy (gfc_option.module_dir, arg);
+ 
+-  gfc_add_include_path (gfc_option.module_dir, true, false);
++  gfc_add_include_path (gfc_option.module_dir, true, false, true);
+ 
+   strcat (gfc_option.module_dir, "/");
+ }
+@@ -844,6 +844,9 @@ gfc_handle_option (size_t scode, const char *arg,
+ 
+     case OPT_fintrinsic_modules_path:
+     case OPT_fintrinsic_modules_path_:
++
++      gfc_add_include_path (arg, false, false, false);
++
+       gfc_add_intrinsic_modules_path (arg);
+       break;
+ 
+@@ -978,7 +983,7 @@ gfc_handle_option (size_t scode, const char *arg,
+       break;
+ 
+     case OPT_I:
+-      gfc_add_include_path (arg, true, false);
++      gfc_add_include_path (arg, true, false, true);
+       break;
+ 
+     case OPT_J:
diff --git a/sources b/sources
index ff69942..2f8b492 100644
--- a/sources
+++ b/sources
@@ -1,4 +1,4 @@
 be78a47bd82523250eb3e91646db5b3d  cloog-0.18.0.tar.gz
 2659f09c2e43ef8b7d4406321753f1b2  fastjar-0.97.tar.gz
 bce1586384d8635a76d2f017fb067cd2  isl-0.11.1.tar.bz2
-ab39481e50bd55b5efdf8bbcdfda63e3  gcc-4.8.0-20130211.tar.bz2
+b69a343c57e805bd5e3c94fdcd7d45b7  gcc-4.8.0-20130213.tar.bz2


More information about the scm-commits mailing list