diff --git a/.gitignore b/.gitignore index 03c6066..7dc56da 100644 --- a/.gitignore +++ b/.gitignore @@ -70,3 +70,4 @@ /gcc-4.8.0-20130322.tar.bz2 /gcc-4.8.0-20130412.tar.bz2 /gcc-4.8.0-20130419.tar.bz2 +/gcc-4.8.0-20130507.tar.bz2 diff --git a/gcc.spec b/gcc.spec index 8d091fc..44af22f 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,9 +1,9 @@ -%global DATE 20130419 -%global SVNREV 198097 +%global DATE 20130507 +%global SVNREV 198674 %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 3 +%global gcc_release 4 %global _unpackaged_files_terminate_build 0 %global multilib_64_archs sparc64 ppc64 s390x x86_64 %ifarch %{ix86} x86_64 ia64 ppc ppc64 alpha @@ -41,7 +41,7 @@ %else %global build_libatomic 0 %endif -%ifarch %{ix86} x86_64 %{arm} alpha ppc ppc64 +%ifarch %{ix86} x86_64 %{arm} alpha ppc ppc64 s390 s390x %global build_libitm 1 %else %global build_libitm 0 @@ -193,8 +193,7 @@ Patch9: gcc48-cloog-dl2.patch Patch10: gcc48-pr38757.patch Patch11: gcc48-libstdc++-docs.patch Patch12: gcc48-no-add-needed.patch -Patch13: gcc48-pr56999.patch -Patch14: gcc48-pr57000.patch +Patch13: gcc48-rh957778.patch Patch1000: fastjar-0.97-segfault.patch Patch1001: fastjar-0.97-len1.patch @@ -748,8 +747,7 @@ package or when debugging this package. %patch11 -p0 -b .libstdc++-docs~ %endif %patch12 -p0 -b .no-add-needed~ -%patch13 -p0 -b .pr56999~ -%patch14 -p0 -b .pr57000~ +%patch13 -p0 -b .rh957778~ %if 0%{?_enable_debug_packages} cat > split-debuginfo.sh <<\EOF @@ -2983,6 +2981,26 @@ fi %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/plugin %changelog +* Tue May 7 2013 Jakub Jelinek 4.8.0-4 +- update from the 4.8 branch + - PRs ada/56474, c++/50261, c++/56450, c++/56859, c++/56970, c++/57064, + c++/57092, c++/57183, debug/57184, fortran/51825, fortran/52512, + fortran/53685, fortran/56786, fortran/56814, fortran/56872, + fortran/56968, fortran/57022, libfortran/51825, libfortran/52512, + libfortran/56786, libstdc++/57010, middle-end/57103, + rtl-optimization/56605, rtl-optimization/56847, + rtl-optimization/57003, rtl-optimization/57130, + rtl-optimization/57131, rtl-optimizations/57046, sanitizer/56990, + target/44578, target/55445, target/56797, target/56866, target/57018, + target/57091, target/57097, target/57098, target/57106, target/57108, + target/57150, tree-optimization/57051, tree-optimization/57066, + tree-optimization/57083, tree-optimization/57104, + tree-optimization/57149, tree-optimization/57185 + - fix gcj with -fsection-anchors (#952673, PR libgcj/57074) +- enable libitm on s390{,x} +- error when linking with both -fsanitize=address and -fsanitize=thread + (#957778) + * Fri Apr 19 2013 Jakub Jelinek 4.8.0-3 - update from the 4.8 branch - PRs c++/56388, fortran/56816, fortran/56994, rtl-optimization/56992, diff --git a/gcc48-pr56999.patch b/gcc48-pr56999.patch deleted file mode 100644 index d8e15a6..0000000 --- a/gcc48-pr56999.patch +++ /dev/null @@ -1,306 +0,0 @@ -2013-04-18 Vladimir Makarov - - PR rtl-optimization/56999 - * lra-coalesce.c (coalescable_pseudo_p): Remove 2nd parameter and - related code. - (lra_coalesce): Remove split_origin_bitmap and related code. - * lra.c (lra): Coalesce after undoing inheritance. Recreate live - ranges if necessary. - -2013-04-18 Jakub Jelinek - - PR rtl-optimization/56999 - * g++.dg/opt/pr56999.C: New test. - ---- gcc/lra-coalesce.c (revision 198081) -+++ gcc/lra-coalesce.c (revision 198083) -@@ -201,24 +201,14 @@ update_live_info (bitmap lr_bitmap) - } - } - --/* Return true if pseudo REGNO can be potentially coalesced. Use -- SPLIT_PSEUDO_BITMAP to find pseudos whose live ranges were -- split. */ -+/* Return true if pseudo REGNO can be potentially coalesced. */ - static bool --coalescable_pseudo_p (int regno, bitmap split_origin_bitmap) -+coalescable_pseudo_p (int regno) - { - lra_assert (regno >= FIRST_PSEUDO_REGISTER); -- /* Don't coalesce inheritance pseudos because spilled inheritance -- pseudos will be removed in subsequent 'undo inheritance' -- pass. */ -- return (lra_reg_info[regno].restore_regno < 0 -- /* We undo splits for spilled pseudos whose live ranges were -- split. So don't coalesce them, it is not necessary and -- the undo transformations would be wrong. */ -- && ! bitmap_bit_p (split_origin_bitmap, regno) -- /* We don't want to coalesce regnos with equivalences, at -+ return (/* We don't want to coalesce regnos with equivalences, at - least without updating this info. */ -- && ira_reg_equiv[regno].constant == NULL_RTX -+ ira_reg_equiv[regno].constant == NULL_RTX - && ira_reg_equiv[regno].memory == NULL_RTX - && ira_reg_equiv[regno].invariant == NULL_RTX); - } -@@ -230,12 +220,10 @@ lra_coalesce (void) - { - basic_block bb; - rtx mv, set, insn, next, *sorted_moves; -- int i, mv_num, sregno, dregno, restore_regno; -- unsigned int regno; -+ int i, mv_num, sregno, dregno; - int coalesced_moves; - int max_regno = max_reg_num (); -- bitmap_head involved_insns_bitmap, split_origin_bitmap; -- bitmap_iterator bi; -+ bitmap_head involved_insns_bitmap; - - timevar_push (TV_LRA_COALESCE); - -@@ -249,11 +237,6 @@ lra_coalesce (void) - first_coalesced_pseudo[i] = next_coalesced_pseudo[i] = i; - sorted_moves = XNEWVEC (rtx, get_max_uid ()); - mv_num = 0; -- /* Collect pseudos whose live ranges were split. */ -- bitmap_initialize (&split_origin_bitmap, ®_obstack); -- EXECUTE_IF_SET_IN_BITMAP (&lra_split_regs, 0, regno, bi) -- if ((restore_regno = lra_reg_info[regno].restore_regno) >= 0) -- bitmap_set_bit (&split_origin_bitmap, restore_regno); - /* Collect moves. */ - coalesced_moves = 0; - FOR_EACH_BB (bb) -@@ -265,15 +248,13 @@ lra_coalesce (void) - && (sregno = REGNO (SET_SRC (set))) >= FIRST_PSEUDO_REGISTER - && (dregno = REGNO (SET_DEST (set))) >= FIRST_PSEUDO_REGISTER - && mem_move_p (sregno, dregno) -- && coalescable_pseudo_p (sregno, &split_origin_bitmap) -- && coalescable_pseudo_p (dregno, &split_origin_bitmap) -+ && coalescable_pseudo_p (sregno) && coalescable_pseudo_p (dregno) - && ! side_effects_p (set) - && !(lra_intersected_live_ranges_p - (lra_reg_info[sregno].live_ranges, - lra_reg_info[dregno].live_ranges))) - sorted_moves[mv_num++] = insn; - } -- bitmap_clear (&split_origin_bitmap); - qsort (sorted_moves, mv_num, sizeof (rtx), move_freq_compare_func); - /* Coalesced copies, most frequently executed first. */ - bitmap_initialize (&coalesced_pseudos_bitmap, ®_obstack); ---- gcc/lra.c (revision 198081) -+++ gcc/lra.c (revision 198083) -@@ -2295,11 +2295,20 @@ lra (FILE *f) - lra_assign (); - else - { -- /* Do coalescing only for regular algorithms. */ -- if (! lra_assign () && lra_coalesce ()) -- live_p = false; -+ bool spill_p = !lra_assign (); -+ - if (lra_undo_inheritance ()) - live_p = false; -+ if (spill_p) -+ { -+ if (! live_p) -+ { -+ lra_create_live_ranges (true); -+ live_p = true; -+ } -+ if (lra_coalesce ()) -+ live_p = false; -+ } - if (! live_p) - lra_clear_live_ranges (); - } ---- gcc/testsuite/g++.dg/opt/pr56999.C (revision 0) -+++ gcc/testsuite/g++.dg/opt/pr56999.C (revision 198083) -@@ -0,0 +1,188 @@ -+// PR rtl-optimization/56999 -+// { dg-do run } -+// { dg-options "-O2" } -+// { dg-additional-options "-fpic" { target fpic } } -+// { dg-additional-options "-march=i686 -mtune=atom" { target ia32 } } -+// { dg-require-visibility "" } -+ -+extern "C" void abort (void); -+extern "C" void exit (int); -+volatile bool do_exit = true; -+struct JSScript; -+struct JITScript { int i; }; -+#pragma GCC visibility push(hidden) -+typedef struct JSCompartment JSCompartment; -+typedef struct JSContext JSContext; -+namespace js -+{ -+ struct ContextFriendFields -+ { -+ JSCompartment *compartment; -+ }; -+ struct TempAllocPolicy -+ { -+ }; -+ template -+ struct Vector -+ { -+ T *mBegin; -+ T *begin () { return mBegin; } -+ T & operator[] (unsigned i) { return begin ()[i]; } -+ template -+ __attribute__((noinline, noclone)) -+ bool append (U) { asm volatile ("" : : : "memory"); if (do_exit) abort (); return false; } -+ }; -+ namespace types -+ { -+ struct TypeCompartment; -+ } -+ namespace mjit -+ { -+ } -+ namespace ion -+ { -+ struct IonScript; -+ } -+ namespace types -+ { -+ struct CompilerOutput -+ { -+ enum Kind { MethodJIT, ParallelIon }; -+ JSScript *script; -+ unsigned kindInt : 2; -+ bool constructing : 1; -+ bool barriers : 1; -+ bool pendingRecompilation : 1; -+ Kind kind () const { return static_cast (kindInt); } -+ bool isValid () const; -+ }; -+ struct RecompileInfo -+ { -+ unsigned outputIndex; -+ CompilerOutput *compilerOutput (TypeCompartment & types) const; -+ CompilerOutput *compilerOutput (JSContext *cx) const; -+ }; -+ struct TypeCompartment -+ { -+ Vector *constrainedOutputs; -+ Vector *pendingRecompiles; -+ void addPendingRecompile (JSContext *cx, const RecompileInfo & info); -+ }; -+ } -+} -+struct JSScript -+{ -+ struct JITScriptHandle -+ { -+ static volatile JITScript *UNJITTABLE __attribute__((visibility ("default"))); -+ JITScript *value; -+ bool isValid () { return value != UNJITTABLE; } -+ JITScript *getValid () { return value; } -+ }; -+ struct JITScriptSet -+ { -+ JITScriptHandle jitHandleNormal, jitHandleNormalBarriered; -+ JITScriptHandle jitHandleCtor, jitHandleCtorBarriered; -+ JITScriptHandle jitNull1, jitNull2; -+ }; -+ JITScriptSet *mJITInfo; -+ void *ion; -+ JITScriptHandle *jitHandle (bool constructing, bool barriers) -+ { -+ return constructing ? (barriers ? &mJITInfo->jitHandleCtorBarriered -+ : &mJITInfo->jitHandleCtor) -+ : (barriers ? &mJITInfo->jitHandleNormalBarriered -+ : &mJITInfo->jitHandleNormal); -+ } -+ JITScript *getJIT (bool constructing, bool barriers) -+ { -+ JITScriptHandle *jith = jitHandle (constructing, barriers); -+ return jith->isValid () ? jith->getValid () : __null; -+ } -+}; -+struct JSContext : js::ContextFriendFields -+{ -+}; -+namespace js -+{ -+ __attribute__((noinline, noclone)) -+ void CancelOffThreadIonCompile (JSCompartment *, JSScript *) -+ { -+ if (do_exit) -+ exit (0); -+ } -+} -+struct JSCompartment -+{ -+ js::types::TypeCompartment types; -+}; -+namespace js -+{ -+ namespace types -+ { -+ inline bool CompilerOutput::isValid () const -+ { -+ if (!script) -+ return false; -+ switch (kind ()) -+ { -+ case MethodJIT: -+ { -+ JITScript *jit = script->getJIT (constructing, barriers); -+ if (!jit) -+ return false; -+ } -+ case ParallelIon: -+ return true; -+ } -+ return false; -+ } -+ inline CompilerOutput *RecompileInfo::compilerOutput (TypeCompartment & types) const -+ { -+ return &(*types.constrainedOutputs)[outputIndex]; -+ } -+ inline CompilerOutput *RecompileInfo::compilerOutput (JSContext *cx) const -+ { -+ return compilerOutput (cx->compartment->types); -+ } -+ } -+} -+using namespace js::types; -+__attribute__((noinline, noclone)) void -+TypeCompartment::addPendingRecompile (JSContext *cx, const RecompileInfo & info) -+{ -+ CompilerOutput *co = info.compilerOutput (cx); -+ if (co->pendingRecompilation) -+ if (co->isValid ()) -+ CancelOffThreadIonCompile (cx->compartment, co->script); -+ if (co->isValid ()) -+ pendingRecompiles->append (info); -+} -+volatile JITScript *JSScript::JITScriptHandle::UNJITTABLE; -+int -+main () -+{ -+ JSContext cx; -+ JSCompartment com; -+ RecompileInfo info; -+ cx.compartment = &com; -+ info.outputIndex = 0; -+ js::Vector v; -+ JITScript js; -+ JSScript::JITScriptSet set; -+ __builtin_memset (&set, 0, sizeof set); -+ set.jitHandleCtor.value = &js; -+ JSScript s; -+ s.mJITInfo = &set; -+ CompilerOutput co; -+ co.kindInt = 0; -+ co.constructing = true; -+ co.barriers = false; -+ co.pendingRecompilation = true; -+ co.script = &s; -+ v.mBegin = &co; -+ com.types.constrainedOutputs = &v; -+ com.types.pendingRecompiles = __null; -+ com.types.addPendingRecompile (&cx, info); -+ abort (); -+} diff --git a/gcc48-pr57000.patch b/gcc48-pr57000.patch deleted file mode 100644 index 714e046..0000000 --- a/gcc48-pr57000.patch +++ /dev/null @@ -1,31 +0,0 @@ -2013-04-19 Richard Biener - - PR tree-optimization/57000 - * tree-ssa-reassoc.c (pass_reassoc): Add TODO_update_ssa_only_virtuals. - - * gcc.dg/tree-ssa/reassoc-27.c: New testcase. - ---- gcc/tree-ssa-reassoc.c (revision 198086) -+++ gcc/tree-ssa-reassoc.c (revision 198087) -@@ -4293,6 +4293,7 @@ struct gimple_opt_pass pass_reassoc = - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - TODO_verify_ssa -+ | TODO_update_ssa_only_virtuals - | TODO_verify_flow - | TODO_ggc_collect /* todo_flags_finish */ - } ---- gcc/testsuite/gcc.dg/tree-ssa/reassoc-27.c (revision 0) -+++ gcc/testsuite/gcc.dg/tree-ssa/reassoc-27.c (revision 198087) -@@ -0,0 +1,11 @@ -+/* { dg-do compile } */ -+/* { dg-options "-O -ffast-math -frounding-math -fdump-tree-optimized" } */ -+ -+double baz (double foo, double bar) -+{ -+ return foo * foo * foo * foo * bar * bar * bar * bar; -+} -+ -+/* We should re-associate this as (foo * bar)**3. */ -+/* { dg-final { scan-tree-dump-times " \\\* " 3 "optimized" } } */ -+/* { dg-final { cleanup-tree-dump "optimized" } } */ diff --git a/gcc48-rh957778.patch b/gcc48-rh957778.patch new file mode 100644 index 0000000..45db0e5 --- /dev/null +++ b/gcc48-rh957778.patch @@ -0,0 +1,17 @@ +2013-05-06 Jakub Jelinek + + * gcc.c (SANITIZER_SPEC): Reject -fsanitize=address -fsanitize=thread + linking. + +--- gcc/gcc.c.jj 2013-04-15 16:55:04.000000000 +0200 ++++ gcc/gcc.c 2013-05-06 17:25:42.306455151 +0200 +@@ -716,7 +716,8 @@ proper position among the other output f + #ifndef SANITIZER_SPEC + #define SANITIZER_SPEC "\ + %{!nostdlib:%{!nodefaultlibs:%{fsanitize=address:" LIBASAN_SPEC "\ +- %{static:%ecannot specify -static with -fsanitize=address}}\ ++ %{static:%ecannot specify -static with -fsanitize=address}\ ++ %{fsanitize=thread:%e-fsanitize=address is incompatible with -fsanitize=thread}}\ + %{fsanitize=thread:" LIBTSAN_SPEC "\ + %{!pie:%{!shared:%e-fsanitize=thread linking must be done with -pie or -shared}}}}}" + #endif diff --git a/sources b/sources index 0c67df0..38f79c8 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ be78a47bd82523250eb3e91646db5b3d cloog-0.18.0.tar.gz 2659f09c2e43ef8b7d4406321753f1b2 fastjar-0.97.tar.gz -fc7593f5789278c5b6db56ab6f34fee3 gcc-4.8.0-20130419.tar.bz2 +01a69c8570aa3a0dcdef76a335d60076 gcc-4.8.0-20130507.tar.bz2 bce1586384d8635a76d2f017fb067cd2 isl-0.11.1.tar.bz2