4.8.0-0.11

This commit is contained in:
Jakub Jelinek 2013-02-11 22:40:42 +01:00
parent 081310d587
commit b471196219
7 changed files with 88 additions and 165 deletions

1
.gitignore vendored
View File

@ -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

View File

@ -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 <jakub@redhat.com> 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 <jakub@redhat.com> 4.8.0-0.10
- updated from trunk
- PRs bootstrap/56227, c++/56235, c++/56237, c++/56239, c++/56241,

View File

@ -1,72 +0,0 @@
2013-02-08 Jeff Law <law@redhat.com>
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; }
+

73
gcc48-pr56151.patch Normal file
View File

@ -0,0 +1,73 @@
2013-02-11 Jakub Jelinek <jakub@redhat.com>
Steven Bosscher <steven@gcc.gnu.org>
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 } } } */

View File

@ -1,47 +0,0 @@
2013-02-08 Jakub Jelinek <jakub@redhat.com>
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 <stddef.h>
+# define PTR_INT_TYPE ptrdiff_t
# else
/* We need this for `regex.h', and perhaps for the Emacs include files. */
# include <sys/types.h>
+# 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) \

View File

@ -1,36 +0,0 @@
2013-02-08 Jakub Jelinek <jakub@redhat.com>
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;
+}

View File

@ -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