rpms/gcc/devel gcc43-libgomp-speedup.patch, NONE, 1.1 gcc43-pr35440.patch, NONE, 1.1 gcc43-pr35546.patch, NONE, 1.1 .cvsignore, 1.229, 1.230 gcc43.spec, 1.24, 1.25 sources, 1.231, 1.232
Jakub Jelinek (jakub)
fedora-extras-commits at redhat.com
Wed Mar 26 19:57:45 UTC 2008
Author: jakub
Update of /cvs/pkgs/rpms/gcc/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv7896
Modified Files:
.cvsignore gcc43.spec sources
Added Files:
gcc43-libgomp-speedup.patch gcc43-pr35440.patch
gcc43-pr35546.patch
Log Message:
4.3.0-4
gcc43-libgomp-speedup.patch:
--- NEW FILE gcc43-libgomp-speedup.patch ---
2008-03-26 Jakub Jelinek <jakub at redhat.com>
* loop.c (gomp_loop_init): Fix GFS_DYNAMIC ws->mode setting.
* testsuite/libgomp.c/loop-4.c: New test.
* libgomp.h (struct gomp_team_state): Add single_count field.
(struct gomp_team): Likewise.
* team.c (gomp_new_team): Clear single_count.
(gomp_team_start): Likewise.
* single.c (GOMP_single_start): Rewritten if HAVE_SYNC_BUILTINS.
2008-03-25 Jakub Jelinek <jakub at redhat.com>
* team.c (gomp_thread_start): Don't clear ts.static_trip here.
* loop.c (gomp_loop_static_start, gomp_loop_dynamic_start): Clear
ts.static_trip here.
* work.c (gomp_work_share_start): Don't clear ts.static_trip here.
2008-03-21 Jakub Jelinek <jakub at redhat.com>
* libgomp.h: Include ptrlock.h.
(struct gomp_work_share): Reshuffle fields. Add next_alloc,
next_ws, next_free and inline_ordered_team_ids fields, change
ordered_team_ids into pointer from flexible array member.
(struct gomp_team_state): Add last_work_share field, remove
work_share_generation.
(struct gomp_team): Remove work_share_lock, generation_mask,
oldest_live_gen, num_live_gen and init_work_shares fields, add
work work_share_list_alloc, work_share_list_free and work_share_chunk
fields. Change work_shares from pointer to pointers into an array.
(gomp_new_team): New prototype.
(gomp_team_start): Change type of last argument.
(gomp_new_work_share): Removed.
(gomp_init_work_share, gomp_fini_work_share): New prototypes.
(gomp_work_share_init_done): New static inline.
* team.c (gomp_thread_start): Clear ts.last_work_share, don't clear
ts.work_share_generation.
(new_team): Removed.
(gomp_new_team): New function.
(free_team): Free gomp_work_share blocks chained through next_alloc,
instead of freeing work_shares and destroying work_share_lock.
(gomp_team_start): Change last argument from ws to team, don't create
new team, set ts.work_share to &team->work_shares[0] and clear
ts.last_work_share. Don't clear ts.work_share_generation.
(gomp_team_end): Call gomp_fini_work_share.
* work.c (gomp_new_work_share): Removed.
(alloc_work_share, gomp_init_work_share, gomp_fini_work_share): New
functions.
(free_work_share): Add team argument. Call gomp_fini_work_share
and then either free ws if orphaned, or put it into
work_share_list_free list of the current team.
(gomp_work_share_start, gomp_work_share_end,
gomp_work_share_end_nowait): Rewritten.
* sections.c (GOMP_sections_start): Call gomp_work_share_init_done
after gomp_sections_init. If HAVE_SYNC_BUILTINS, call
gomp_iter_dynamic_next instead of the _locked variant and don't take
lock around it, otherwise acquire it before calling
gomp_iter_dynamic_next_locked.
(GOMP_sections_next): If HAVE_SYNC_BUILTINS, call
gomp_iter_dynamic_next instead of the _locked variant and don't take
lock around it.
(GOMP_parallel_sections_start): Call gomp_new_team instead of
gomp_new_work_share. Call gomp_sections_init on &team->work_shares[0].
Adjust gomp_team_start caller.
* loop.c (gomp_loop_static_start, gomp_loop_ordered_static_start): Call
gomp_work_share_init_done after gomp_loop_init. Don't unlock ws->lock.
(gomp_loop_dynamic_start, gomp_loop_guided_start): Call
gomp_work_share_init_done after gomp_loop_init. If HAVE_SYNC_BUILTINS,
don't unlock ws->lock, otherwise lock it.
(gomp_loop_ordered_dynamic_start, gomp_loop_ordered_guided_start): Call
gomp_work_share_init_done after gomp_loop_init. Lock ws->lock.
(gomp_parallel_loop_start): Call gomp_new_team instead of
gomp_new_work_share. Call gomp_loop_init on &team->work_shares[0].
Adjust gomp_team_start caller.
* single.c (GOMP_single_start, GOMP_single_copy_start): Call
gomp_work_share_init_done if gomp_work_share_start returned true.
Don't unlock ws->lock.
* parallel.c (GOMP_parallel_start): Call gomp_new_team and pass that
as last argument to gomp_team_start.
* config/linux/ptrlock.c: New file.
* config/linux/ptrlock.h: New file.
* config/posix/ptrlock.c: New file.
* config/posix/ptrlock.h: New file.
* Makefile.am (libgomp_la_SOURCES): Add ptrlock.c.
* Makefile.in: Regenerated.
* testsuite/Makefile.in: Regenerated.
2008-03-19 Jakub Jelinek <jakub at redhat.com>
* libgomp.h (gomp_active_wait_policy): Remove decl.
(gomp_throttled_spin_count_var, gomp_available_cpus,
gomp_managed_threads): New extern decls.
* team.c (gomp_team_start, gomp_team_end): If number of threads
changed, adjust atomically gomp_managed_threads.
* env.c (gomp_active_wait_policy, gomp_block_time_var): Remove.
(gomp_throttled_spin_count_var, gomp_available_cpus,
gomp_managed_threads): New variables.
(parse_millis): Removed.
(parse_spincount): New function.
(parse_wait_policy): Return -1/0/1 instead of setting
gomp_active_wait_policy.
(initialize_env): Call gomp_init_num_threads unconditionally.
Initialize gomp_available_cpus. Call parse_spincount instead
of parse_millis, initialize gomp_{,throttled_}spin_count_var
depending on presence and value of OMP_WAIT_POLICY and
GOMP_SPINCOUNT env vars.
* config/linux/wait.h (do_wait): Use gomp_throttled_spin_count_var
instead of gomp_spin_count_var if gomp_managed_threads >
gomp_available_cpus.
* config/linux/wait.h: Include errno.h.
(FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG): Define.
(gomp_futex_wake, gomp_futex_wait): New extern decls.
* config/linux/mutex.c (gomp_futex_wake, gomp_futex_wait): New
variables.
* config/linux/powerpc/futex.h (FUTEX_WAIT, FUTEX_WAKE): Remove.
(sys_futex0): Return error code.
(futex_wake, futex_wait): If ENOSYS was returned, clear
FUTEX_PRIVATE_FLAG in gomp_futex_wa{ke,it} and retry.
* config/linux/alpha/futex.h (FUTEX_WAIT, FUTEX_WAKE): Remove.
(futex_wake, futex_wait): If ENOSYS was returned, clear
FUTEX_PRIVATE_FLAG in gomp_futex_wa{ke,it} and retry.
* config/linux/x86/futex.h (FUTEX_WAIT, FUTEX_WAKE): Remove.
(sys_futex0): Return error code.
(futex_wake, futex_wait): If ENOSYS was returned, clear
FUTEX_PRIVATE_FLAG in gomp_futex_wa{ke,it} and retry.
* config/linux/s390/futex.h (FUTEX_WAIT, FUTEX_WAKE): Remove.
(sys_futex0): Return error code.
(futex_wake, futex_wait): If ENOSYS was returned, clear
FUTEX_PRIVATE_FLAG in gomp_futex_wa{ke,it} and retry.
* config/linux/ia64/futex.h (FUTEX_WAIT, FUTEX_WAKE): Remove.
(sys_futex0): Return error code.
(futex_wake, futex_wait): If ENOSYS was returned, clear
FUTEX_PRIVATE_FLAG in gomp_futex_wa{ke,it} and retry.
* config/linux/sparc/futex.h (FUTEX_WAIT, FUTEX_WAKE): Remove.
(sys_futex0): Return error code.
(futex_wake, futex_wait): If ENOSYS was returned, clear
FUTEX_PRIVATE_FLAG in gomp_futex_wa{ke,it} and retry.
2008-03-18 Jakub Jelinek <jakub at redhat.com>
* libgomp.h (struct gomp_work_share): Add mode field. Put lock and
next into a different cache line from most of the write-once fields.
* loop.c: Include limits.h.
(gomp_loop_init): For GFS_DYNAMIC, multiply ws->chunk_size by incr.
If adding ws->chunk_size nthreads + 1 times after end won't
overflow, set ws->mode to 1.
* iter.c (gomp_iter_dynamic_next_locked): Don't multiply
ws->chunk_size by incr.
(gomp_iter_dynamic_next): Likewise. If ws->mode, use more efficient
code.
* work.c: Include stddef.h.
(gomp_new_work_share): Use offsetof rather than sizeof.
2008-03-17 Jakub Jelinek <jakub at redhat.com>
* libgomp.h (struct gomp_team): Change ordered_release field
into gomp_sem_t ** from flexible array member. Add implicit_task
and initial_work_shares fields.
(gomp_new_task): Removed.
(gomp_init_task): New prototype.
* team.c (new_team): Allocate implicit_task for each thread
and initial work_shares together with gomp_team allocation.
(free_team): Only free work_shares if it is not init_work_shares.
(gomp_team_start): Use gomp_init_task instead of gomp_new_task,
set thr->task to the corresponding implicit_task array entry.
* task.c (gomp_new_task): Removed.
(gomp_init_task): New function.
(gomp_end_task): Don't free the task.
(GOMP_task): Allocate struct gomp_task on the stack, call
gomp_init_task rather than gomp_new_task.
* work.c (gomp_work_share_start): If work_shares ==
init_work_shares, gomp_malloc + memcpy rather than gomp_realloc.
2008-03-15 Jakub Jelinek <jakub at redhat.com>
Ulrich Drepper <drepper at redhat.com>
* config/linux/bar.h (gomp_barrier_state_t): Rewritten.
(gomp_barrier_state_t): Change to unsigned int.
(gomp_barrier_init, gomp_barrier_reinit, gomp_barrier_destroy,
gomp_barrier_wait_start, gomp_barrier_last_thread): Rewritten.
(gomp_barrier_wait_last): Prototype rather than inline.
* config/linux/bar.c (gomp_barrier_wait_end): Rewritten.
(gomp_barrier_wait_last): New function.
2008-03-15 Jakub Jelinek <jakub at redhat.com>
* team.c (gomp_thread_start): Use gomp_barrier_wait_last instead
of gomp_barrier_wait.
* env.c (gomp_block_time_var, gomp_spin_count_var): New variables.
(parse_millis): New function.
(initialize_env): Handle GOMP_BLOCKTIME env var.
* libgomp.h (struct gomp_team): Move close to the end of the struct.
(gomp_spin_count_var): New extern var decl.
* work.c (gomp_work_share_end): Use gomp_barrier_state_t bstate
var instead of bool last, call gomp_barrier_last_thread to check
for last thread, pass bstate to gomp_barrier_wait_end.
* config/linux/wait.h: New file.
* config/linux/mutex.c: Include wait.h instead of libgomp.h and
[...2333 lines suppressed...]
}
--- libgomp/config/linux/mutex.c.jj 2007-12-07 14:41:00.000000000 +0100
+++ libgomp/config/linux/mutex.c 2008-03-26 15:11:32.000000000 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005 Free Software Foundation, Inc.
+/* Copyright (C) 2005, 2008 Free Software Foundation, Inc.
Contributed by Richard Henderson <rth at redhat.com>.
This file is part of the GNU OpenMP Library (libgomp).
@@ -29,9 +29,10 @@
mechanism for libgomp. This type is private to the library. This
implementation uses atomic instructions and the futex syscall. */
-#include "libgomp.h"
-#include "futex.h"
+#include "wait.h"
+long int gomp_futex_wake = FUTEX_WAKE | FUTEX_PRIVATE_FLAG;
+long int gomp_futex_wait = FUTEX_WAIT | FUTEX_PRIVATE_FLAG;
void
gomp_mutex_lock_slow (gomp_mutex_t *mutex)
@@ -40,7 +41,7 @@ gomp_mutex_lock_slow (gomp_mutex_t *mute
{
int oldval = __sync_val_compare_and_swap (mutex, 1, 2);
if (oldval != 0)
- futex_wait (mutex, 2);
+ do_wait (mutex, 2);
}
while (!__sync_bool_compare_and_swap (mutex, 0, 2));
}
--- libgomp/config/linux/sem.c.jj 2007-12-07 14:41:00.000000000 +0100
+++ libgomp/config/linux/sem.c 2008-03-26 15:11:32.000000000 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005 Free Software Foundation, Inc.
+/* Copyright (C) 2005, 2008 Free Software Foundation, Inc.
Contributed by Richard Henderson <rth at redhat.com>.
This file is part of the GNU OpenMP Library (libgomp).
@@ -29,8 +29,7 @@
mechanism for libgomp. This type is private to the library. This
implementation uses atomic instructions and the futex syscall. */
-#include "libgomp.h"
-#include "futex.h"
+#include "wait.h"
void
@@ -44,7 +43,7 @@ gomp_sem_wait_slow (gomp_sem_t *sem)
if (__sync_bool_compare_and_swap (sem, val, val - 1))
return;
}
- futex_wait (sem, -1);
+ do_wait (sem, -1);
}
}
--- libgomp/config/linux/powerpc/futex.h.jj 2007-12-07 14:41:00.000000000 +0100
+++ libgomp/config/linux/powerpc/futex.h 2008-03-26 15:11:32.000000000 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005 Free Software Foundation, Inc.
+/* Copyright (C) 2005, 2008 Free Software Foundation, Inc.
Contributed by Richard Henderson <rth at redhat.com>.
This file is part of the GNU OpenMP Library (libgomp).
@@ -28,10 +28,8 @@
/* Provide target-specific access to the futex system call. */
#include <sys/syscall.h>
-#define FUTEX_WAIT 0
-#define FUTEX_WAKE 1
-static inline void
+static inline long
sys_futex0 (int *addr, int op, int val)
{
register long int r0 __asm__ ("r0");
@@ -50,21 +48,48 @@ sys_futex0 (int *addr, int op, int val)
doesn't. It doesn't much matter for us. In the interest of unity,
go ahead and clobber it always. */
- __asm volatile ("sc"
+ __asm volatile ("sc; mfcr %0"
: "=r"(r0), "=r"(r3), "=r"(r4), "=r"(r5), "=r"(r6)
: "r"(r0), "r"(r3), "r"(r4), "r"(r5), "r"(r6)
: "r7", "r8", "r9", "r10", "r11", "r12",
"cr0", "ctr", "memory");
+ if (__builtin_expect (r0 & (1 << 28), 0))
+ return r3;
+ return 0;
}
static inline void
futex_wait (int *addr, int val)
{
- sys_futex0 (addr, FUTEX_WAIT, val);
+ long err = sys_futex0 (addr, gomp_futex_wait, val);
+ if (__builtin_expect (err == ENOSYS, 0))
+ {
+ gomp_futex_wait &= ~FUTEX_PRIVATE_FLAG;
+ gomp_futex_wake &= ~FUTEX_PRIVATE_FLAG;
+ sys_futex0 (addr, gomp_futex_wait, val);
+ }
}
static inline void
futex_wake (int *addr, int count)
{
- sys_futex0 (addr, FUTEX_WAKE, count);
+ long err = sys_futex0 (addr, gomp_futex_wake, count);
+ if (__builtin_expect (err == ENOSYS, 0))
+ {
+ gomp_futex_wait &= ~FUTEX_PRIVATE_FLAG;
+ gomp_futex_wake &= ~FUTEX_PRIVATE_FLAG;
+ sys_futex0 (addr, gomp_futex_wake, count);
+ }
+}
+
+static inline void
+cpu_relax (void)
+{
+ __asm volatile ("" : : : "memory");
+}
+
+static inline void
+atomic_write_barrier (void)
+{
+ __asm volatile ("eieio" : : : "memory");
}
--- libgomp/config/linux/bar.c.jj 2007-12-07 14:41:00.000000000 +0100
+++ libgomp/config/linux/bar.c 2008-03-26 15:11:32.000000000 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005 Free Software Foundation, Inc.
+/* Copyright (C) 2005, 2008 Free Software Foundation, Inc.
Contributed by Richard Henderson <rth at redhat.com>.
This file is part of the GNU OpenMP Library (libgomp).
@@ -29,32 +29,29 @@
mechanism for libgomp. This type is private to the library. This
implementation uses atomic instructions and the futex syscall. */
-#include "libgomp.h"
-#include "futex.h"
#include <limits.h>
+#include "wait.h"
void
-gomp_barrier_wait_end (gomp_barrier_t *bar, bool last)
+gomp_barrier_wait_end (gomp_barrier_t *bar, gomp_barrier_state_t state)
{
- if (last)
+ if (__builtin_expect ((state & 1) != 0, 0))
{
- bar->generation++;
- futex_wake (&bar->generation, INT_MAX);
+ /* Next time we'll be awaiting TOTAL threads again. */
+ bar->awaited = bar->total;
+ atomic_write_barrier ();
+ bar->generation += 2;
+ futex_wake ((int *) &bar->generation, INT_MAX);
}
else
{
- unsigned int generation = bar->generation;
-
- gomp_mutex_unlock (&bar->mutex);
+ unsigned int generation = state;
do
- futex_wait (&bar->generation, generation);
+ do_wait ((int *) &bar->generation, generation);
while (bar->generation == generation);
}
-
- if (__sync_add_and_fetch (&bar->arrived, -1) == 0)
- gomp_mutex_unlock (&bar->mutex);
}
void
@@ -62,3 +59,18 @@ gomp_barrier_wait (gomp_barrier_t *barri
{
gomp_barrier_wait_end (barrier, gomp_barrier_wait_start (barrier));
}
+
+/* Like gomp_barrier_wait, except that if the encountering thread
+ is not the last one to hit the barrier, it returns immediately.
+ The intended usage is that a thread which intends to gomp_barrier_destroy
+ this barrier calls gomp_barrier_wait, while all other threads
+ call gomp_barrier_wait_last. When gomp_barrier_wait returns,
+ the barrier can be safely destroyed. */
+
+void
+gomp_barrier_wait_last (gomp_barrier_t *barrier)
+{
+ gomp_barrier_state_t state = gomp_barrier_wait_start (barrier);
+ if (state & 1)
+ gomp_barrier_wait_end (barrier, state);
+}
gcc43-pr35440.patch:
--- NEW FILE gcc43-pr35440.patch ---
2008-03-19 Jakub Jelinek <jakub at redhat.com>
PR c/35440
* c-pretty-print.c (pp_c_initializer_list): Handle CONSTRUCTOR
for all types.
* gcc.dg/pr35440.c: New test.
--- gcc/c-pretty-print.c.jj 2008-02-11 14:48:12.000000000 +0100
+++ gcc/c-pretty-print.c 2008-03-19 14:50:09.000000000 +0100
@@ -1173,6 +1173,12 @@ pp_c_initializer_list (c_pretty_printer
tree type = TREE_TYPE (e);
const enum tree_code code = TREE_CODE (type);
+ if (TREE_CODE (e) == CONSTRUCTOR)
+ {
+ pp_c_constructor_elts (pp, CONSTRUCTOR_ELTS (e));
+ return;
+ }
+
switch (code)
{
case RECORD_TYPE:
@@ -1207,16 +1213,12 @@ pp_c_initializer_list (c_pretty_printer
case VECTOR_TYPE:
if (TREE_CODE (e) == VECTOR_CST)
pp_c_expression_list (pp, TREE_VECTOR_CST_ELTS (e));
- else if (TREE_CODE (e) == CONSTRUCTOR)
- pp_c_constructor_elts (pp, CONSTRUCTOR_ELTS (e));
else
break;
return;
case COMPLEX_TYPE:
- if (TREE_CODE (e) == CONSTRUCTOR)
- pp_c_constructor_elts (pp, CONSTRUCTOR_ELTS (e));
- else if (TREE_CODE (e) == COMPLEX_CST || TREE_CODE (e) == COMPLEX_EXPR)
+ if (TREE_CODE (e) == COMPLEX_CST || TREE_CODE (e) == COMPLEX_EXPR)
{
const bool cst = TREE_CODE (e) == COMPLEX_CST;
pp_expression (pp, cst ? TREE_REALPART (e) : TREE_OPERAND (e, 0));
--- gcc/testsuite/gcc.dg/pr35440.c.jj 2008-03-19 15:57:13.000000000 +0100
+++ gcc/testsuite/gcc.dg/pr35440.c 2008-03-19 15:47:35.000000000 +0100
@@ -0,0 +1,12 @@
+/* PR c/35440 */
+/* { dg-do compile } */
+/* { dg-options "-std=gnu99" } */
+
+struct A {};
+struct B { int i; char j[2]; };
+
+void foo (void)
+{
+ (struct A){}(); /* { dg-error "called object" } */
+ (struct B){ .i = 2, .j[1] = 1 }(); /* { dg-error "called object" } */
+}
gcc43-pr35546.patch:
--- NEW FILE gcc43-pr35546.patch ---
2008-03-25 Jakub Jelinek <jakub at redhat.com>
PR c++/35546
* pt.c (apply_late_template_attributes): Don't call tsubst on
first attribute argument if it is IDENTIFIER_NODE.
* g++.dg/ext/attrib33.C: New test.
--- gcc/cp/pt.c.jj 2008-03-10 17:11:48.000000000 +0100
+++ gcc/cp/pt.c 2008-03-25 21:32:17.000000000 +0100
@@ -6717,9 +6717,29 @@ apply_late_template_attributes (tree *de
{
*p = TREE_CHAIN (t);
TREE_CHAIN (t) = NULL_TREE;
- TREE_VALUE (t)
- = tsubst_expr (TREE_VALUE (t), args, complain, in_decl,
- /*integral_constant_expression_p=*/false);
+ /* If the first attribute argument is an identifier, don't
+ pass it through tsubst. Attributes like mode, format,
+ cleanup and several target specific attributes expect it
+ unmodified. */
+ if (TREE_VALUE (t)
+ && TREE_CODE (TREE_VALUE (t)) == TREE_LIST
+ && TREE_VALUE (TREE_VALUE (t))
+ && (TREE_CODE (TREE_VALUE (TREE_VALUE (t)))
+ == IDENTIFIER_NODE))
+ {
+ tree chain
+ = tsubst_expr (TREE_CHAIN (TREE_VALUE (t)), args, complain,
+ in_decl,
+ /*integral_constant_expression_p=*/false);
+ if (chain != TREE_CHAIN (TREE_VALUE (t)))
+ TREE_VALUE (t)
+ = tree_cons (NULL_TREE, TREE_VALUE (TREE_VALUE (t)),
+ chain);
+ }
+ else
+ TREE_VALUE (t)
+ = tsubst_expr (TREE_VALUE (t), args, complain, in_decl,
+ /*integral_constant_expression_p=*/false);
*q = t;
q = &TREE_CHAIN (t);
}
--- gcc/testsuite/g++.dg/ext/attrib33.C.jj 2008-03-25 23:05:51.000000000 +0100
+++ gcc/testsuite/g++.dg/ext/attrib33.C 2008-03-25 23:06:15.000000000 +0100
@@ -0,0 +1,18 @@
+// PR c++/35546
+// { dg-do compile }
+
+template <int N>
+struct T
+{
+ void foo (char const * ...) __attribute__ ((format (printf,2,3)));
+};
+
+template struct T<3>;
+
+template <typename T>
+struct U
+{
+ typedef T __attribute__((mode (SI))) V;
+};
+
+U<int>::V v;
Index: .cvsignore
===================================================================
RCS file: /cvs/pkgs/rpms/gcc/devel/.cvsignore,v
retrieving revision 1.229
retrieving revision 1.230
diff -u -r1.229 -r1.230
--- .cvsignore 14 Mar 2008 17:51:01 -0000 1.229
+++ .cvsignore 26 Mar 2008 19:56:57 -0000 1.230
@@ -1,2 +1,2 @@
-gcc-4.3.0-20080314.tar.bz2
+gcc-4.3.0-20080326.tar.bz2
fastjar-0.95.tar.gz
Index: gcc43.spec
===================================================================
RCS file: /cvs/pkgs/rpms/gcc/devel/gcc43.spec,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- gcc43.spec 14 Mar 2008 17:58:56 -0000 1.24
+++ gcc43.spec 26 Mar 2008 19:56:57 -0000 1.25
@@ -1,6 +1,6 @@
-%define DATE 20080314
+%define DATE 20080326
%define gcc_version 4.3.0
-%define gcc_release 3
+%define gcc_release 4
%define _unpackaged_files_terminate_build 0
%define multilib_64_archs sparc64 ppc64 s390x x86_64
%define include_gappletviewer 1
@@ -140,6 +140,9 @@
Patch11: gcc43-rh341221.patch
Patch12: gcc43-cpp-pragma.patch
Patch13: gcc43-java-debug-iface-type.patch
+Patch14: gcc43-libgomp-speedup.patch
+Patch15: gcc43-pr35440.patch
+Patch16: gcc43-pr35546.patch
# On ARM EABI systems, we do want -gnueabi to be part of the
# target triple.
@@ -270,6 +273,7 @@
%package -n libgomp
Summary: GCC OpenMP 2.5 shared support library
Group: System Environment/Libraries
+Prereq: /sbin/install-info
%description -n libgomp
This package contains GCC shared support library which is needed
@@ -436,6 +440,9 @@
%patch11 -p0 -b .rh341221~
%patch12 -p0 -b .cpp-pragma~
%patch13 -p0 -b .java-debug-iface-type~
+%patch14 -p0 -b .libgomp-speedup~
+%patch15 -p0 -b .pr35440~
+%patch16 -p0 -b .pr35546~
tar xzf %{SOURCE4}
@@ -1648,6 +1655,18 @@
%doc rpm.doc/changelogs/libmudflap/ChangeLog*
%changelog
+* Wed Mar 26 2008 Jakub Jelinek <jakub at redhat.com> 4.3.0-4
+- update from gcc-4_3-branch
+ - PRs c++/35332, c++/35548, debug/31510, fortran/33295, fortran/34813,
+ libfortran/35617, libfortran/35627, libgomp/35625, libstdc++/35256,
+ libstdc++/35637, middle-end/35593, middle-end/35609,
+ middle-end/35611, middle-end/35616, target/35504, testsuite/34168,
+ testsuite/35621
+- backport libgomp speedups from gomp-3_0-branch (#437268)
+- fix diagnostics with compound literals (PR c/35440)
+- fix C++ handling of late template attributes (PR c++/35546)
+- Prereq install-info in libgomp (#437523)
+
* Fri Mar 14 2008 Jakub Jelinek <jakub at redhat.com> 4.3.0-3
- update from gcc-4_3-branch
- PRs c++/33887, c++/35328, c++/35337, c++/35469, c/35438, c/35439,
Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/gcc/devel/sources,v
retrieving revision 1.231
retrieving revision 1.232
diff -u -r1.231 -r1.232
--- sources 14 Mar 2008 17:51:01 -0000 1.231
+++ sources 26 Mar 2008 19:56:57 -0000 1.232
@@ -1,2 +1,2 @@
-e5fdf4d33dde9d798910296230192fbd gcc-4.3.0-20080314.tar.bz2
+115ce1b73cce124647e910bd5da7fcff gcc-4.3.0-20080326.tar.bz2
92a70f9e56223b653bce0f58f90cf950 fastjar-0.95.tar.gz
More information about the fedora-extras-commits
mailing list