4.8.0-0.11
This commit is contained in:
parent
081310d587
commit
b471196219
1
.gitignore
vendored
1
.gitignore
vendored
@ -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
|
||||
|
22
gcc.spec
22
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 <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,
|
||||
|
@ -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
73
gcc48-pr56151.patch
Normal 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 } } } */
|
@ -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) \
|
@ -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;
|
||||
+}
|
2
sources
2
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
|
||||
|
Loading…
Reference in New Issue
Block a user