[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