From b4711962194a2a9982f01563c573e71f5fe4e8c8 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Feb 11 2013 21:40:42 +0000 Subject: 4.8.0-0.11 --- diff --git a/.gitignore b/.gitignore index cea4278..e48c1d4 100644 --- a/.gitignore +++ b/.gitignore @@ -59,3 +59,4 @@ /gcc-4.8.0-20130131.tar.bz2 /gcc-4.8.0-20130206.tar.bz2 /gcc-4.8.0-20130208.tar.bz2 +/gcc-4.8.0-20130211.tar.bz2 diff --git a/gcc.spec b/gcc.spec index ab4d70a..945c3c0 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,9 +1,9 @@ -%global DATE 20130208 -%global SVNREV 195894 +%global DATE 20130211 +%global SVNREV 195954 %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.10 +%global gcc_release 0.11 %global _unpackaged_files_terminate_build 0 %global multilib_64_archs sparc64 ppc64 s390x x86_64 %ifarch %{ix86} x86_64 ia64 ppc ppc64 alpha @@ -194,9 +194,7 @@ Patch10: gcc48-pr38757.patch Patch11: gcc48-libstdc++-docs.patch Patch12: gcc48-no-add-needed.patch Patch13: gcc48-pr55608.patch -Patch14: gcc48-pr56256.patch -Patch15: gcc48-pr53948.patch -Patch16: gcc48-pr56245.patch +Patch14: gcc48-pr56151.patch Patch1000: fastjar-0.97-segfault.patch Patch1001: fastjar-0.97-len1.patch @@ -749,9 +747,7 @@ package or when debugging this package. %endif %patch12 -p0 -b .no-add-needed~ %patch13 -p0 -b .pr55608~ -%patch14 -p0 -b .pr56256~ -%patch15 -p0 -b .pr53948~ -%patch16 -p0 -b .pr56245~ +%patch14 -p0 -b .pr56151~ %if 0%{?_enable_debug_packages} cat > split-debuginfo.sh <<\EOF @@ -2975,6 +2971,14 @@ fi %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/plugin %changelog +* Mon Feb 11 2013 Jakub Jelinek 4.8.0-0.11 +- updated from trunk + - PRs c++/56238, c++/56247, c++/56268, fortran/55362, libstdc++/56267, + libstdc++/56278, libstdc++/56282, rtl-optimization/56246, + rtl-optimization/56275, target/56043, tree-optimization/56264, + tree-optimization/56273 +- improve expansion of mem1 op= mem2 (PR rtl-optimization/56151) + * Fri Feb 8 2013 Jakub Jelinek 4.8.0-0.10 - updated from trunk - PRs bootstrap/56227, c++/56235, c++/56237, c++/56239, c++/56241, diff --git a/gcc48-pr53948.patch b/gcc48-pr53948.patch deleted file mode 100644 index e9847a2..0000000 --- a/gcc48-pr53948.patch +++ /dev/null @@ -1,72 +0,0 @@ -2013-02-08 Jeff Law - - PR debug/53948 - * emit-rtl.c (reg_is_parm_p): New function. - * regs.h (reg_is_parm_p): New prototype. - * ira-conflicts.c (ira_build_conflicts): Allow parameters in - callee-clobbered registers. - - * gcc.dg/debug/dwarf2/pr53948.c: New test. - ---- gcc/emit-rtl.c -+++ gcc/emit-rtl.c -@@ -919,6 +919,18 @@ gen_reg_rtx (enum machine_mode mode) - return val; - } - -+/* Return TRUE if REG is a PARM_DECL, FALSE otherwise. */ -+ -+bool -+reg_is_parm_p (rtx reg) -+{ -+ tree decl; -+ -+ gcc_assert (REG_P (reg)); -+ decl = REG_EXPR (reg); -+ return (decl && TREE_CODE (decl) == PARM_DECL); -+} -+ - /* Update NEW with the same attributes as REG, but with OFFSET added - to the REG_OFFSET. */ - ---- gcc/ira-conflicts.c -+++ gcc/ira-conflicts.c -@@ -895,8 +895,12 @@ ira_build_conflicts (void) - - if ((! flag_caller_saves && ALLOCNO_CALLS_CROSSED_NUM (a) != 0) - /* For debugging purposes don't put user defined variables in -- callee-clobbered registers. */ -- || (optimize == 0 && REG_USERVAR_P (allocno_reg))) -+ callee-clobbered registers. However, do allow parameters -+ in callee-clobbered registers to improve debugging. This -+ is a bit of a fragile hack. */ -+ || (optimize == 0 -+ && REG_USERVAR_P (allocno_reg) -+ && ! reg_is_parm_p (allocno_reg))) - { - IOR_HARD_REG_SET (OBJECT_TOTAL_CONFLICT_HARD_REGS (obj), - call_used_reg_set); ---- gcc/regs.h -+++ gcc/regs.h -@@ -89,6 +89,8 @@ REG_N_SETS (int regno) - #define SET_REG_N_SETS(N,V) (regstat_n_sets_and_refs[N].sets = V) - #define INC_REG_N_SETS(N,V) (regstat_n_sets_and_refs[N].sets += V) - -+/* Given a REG, return TRUE if the reg is a PARM_DECL, FALSE otherwise. */ -+extern bool reg_is_parm_p (rtx); - - /* Functions defined in regstat.c. */ - extern void regstat_init_n_sets_and_refs (void); ---- gcc/testsuite/gcc.dg/debug/dwarf2/pr53948.c 2012-11-17 15:43:17.572007394 +0100 -+++ gcc/testsuite/gcc.dg/debug/dwarf2/pr53948.c 2013-02-08 19:10:23.000000000 +0100 -@@ -0,0 +1,10 @@ -+/* Test that we emit a .line directive for the line -+ with local variable initializations. */ -+/* { dg-options "-O0 -g -dA" } */ -+/* { dg-final { scan-assembler ".loc 1 8 0|# line 8" } } */ -+ -+ -+int f (register int a, register int b) { -+ register int x = b, y = a; -+ return x + y; } -+ diff --git a/gcc48-pr56151.patch b/gcc48-pr56151.patch new file mode 100644 index 0000000..f3c2dc2 --- /dev/null +++ b/gcc48-pr56151.patch @@ -0,0 +1,73 @@ +2013-02-11 Jakub Jelinek + Steven Bosscher + + PR rtl-optimization/56151 + * optabs.c (add_equal_note): Don't return 0 if target is a MEM, + equal to op0 or op1, and last_insn pattern is CODE operation + with MEM dest and one of the operands matches that MEM. + + * gcc.target/i386/pr56151.c: New test. + +--- gcc/optabs.c.jj 2013-01-16 08:30:10.000000000 +0100 ++++ gcc/optabs.c 2013-02-11 15:28:16.543839881 +0100 +@@ -190,17 +190,34 @@ add_equal_note (rtx insns, rtx target, e + if (GET_CODE (target) == ZERO_EXTRACT) + return 1; + +- /* If TARGET is in OP0 or OP1, punt. We'd end up with a note referencing +- a value changing in the insn, so the note would be invalid for CSE. */ +- if (reg_overlap_mentioned_p (target, op0) +- || (op1 && reg_overlap_mentioned_p (target, op1))) +- return 0; +- + for (last_insn = insns; + NEXT_INSN (last_insn) != NULL_RTX; + last_insn = NEXT_INSN (last_insn)) + ; + ++ /* If TARGET is in OP0 or OP1, punt. We'd end up with a note referencing ++ a value changing in the insn, so the note would be invalid for CSE. */ ++ if (reg_overlap_mentioned_p (target, op0) ++ || (op1 && reg_overlap_mentioned_p (target, op1))) ++ { ++ if (MEM_P (target) ++ && (rtx_equal_p (target, op0) ++ || (op1 && rtx_equal_p (target, op1)))) ++ { ++ /* For MEM target, with MEM = MEM op X, prefer no REG_EQUAL note ++ over expanding it as temp = MEM op X, MEM = temp. See PR56151. */ ++ set = single_set (last_insn); ++ if (set ++ && GET_CODE (SET_SRC (set)) == code ++ && MEM_P (SET_DEST (set)) ++ && (rtx_equal_p (SET_DEST (set), XEXP (SET_SRC (set), 0)) ++ || (op1 && rtx_equal_p (SET_DEST (set), ++ XEXP (SET_SRC (set), 1))))) ++ return 1; ++ } ++ return 0; ++ } ++ + set = single_set (last_insn); + if (set == NULL_RTX) + return 1; +--- gcc/testsuite/gcc.target/i386/pr56151.c.jj 2013-02-11 16:20:51.459752951 +0100 ++++ gcc/testsuite/gcc.target/i386/pr56151.c 2013-02-11 16:23:10.590964710 +0100 +@@ -0,0 +1,17 @@ ++/* PR rtl-optimization/56151 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++int vara, varb; ++ ++void ++foo (int i, int j) ++{ ++ vara = varb | vara; ++} ++ ++/* Verify the above is compiled into movl varb, %reg; orl %reg, vara instead ++ of longer movl vara, %reg; orl varb, %reg; movl %reg, vara. */ ++/* { dg-final { scan-assembler-not "mov\[^\n\r]*vara" { target nonpic } } } */ ++/* { dg-final { scan-assembler-times "mov\[^\n\r]*varb" 1 { target nonpic } } } */ ++/* { dg-final { scan-assembler-times "or\[^\n\r]*vara" 1 { target nonpic } } } */ diff --git a/gcc48-pr56245.patch b/gcc48-pr56245.patch deleted file mode 100644 index 563605f..0000000 --- a/gcc48-pr56245.patch +++ /dev/null @@ -1,47 +0,0 @@ -2013-02-08 Jakub Jelinek - - PR other/56245 - * regex.c (PTR_INT_TYPE): Define. - (EXTEND_BUFFER): Change incr type from int to PTR_INT_TYPE. - ---- libiberty/regex.c.jj 2011-05-02 18:39:35.000000000 +0200 -+++ libiberty/regex.c 2013-02-08 18:33:18.136802070 +0100 -@@ -46,9 +46,11 @@ - - # if defined STDC_HEADERS && !defined emacs - # include -+# define PTR_INT_TYPE ptrdiff_t - # else - /* We need this for `regex.h', and perhaps for the Emacs include files. */ - # include -+# define PTR_INT_TYPE long - # endif - - # define WIDE_CHAR_SUPPORT (HAVE_WCTYPE_H && HAVE_WCHAR_H && HAVE_BTOWC) -@@ -2045,7 +2047,7 @@ static reg_errcode_t byte_compile_range - /* How many characters the new buffer can have? */ \ - wchar_count = bufp->allocated / sizeof(UCHAR_T); \ - if (wchar_count == 0) wchar_count = 1; \ -- /* Truncate the buffer to CHAR_T align. */ \ -+ /* Truncate the buffer to CHAR_T align. */ \ - bufp->allocated = wchar_count * sizeof(UCHAR_T); \ - RETALLOC (COMPILED_BUFFER_VAR, wchar_count, UCHAR_T); \ - bufp->buffer = (char*)COMPILED_BUFFER_VAR; \ -@@ -2054,7 +2056,7 @@ static reg_errcode_t byte_compile_range - /* If the buffer moved, move all the pointers into it. */ \ - if (old_buffer != COMPILED_BUFFER_VAR) \ - { \ -- int incr = COMPILED_BUFFER_VAR - old_buffer; \ -+ PTR_INT_TYPE incr = COMPILED_BUFFER_VAR - old_buffer; \ - MOVE_BUFFER_POINTER (b); \ - MOVE_BUFFER_POINTER (begalt); \ - if (fixup_alt_jump) \ -@@ -2082,7 +2084,7 @@ static reg_errcode_t byte_compile_range - /* If the buffer moved, move all the pointers into it. */ \ - if (old_buffer != COMPILED_BUFFER_VAR) \ - { \ -- int incr = COMPILED_BUFFER_VAR - old_buffer; \ -+ PTR_INT_TYPE incr = COMPILED_BUFFER_VAR - old_buffer; \ - MOVE_BUFFER_POINTER (b); \ - MOVE_BUFFER_POINTER (begalt); \ - if (fixup_alt_jump) \ diff --git a/gcc48-pr56256.patch b/gcc48-pr56256.patch deleted file mode 100644 index 622c5cb..0000000 --- a/gcc48-pr56256.patch +++ /dev/null @@ -1,36 +0,0 @@ -2013-02-08 Jakub Jelinek - - PR target/56256 - * config/rs6000/rs6000.h (ASSEMBLER_DIALECT): Define. - - * gcc.target/powerpc/pr56256.c: New test. - ---- gcc/config/rs6000/rs6000.h.jj 2013-01-11 09:03:12.000000000 +0100 -+++ gcc/config/rs6000/rs6000.h 2013-02-08 16:46:35.988977363 +0100 -@@ -356,6 +356,12 @@ extern const char *host_detect_local_cpu - #define PROCESSOR_DEFAULT PROCESSOR_PPC603 - #define PROCESSOR_DEFAULT64 PROCESSOR_RS64A - -+/* Specify the dialect of assembler to use. Only new mnemonics are supported -+ starting with GCC 4.8, i.e. just one dialect, but for backwards -+ compatibility with older inline asm ASSEMBLER_DIALECT needs to be -+ defined. */ -+#define ASSEMBLER_DIALECT 1 -+ - /* Debug support */ - #define MASK_DEBUG_STACK 0x01 /* debug stack applications */ - #define MASK_DEBUG_ARG 0x02 /* debug argument handling */ ---- gcc/testsuite/gcc.target/powerpc/pr56256.c.jj 2013-02-08 17:00:11.096171281 +0100 -+++ gcc/testsuite/gcc.target/powerpc/pr56256.c 2013-02-08 17:09:05.448004295 +0100 -@@ -0,0 +1,11 @@ -+/* PR target/56256 */ -+/* { dg-do assemble } */ -+/* { dg-options "-O2" } */ -+ -+int -+foo (void) -+{ -+ int a; -+ __asm__ ("{lil|li} %0,%1" : "=r" (a) : "I" (26)); -+ return a; -+} diff --git a/sources b/sources index 53d82cb..ff69942 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 -94f2b1c221e6f1561a93525c6679080c gcc-4.8.0-20130208.tar.bz2 +ab39481e50bd55b5efdf8bbcdfda63e3 gcc-4.8.0-20130211.tar.bz2