rpms/gcc/devel gcc41-expr_nonzero_p.patch, NONE, 1.1 gcc41-libstdc++-bitset.patch, NONE, 1.1 gcc41-mmintrin.patch, NONE, 1.1 gcc41-pr22275.patch, NONE, 1.1 gcc41-pr25626.patch, NONE, 1.1 gcc41-pr26151.patch, NONE, 1.1 gcc41-pr26209.patch, NONE, 1.1 gcc41-vrp.patch, NONE, 1.1 .cvsignore, 1.133, 1.134 gcc41.spec, 1.34, 1.35 sources, 1.135, 1.136 gcc41-ldbl-default-libstdc++.patch, 1.4, NONE gcc41-ldbl-default.patch, 1.3, NONE gcc41-pr26092.patch, 1.1, NONE gcc41-pr26246.patch, 1.1, NONE
fedora-cvs-commits at redhat.com
fedora-cvs-commits at redhat.com
Tue Feb 14 17:04:39 UTC 2006
- Previous message (by thread): rpms/gstreamer/devel gstreamer.spec,1.46,1.47
- Next message (by thread): rpms/selinux-policy/devel .cvsignore, 1.38, 1.39 Makefile.devel, 1.1, 1.2 policy-20060207.patch, 1.5, 1.6 selinux-policy.spec, 1.106, 1.107 sources, 1.42, 1.43
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: jakub
Update of /cvs/dist/rpms/gcc/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv15783
Modified Files:
.cvsignore gcc41.spec sources
Added Files:
gcc41-expr_nonzero_p.patch gcc41-libstdc++-bitset.patch
gcc41-mmintrin.patch gcc41-pr22275.patch gcc41-pr25626.patch
gcc41-pr26151.patch gcc41-pr26209.patch gcc41-vrp.patch
Removed Files:
gcc41-ldbl-default-libstdc++.patch gcc41-ldbl-default.patch
gcc41-pr26092.patch gcc41-pr26246.patch
Log Message:
4.1.0-0.26
gcc41-expr_nonzero_p.patch:
0 files changed
--- NEW FILE gcc41-expr_nonzero_p.patch ---
2006-02-10 Jeff Law <law at redhat.com>
* fold-const.c (tree_expr_nonzero_p): Fix thinko.
--- gcc/fold-const.c (revision 110848)
+++ gcc/fold-const.c (revision 110849)
@@ -11256,7 +11256,7 @@ tree_expr_nonzero_p (tree t)
tree inner_type = TREE_TYPE (TREE_OPERAND (t, 0));
tree outer_type = TREE_TYPE (t);
- return (TYPE_PRECISION (inner_type) >= TYPE_PRECISION (outer_type)
+ return (TYPE_PRECISION (outer_type) >= TYPE_PRECISION (inner_type)
&& tree_expr_nonzero_p (TREE_OPERAND (t, 0)));
}
break;
gcc41-libstdc++-bitset.patch:
0 files changed
--- NEW FILE gcc41-libstdc++-bitset.patch ---
2006-01-30 Paolo Carlini <pcarlini at suse.de>
* include/std/std_bitset.h (bitset<>::_M_copy_to_string):
Call the internal _Unchecked_set(size_t) instead of set.
--- libstdc++-v3/include/std/std_bitset.h (revision 110410)
+++ libstdc++-v3/include/std/std_bitset.h (working copy)
@@ -1156,7 +1157,7 @@
case '0':
break;
case '1':
- set(__i);
+ _Unchecked_set(__i);
break;
default:
__throw_invalid_argument(__N("bitset::_M_copy_from_string"));
gcc41-mmintrin.patch:
0 files changed
--- NEW FILE gcc41-mmintrin.patch ---
2006-01-27 H.J. Lu <hongjiu.lu at intel.com>
* config/i386/emmintrin.h (_mm_cvtsd_f64): Add missing Intel
intrinsic.
(_mm_cvtsi128_si64): Likewise.
(_mm_cvtsd_si64): Likewise.
(_mm_cvttsd_si64): Likewise.
(_mm_cvtsi64_sd): Likewise.
(_mm_cvtsi64_si128): Likewise.
* config/i386/mmintrin.h (_m_from_int64): Likewise.
(_mm_cvtsi64_m64): Likewise.
(_m_to_int64): Likewise.
(_mm_cvtm64_si64): Likewise.
* config/i386/xmmintrin.h (_mm_cvtss_si64): Likewise.
(_mm_cvttss_si64): Likewise.
(_mm_cvtsi64_ss): Likewise.
(_mm_cvtss_f32): Likewise.
--- gcc/config/i386/mmintrin.h (revision 110310)
+++ gcc/config/i386/mmintrin.h (revision 110311)
@@ -25,7 +26,7 @@
Public License. */
/* Implemented from the specification included in the Intel C++ Compiler
- User Guide and Reference, version 8.0. */
+ User Guide and Reference, version 9.0. */
#ifndef _MMINTRIN_H_INCLUDED
#define _MMINTRIN_H_INCLUDED
@@ -69,13 +70,27 @@ _m_from_int (int __i)
#ifdef __x86_64__
/* Convert I to a __m64 object. */
+
+/* Intel intrinsic. */
+static __inline __m64 __attribute__((__always_inline__))
+_m_from_int64 (long long __i)
+{
+ return (__m64) __i;
+}
+
+static __inline __m64 __attribute__((__always_inline__))
+_mm_cvtsi64_m64 (long long __i)
+{
+ return (__m64) __i;
+}
+
+/* Microsoft intrinsic. */
static __inline __m64 __attribute__((__always_inline__))
_mm_cvtsi64x_si64 (long long __i)
{
return (__m64) __i;
}
-/* Convert I to a __m64 object. */
static __inline __m64 __attribute__((__always_inline__))
_mm_set_pi64x (long long __i)
{
@@ -97,7 +112,22 @@ _m_to_int (__m64 __i)
}
#ifdef __x86_64__
-/* Convert the lower 32 bits of the __m64 object into an integer. */
+/* Convert the __m64 object to a 64bit integer. */
+
+/* Intel intrinsic. */
+static __inline long long __attribute__((__always_inline__))
+_m_to_int64 (__m64 __i)
+{
+ return (long long)__i;
+}
+
+static __inline long long __attribute__((__always_inline__))
+_mm_cvtm64_si64 (__m64 __i)
+{
+ return (long long)__i;
+}
+
+/* Microsoft intrinsic. */
static __inline long long __attribute__((__always_inline__))
_mm_cvtsi64_si64x (__m64 __i)
{
--- gcc/config/i386/xmmintrin.h (revision 110310)
+++ gcc/config/i386/xmmintrin.h (revision 110311)
@@ -25,7 +26,7 @@
Public License. */
/* Implemented from the specification included in the Intel C++ Compiler
- User Guide and Reference, version 8.0. */
+ User Guide and Reference, version 9.0. */
#ifndef _XMMINTRIN_H_INCLUDED
#define _XMMINTRIN_H_INCLUDED
@@ -491,8 +492,17 @@ _mm_cvt_ss2si (__m128 __A)
}
#ifdef __x86_64__
-/* Convert the lower SPFP value to a 32-bit integer according to the current
- rounding mode. */
+/* Convert the lower SPFP value to a 32-bit integer according to the
+ current rounding mode. */
+
+/* Intel intrinsic. */
+static __inline long long __attribute__((__always_inline__))
+_mm_cvtss_si64 (__m128 __A)
+{
+ return __builtin_ia32_cvtss2si64 ((__v4sf) __A);
+}
+
+/* Microsoft intrinsic. */
static __inline long long __attribute__((__always_inline__))
_mm_cvtss_si64x (__m128 __A)
{
@@ -529,6 +539,15 @@ _mm_cvtt_ss2si (__m128 __A)
#ifdef __x86_64__
/* Truncate the lower SPFP value to a 32-bit integer. */
+
+/* Intel intrinsic. */
+static __inline long long __attribute__((__always_inline__))
+_mm_cvttss_si64 (__m128 __A)
+{
+ return __builtin_ia32_cvttss2si64 ((__v4sf) __A);
+}
+
+/* Microsoft intrinsic. */
static __inline long long __attribute__((__always_inline__))
_mm_cvttss_si64x (__m128 __A)
{
@@ -565,6 +584,15 @@ _mm_cvt_si2ss (__m128 __A, int __B)
#ifdef __x86_64__
/* Convert B to a SPFP value and insert it as element zero in A. */
+
+/* Intel intrinsic. */
+static __inline __m128 __attribute__((__always_inline__))
+_mm_cvtsi64_ss (__m128 __A, long long __B)
+{
+ return (__m128) __builtin_ia32_cvtsi642ss ((__v4sf) __A, __B);
+}
+
+/* Microsoft intrinsic. */
static __inline __m128 __attribute__((__always_inline__))
_mm_cvtsi64x_ss (__m128 __A, long long __B)
{
@@ -911,6 +939,12 @@ _mm_store_ss (float *__P, __m128 __A)
*__P = __builtin_ia32_vec_ext_v4sf ((__v4sf)__A, 0);
}
+static __inline float __attribute__((__always_inline__))
+_mm_cvtss_f32 (__m128 __A)
+{
+ return __builtin_ia32_vec_ext_v4sf ((__v4sf)__A, 0);
+}
+
/* Store four SPFP values. The address must be 16-byte aligned. */
static __inline void __attribute__((__always_inline__))
_mm_store_ps (float *__P, __m128 __A)
--- gcc/config/i386/emmintrin.h (revision 110310)
+++ gcc/config/i386/emmintrin.h (revision 110311)
@@ -25,7 +25,7 @@
Public License. */
/* Implemented from the specification included in the Intel C++ Compiler
- User Guide and Reference, version 8.0. */
+ User Guide and Reference, version 9.0. */
#ifndef _EMMINTRIN_H_INCLUDED
#define _EMMINTRIN_H_INCLUDED
@@ -158,6 +158,12 @@ _mm_store_sd (double *__P, __m128d __A)
*__P = __builtin_ia32_vec_ext_v2df (__A, 0);
}
+static __inline double __attribute__((__always_inline__))
+_mm_cvtsd_f64 (__m128d __A)
+{
+ return __builtin_ia32_vec_ext_v2df (__A, 0);
+}
+
static __inline void __attribute__((__always_inline__))
_mm_storel_pd (double *__P, __m128d __A)
{
@@ -199,6 +205,14 @@ _mm_cvtsi128_si32 (__m128i __A)
}
#ifdef __x86_64__
+/* Intel intrinsic. */
+static __inline long long __attribute__((__always_inline__))
+_mm_cvtsi128_si64 (__m128i __A)
+{
+ return __builtin_ia32_vec_ext_v2di ((__v2di)__A, 0);
+}
+
+/* Microsoft intrinsic. */
static __inline long long __attribute__((__always_inline__))
_mm_cvtsi128_si64x (__m128i __A)
{
@@ -789,6 +803,14 @@ _mm_cvtsd_si32 (__m128d __A)
}
#ifdef __x86_64__
+/* Intel intrinsic. */
+static __inline long long __attribute__((__always_inline__))
+_mm_cvtsd_si64 (__m128d __A)
+{
+ return __builtin_ia32_cvtsd2si64 ((__v2df) __A);
+}
+
+/* Microsoft intrinsic. */
static __inline long long __attribute__((__always_inline__))
_mm_cvtsd_si64x (__m128d __A)
{
@@ -803,6 +825,14 @@ _mm_cvttsd_si32 (__m128d __A)
}
#ifdef __x86_64__
+/* Intel intrinsic. */
+static __inline long long __attribute__((__always_inline__))
+_mm_cvttsd_si64 (__m128d __A)
+{
+ return __builtin_ia32_cvttsd2si64 ((__v2df) __A);
+}
+
+/* Microsoft intrinsic. */
static __inline long long __attribute__((__always_inline__))
_mm_cvttsd_si64x (__m128d __A)
{
@@ -823,6 +853,14 @@ _mm_cvtsi32_sd (__m128d __A, int __B)
}
#ifdef __x86_64__
+/* Intel intrinsic. */
+static __inline __m128d __attribute__((__always_inline__))
+_mm_cvtsi64_sd (__m128d __A, long long __B)
+{
+ return (__m128d)__builtin_ia32_cvtsi642sd ((__v2df) __A, __B);
+}
+
+/* Microsoft intrinsic. */
static __inline __m128d __attribute__((__always_inline__))
_mm_cvtsi64x_sd (__m128d __A, long long __B)
{
@@ -1379,6 +1417,14 @@ _mm_cvtsi32_si128 (int __A)
}
#ifdef __x86_64__
+/* Intel intrinsic. */
+static __inline __m128i __attribute__((__always_inline__))
+_mm_cvtsi64_si128 (long long __A)
+{
+ return _mm_set_epi64x (0, __A);
+}
+
+/* Microsoft intrinsic. */
static __inline __m128i __attribute__((__always_inline__))
_mm_cvtsi64x_si128 (long long __A)
{
gcc41-pr22275.patch:
0 files changed
--- NEW FILE gcc41-pr22275.patch ---
2006-02-14 Michael Matz <matz at suse.de>
PR middle-end/22275
* stor-layout.c (layout_decl): Zero-width bitfields aren't
influenced by maximum_field_alignment or DECL_PACKED.
(update_alignment_for_field): Ditto.
(place_field): Ditto.
* doc/extend.texi (<#pragma pack>, <Type Attributes>): Document
this behaviour.
--- gcc/stor-layout.c (revision 110979)
+++ gcc/stor-layout.c (revision 110982)
@@ -337,6 +337,8 @@ layout_decl (tree decl, unsigned int kno
/* For fields, it's a bit more complicated... */
{
bool old_user_align = DECL_USER_ALIGN (decl);
+ bool zero_bitfield = false;
+ unsigned int mfa;
if (DECL_BIT_FIELD (decl))
{
@@ -345,9 +347,9 @@ layout_decl (tree decl, unsigned int kno
/* A zero-length bit-field affects the alignment of the next
field. */
if (integer_zerop (DECL_SIZE (decl))
- && ! DECL_PACKED (decl)
&& ! targetm.ms_bitfield_layout_p (DECL_FIELD_CONTEXT (decl)))
{
+ zero_bitfield = true;
#ifdef PCC_BITFIELD_TYPE_MATTERS
if (PCC_BITFIELD_TYPE_MATTERS)
do_type_align (type, decl);
@@ -408,12 +410,13 @@ layout_decl (tree decl, unsigned int kno
check old_user_align instead. */
if (DECL_PACKED (decl)
&& !old_user_align
+ && !zero_bitfield
&& (DECL_NONADDRESSABLE_P (decl)
|| DECL_SIZE_UNIT (decl) == 0
|| TREE_CODE (DECL_SIZE_UNIT (decl)) == INTEGER_CST))
DECL_ALIGN (decl) = MIN (DECL_ALIGN (decl), BITS_PER_UNIT);
- if (! DECL_USER_ALIGN (decl) && ! DECL_PACKED (decl))
+ if (! DECL_USER_ALIGN (decl) && (! DECL_PACKED (decl) || zero_bitfield))
{
/* Some targets (i.e. i386, VMS) limit struct field alignment
to a lower boundary than alignment of variables unless
@@ -427,9 +430,13 @@ layout_decl (tree decl, unsigned int kno
#endif
}
+ if (zero_bitfield)
+ mfa = initial_max_fld_align * BITS_PER_UNIT;
+ else
+ mfa = maximum_field_alignment;
/* Should this be controlled by DECL_USER_ALIGN, too? */
- if (maximum_field_alignment != 0)
- DECL_ALIGN (decl) = MIN (DECL_ALIGN (decl), maximum_field_alignment);
+ if (mfa != 0)
+ DECL_ALIGN (decl) = MIN (DECL_ALIGN (decl), mfa);
}
/* Evaluate nonconstant size only once, either now or as soon as safe. */
@@ -713,7 +720,16 @@ update_alignment_for_field (record_layou
type_align = ADJUST_FIELD_ALIGN (field, type_align);
#endif
- if (maximum_field_alignment != 0)
+ /* Targets might chose to handle unnamed and hence possibly
+ zero-width bitfield. Those are not influenced by #pragmas
+ or packed attributes. */
+ if (integer_zerop (DECL_SIZE (field)))
+ {
+ if (initial_max_fld_align)
+ type_align = MIN (type_align,
+ initial_max_fld_align * BITS_PER_UNIT);
+ }
+ else if (maximum_field_alignment != 0)
type_align = MIN (type_align, maximum_field_alignment);
else if (DECL_PACKED (field))
type_align = MIN (type_align, BITS_PER_UNIT);
@@ -1175,6 +1191,10 @@ place_field (record_layout_info rli, tre
if (DECL_BIT_FIELD_TYPE (field))
{
unsigned int type_align = TYPE_ALIGN (type);
+ unsigned int mfa = maximum_field_alignment;
+
+ if (integer_zerop (DECL_SIZE (field)))
+ mfa = initial_max_fld_align * BITS_PER_UNIT;
/* Only the MS bitfields use this. We used to also put any kind of
packed bit fields into prev_field, but that makes no sense, because
@@ -1183,8 +1203,8 @@ place_field (record_layout_info rli, tre
are also not fulfilled.
There is no sane value to set rli->remaining_in_alignment to when
a packed bitfield in prev_field is unaligned. */
- if (maximum_field_alignment != 0)
- type_align = MIN (type_align, maximum_field_alignment);
+ if (mfa != 0)
+ type_align = MIN (type_align, mfa);
gcc_assert (rli->prev_field
|| actual_align >= type_align || DECL_PACKED (field)
|| integer_zerop (DECL_SIZE (field))
--- gcc/doc/extend.texi (revision 110979)
+++ gcc/doc/extend.texi (revision 110982)
@@ -3288,9 +3288,10 @@ alignment. See your linker documentatio
@item packed
This attribute, attached to @code{struct} or @code{union} type
-definition, specifies that each member of the structure or union is
-placed to minimize the memory required. When attached to an @code{enum}
-definition, it indicates that the smallest integral type should be used.
+definition, specifies that each member (other than zero-width bitfields)
+of the structure or union is placed to minimize the memory required. When
+attached to an @code{enum} definition, it indicates that the smallest
+integral type should be used.
@opindex fshort-enums
Specifying this attribute for @code{struct} and @code{union} types is
@@ -9423,10 +9424,10 @@ way of knowing that that happened.)
@subsection Structure-Packing Pragmas
For compatibility with Win32, GCC supports a set of @code{#pragma}
-directives which change the maximum alignment of members of structures,
-unions, and classes subsequently defined. The @var{n} value below always
-is required to be a small power of two and specifies the new alignment
-in bytes.
+directives which change the maximum alignment of members of structures
+(other than zero-width bitfields), unions, and classes subsequently
+defined. The @var{n} value below always is required to be a small power
+of two and specifies the new alignment in bytes.
@enumerate
@item @code{#pragma pack(@var{n})} simply sets the new alignment.
gcc41-pr25626.patch:
0 files changed
--- NEW FILE gcc41-pr25626.patch ---
2006-01-15 Paolo Carlini <pcarlini at suse.de>
Gabriel Dos Reis <gdr at integrable-solutions.net>
PR libstdc++/25626
* include/std/std_valarray.h (valarray(const slice_array<>&),
valarray(const gslice_array<>&), valarray(const mask_array<>&),
valarray(const indirect_array<>&), valarray(const _Expr<>&)):
Forward to __valarray_copy_construct, not __valarray_copy.
* include/bits/valarray_array.h
(__valarray_copy_construct(_Array<>, _Array<>, _Array<>, size_t),
__valarray_copy_construct(_Array<>, size_t, size_t, _Array<>)):
New.
--- libstdc++-v3/include/bits/valarray_array.h (revision 109725)
+++ libstdc++-v3/include/bits/valarray_array.h (revision 109726)
@@ -428,6 +428,22 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
_Tp* const __restrict__ _M_data;
};
+
+ // Copy-construct plain array __b[<__n>] from indexed array __a[__i[<__n>]]
+ template<typename _Tp>
+ inline void
+ __valarray_copy_construct(_Array<_Tp> __a, _Array<size_t> __i,
+ _Array<_Tp> __b, size_t __n)
+ { std::__valarray_copy_construct(__a._M_data, __i._M_data,
+ __b._M_data, __n); }
+
+ // Copy-construct plain array __b[<__n>] from strided array __a[<__n : __s>]
+ template<typename _Tp>
+ inline void
+ __valarray_copy_construct(_Array<_Tp> __a, size_t __n, size_t __s,
+ _Array<_Tp> __b)
+ { std::__valarray_copy_construct(__a._M_data, __n, __s, __b._M_data); }
+
template<typename _Tp>
inline void
__valarray_fill (_Array<_Tp> __a, size_t __n, const _Tp& __t)
--- libstdc++-v3/include/std/std_valarray.h (revision 109725)
+++ libstdc++-v3/include/std/std_valarray.h (revision 109726)
@@ -583,7 +583,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
valarray<_Tp>::valarray(const slice_array<_Tp>& __sa)
: _M_size(__sa._M_sz), _M_data(__valarray_get_storage<_Tp>(__sa._M_sz))
{
- std::__valarray_copy
+ std::__valarray_copy_construct
(__sa._M_array, __sa._M_sz, __sa._M_stride, _Array<_Tp>(_M_data));
}
@@ -593,7 +593,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
: _M_size(__ga._M_index.size()),
_M_data(__valarray_get_storage<_Tp>(_M_size))
{
- std::__valarray_copy
+ std::__valarray_copy_construct
(__ga._M_array, _Array<size_t>(__ga._M_index),
_Array<_Tp>(_M_data), _M_size);
}
@@ -603,7 +603,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
valarray<_Tp>::valarray(const mask_array<_Tp>& __ma)
: _M_size(__ma._M_sz), _M_data(__valarray_get_storage<_Tp>(__ma._M_sz))
{
- std::__valarray_copy
+ std::__valarray_copy_construct
(__ma._M_array, __ma._M_mask, _Array<_Tp>(_M_data), _M_size);
}
@@ -612,7 +612,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
valarray<_Tp>::valarray(const indirect_array<_Tp>& __ia)
: _M_size(__ia._M_sz), _M_data(__valarray_get_storage<_Tp>(__ia._M_sz))
{
- std::__valarray_copy
+ std::__valarray_copy_construct
(__ia._M_array, __ia._M_index, _Array<_Tp>(_M_data), _M_size);
}
@@ -620,7 +620,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
inline
valarray<_Tp>::valarray(const _Expr<_Dom, _Tp>& __e)
: _M_size(__e.size()), _M_data(__valarray_get_storage<_Tp>(_M_size))
- { std::__valarray_copy(__e, _M_size, _Array<_Tp>(_M_data)); }
+ { std::__valarray_copy_construct(__e, _M_size, _Array<_Tp>(_M_data)); }
template<typename _Tp>
inline
gcc41-pr26151.patch:
0 files changed
--- NEW FILE gcc41-pr26151.patch ---
2006-02-14 Volker Reichelt <reichelt at igpm.rwth-aachen.de>
PR c++/26151
* parser.c (cp_parser_decl_specifier_seq): Check for duplicate
decl-specifiers. Remove extra check for duplicate 'friend'.
* decl.c (grokdeclarator): Remove check for duplicate
decl-specifiers. Set longlong together with long_p.
--- gcc/cp/decl.c (revision 110979)
+++ gcc/cp/decl.c (revision 110982)
@@ -6662,7 +6662,6 @@ grokdeclarator (const cp_declarator *dec
this value will be NULL_TREE, even if the entity is located at
namespace scope. */
tree in_namespace = NULL_TREE;
- cp_decl_spec ds;
cp_storage_class storage_class;
bool unsigned_p, signed_p, short_p, long_p, thread_p;
bool type_was_error_mark_node = false;
@@ -6671,6 +6670,7 @@ grokdeclarator (const cp_declarator *dec
unsigned_p = declspecs->specs[(int)ds_unsigned];
short_p = declspecs->specs[(int)ds_short];
long_p = declspecs->specs[(int)ds_long];
+ longlong = declspecs->specs[(int)ds_long] >= 2;
thread_p = declspecs->specs[(int)ds_thread];
if (decl_context == FUNCDEF)
@@ -6884,45 +6884,6 @@ grokdeclarator (const cp_declarator *dec
explicit_int = declspecs->explicit_int_p;
explicit_char = declspecs->explicit_char_p;
- /* Check for repeated decl-specifiers. */
- for (ds = ds_first; ds != ds_last; ++ds)
- {
- unsigned count = declspecs->specs[(int)ds];
- if (count < 2)
- continue;
- /* The "long" specifier is a special case because of
- "long long". */
- if (ds == ds_long)
- {
- if (count > 2)
- error ("%<long long long%> is too long for GCC");
- else if (pedantic && !in_system_header && warn_long_long)
- pedwarn ("ISO C++ does not support %<long long%>");
- else
- longlong = 1;
- }
- else if (declspecs->specs[(int)ds] > 1)
- {
- static const char *const decl_spec_names[] = {
- "signed",
- "unsigned",
- "short",
- "long",
- "const",
- "volatile",
- "restrict",
- "inline",
- "virtual",
- "explicit",
- "friend",
- "typedef",
- "__complex",
- "__thread"
- };
- error ("duplicate %qs", decl_spec_names[(int)ds]);
- }
- }
-
#if 0
/* See the code below that used this. */
if (typedef_decl)
--- gcc/cp/parser.c (revision 110979)
+++ gcc/cp/parser.c (revision 110982)
@@ -7290,6 +7290,7 @@ cp_parser_decl_specifier_seq (cp_parser*
int* declares_class_or_enum)
{
bool constructor_possible_p = !parser->in_declarator_p;
+ cp_decl_spec ds;
/* Clear DECL_SPECS. */
clear_decl_specs (decl_specs);
@@ -7324,8 +7325,7 @@ cp_parser_decl_specifier_seq (cp_parser*
/* decl-specifier:
friend */
case RID_FRIEND:
- if (decl_specs->specs[(int) ds_friend]++)
- error ("duplicate %<friend%>");
+ ++decl_specs->specs[(int) ds_friend];
/* Consume the token. */
cp_lexer_consume_token (parser->lexer);
break;
@@ -7491,6 +7491,42 @@ cp_parser_decl_specifier_seq (cp_parser*
flags |= CP_PARSER_FLAGS_OPTIONAL;
}
+ /* Check for repeated decl-specifiers. */
+ for (ds = ds_first; ds != ds_last; ++ds)
+ {
+ unsigned count = decl_specs->specs[(int)ds];
+ if (count < 2)
+ continue;
+ /* The "long" specifier is a special case because of "long long". */
+ if (ds == ds_long)
+ {
+ if (count > 2)
+ error ("%<long long long%> is too long for GCC");
+ else if (pedantic && !in_system_header && warn_long_long)
+ pedwarn ("ISO C++ does not support %<long long%>");
+ }
+ else if (count > 1)
+ {
+ static const char *const decl_spec_names[] = {
+ "signed",
+ "unsigned",
+ "short",
+ "long",
+ "const",
+ "volatile",
+ "restrict",
+ "inline",
+ "virtual",
+ "explicit",
+ "friend",
+ "typedef",
+ "__complex",
+ "__thread"
+ };
+ error ("duplicate %qs", decl_spec_names[(int)ds]);
+ }
+ }
+
/* Don't allow a friend specifier with a class definition. */
if (decl_specs->specs[(int) ds_friend] != 0
&& (*declares_class_or_enum & 2))
gcc41-pr26209.patch:
tree-cfg.c | 5 +----
tree-cfgcleanup.c | 15 ++++++++++-----
tree-ssa-loop.c | 3 ++-
3 files changed, 13 insertions(+), 10 deletions(-)
--- NEW FILE gcc41-pr26209.patch ---
2006-02-13 Zdenek Dvorak <dvorakz at suse.cz>
PR tree-optimization/26209
* tree-ssa-loop.c (pass_scev_cprop): Add TODO_cleanup_cfg.
* tree-cfgcleanup.c (cleanup_control_flow): Remove dead
eh edges.
* tree-cfg.c (replace_uses_by): Do not alter cfg.
--- gcc/tree-cfg.c.jj 2006-02-02 16:39:45.000000000 +0100
+++ gcc/tree-cfg.c 2006-02-14 16:14:08.000000000 +0100
@@ -1324,10 +1324,7 @@ replace_uses_by (tree name, tree val)
if (TREE_CODE (rhs) == ADDR_EXPR)
recompute_tree_invarant_for_addr_expr (rhs);
- /* If the statement could throw and now cannot, we need to prune cfg. */
- if (maybe_clean_or_replace_eh_stmt (stmt, stmt))
- tree_purge_dead_eh_edges (bb_for_stmt (stmt));
-
+ maybe_clean_or_replace_eh_stmt (stmt, stmt);
mark_new_vars_to_rename (stmt);
}
--- gcc/tree-ssa-loop.c.jj 2006-02-02 16:39:51.000000000 +0100
+++ gcc/tree-ssa-loop.c 2006-02-14 16:14:02.000000000 +0100
@@ -303,7 +303,8 @@ struct tree_opt_pass pass_scev_cprop =
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- TODO_dump_func | TODO_update_ssa_only_virtuals,
+ TODO_dump_func | TODO_cleanup_cfg
+ | TODO_update_ssa_only_virtuals,
/* todo_flags_finish */
0 /* letter */
};
--- gcc/tree-cfgcleanup.c.jj 2006-02-02 16:39:41.000000000 +0100
+++ gcc/tree-cfgcleanup.c 2006-02-14 16:14:05.000000000 +0100
@@ -157,19 +157,24 @@ cleanup_control_flow (void)
{
bsi = bsi_last (bb);
+ /* If the last statement of the block could throw and now cannot,
+ we need to prune cfg. */
+ tree_purge_dead_eh_edges (bb);
+
if (bsi_end_p (bsi))
continue;
stmt = bsi_stmt (bsi);
+
if (TREE_CODE (stmt) == COND_EXPR
|| TREE_CODE (stmt) == SWITCH_EXPR)
retval |= cleanup_control_expr_graph (bb, bsi);
-
/* If we had a computed goto which has a compile-time determinable
destination, then we can eliminate the goto. */
- if (TREE_CODE (stmt) == GOTO_EXPR
- && TREE_CODE (GOTO_DESTINATION (stmt)) == ADDR_EXPR
- && TREE_CODE (TREE_OPERAND (GOTO_DESTINATION (stmt), 0)) == LABEL_DECL)
+ else if (TREE_CODE (stmt) == GOTO_EXPR
+ && TREE_CODE (GOTO_DESTINATION (stmt)) == ADDR_EXPR
+ && (TREE_CODE (TREE_OPERAND (GOTO_DESTINATION (stmt), 0))
+ == LABEL_DECL))
{
edge e;
tree label;
@@ -213,7 +218,7 @@ cleanup_control_flow (void)
/* Check for indirect calls that have been turned into
noreturn calls. */
- if (noreturn_call_p (stmt) && remove_fallthru_edge (bb->succs))
+ else if (noreturn_call_p (stmt) && remove_fallthru_edge (bb->succs))
{
free_dominance_info (CDI_DOMINATORS);
retval = true;
gcc41-vrp.patch:
0 files changed
--- NEW FILE gcc41-vrp.patch ---
2006-02-13 Jeff Law <law at redhat.com>
* tree-vrp.c (extract_range_from_binary_expr): Remove handling of
TRUTH_XOR_EPR.
--- gcc/tree-vrp.c (revision 110937)
+++ gcc/tree-vrp.c (revision 110938)
@@ -1278,8 +1278,7 @@ extract_range_from_binary_expr (value_ra
&& code != TRUTH_ANDIF_EXPR
&& code != TRUTH_ORIF_EXPR
&& code != TRUTH_AND_EXPR
- && code != TRUTH_OR_EXPR
- && code != TRUTH_XOR_EXPR)
+ && code != TRUTH_OR_EXPR)
{
set_value_range_to_varying (vr);
return;
@@ -1365,8 +1364,7 @@ extract_range_from_binary_expr (value_ra
if (code == TRUTH_ANDIF_EXPR
|| code == TRUTH_ORIF_EXPR
|| code == TRUTH_AND_EXPR
- || code == TRUTH_OR_EXPR
- || code == TRUTH_XOR_EXPR)
+ || code == TRUTH_OR_EXPR)
{
/* If one of the operands is zero, we know that the whole
expression evaluates zero. */
Index: .cvsignore
===================================================================
RCS file: /cvs/dist/rpms/gcc/devel/.cvsignore,v
retrieving revision 1.133
retrieving revision 1.134
diff -u -r1.133 -r1.134
--- .cvsignore 13 Feb 2006 14:40:12 -0000 1.133
+++ .cvsignore 14 Feb 2006 17:04:22 -0000 1.134
@@ -1 +1 @@
-gcc-4.1.0-20060213.tar.bz2
+gcc-4.1.0-20060214.tar.bz2
Index: gcc41.spec
===================================================================
RCS file: /cvs/dist/rpms/gcc/devel/gcc41.spec,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- gcc41.spec 13 Feb 2006 14:40:12 -0000 1.34
+++ gcc41.spec 14 Feb 2006 17:04:24 -0000 1.35
@@ -1,6 +1,6 @@
-%define DATE 20060213
+%define DATE 20060214
%define gcc_version 4.1.0
-%define gcc_release 0.25
+%define gcc_release 0.26
%define _unpackaged_files_terminate_build 0
%define multilib_64_archs sparc64 ppc64 s390x x86_64
%ifarch %{ix86} x86_64 ia64
@@ -105,12 +105,16 @@
Patch8: gcc41-java-slow_pthread_self.patch
Patch9: gcc41-fortran-finclude.patch
Patch10: gcc41-ppc32-retaddr.patch
-Patch11: gcc41-ldbl-default.patch
-Patch12: gcc41-ldbl-default-libstdc++.patch
-Patch13: gcc41-sparc64-g7.patch
-Patch14: gcc41-fortran-where.patch
-Patch15: gcc41-pr26092.patch
-Patch16: gcc41-pr26246.patch
+Patch11: gcc41-sparc64-g7.patch
+Patch12: gcc41-fortran-where.patch
+Patch13: gcc41-expr_nonzero_p.patch
+Patch14: gcc41-libstdc++-bitset.patch
+Patch15: gcc41-mmintrin.patch
+Patch16: gcc41-pr22275.patch
+Patch17: gcc41-pr25626.patch
+Patch18: gcc41-pr26151.patch
+Patch19: gcc41-pr26209.patch
+Patch20: gcc41-vrp.patch
%define _gnu %{nil}
%ifarch sparc
@@ -400,12 +404,16 @@
%patch8 -p0 -b .java-slow_pthread_self~
%patch9 -p0 -b .fortran-finclude~
%patch10 -p0 -b .ppc32-retaddr~
-%patch11 -p0 -b .ldbl-default~
-%patch12 -p0 -b .ldbl-default-libstdc++~
-%patch13 -p0 -b .sparc64-g7~
-%patch14 -p0 -b .fortran-where~
-%patch15 -p0 -b .pr26092~
-%patch16 -p0 -b .pr26246~
+%patch11 -p0 -b .sparc64-g7~
+%patch12 -p0 -b .fortran-where~
+%patch13 -p0 -b .expr_nonzero_p~
+%patch14 -p0 -b .libstdc++-bitset~
+%patch15 -p0 -b .mmintrin~
+%patch16 -p0 -b .pr22275~
+%patch17 -p0 -b .pr25626~
+%patch18 -p0 -b .pr26151~
+%patch19 -p0 -b .pr26209~
+%patch20 -p0 -b .vrp~
sed -i -e 's/4\.1\.0/4.1.0/' gcc/BASE-VER gcc/version.c
sed -i -e 's/" (Red Hat[^)]*)"/" (Red Hat %{version}-%{gcc_release})"/' gcc/version.c
@@ -1424,6 +1432,23 @@
%doc rpm.doc/changelogs/libmudflap/ChangeLog*
%changelog
+* Tue Feb 14 2006 Jakub Jelinek <jakub at redhat.com> 4.1.0-0.26
+- update from gcc-4_1-branch (-r110903:110978)
+ - PRs fortran/20861, fortran/20871, fortran/25059, fortran/25070,
+ fortran/25083, fortran/25088, fortran/25103, fortran/26038,
+ fortran/26074, inline-asm/16194, libfortran/24685,
+ libfortran/25425, target/26141, tree-optimization/26258
+- ABI change - revert to GCC 3.3 and earlier behaviour of
+ zero sized bitfields in packed structs (Michael Matz, PR middle-end/22275)
+- fix valarrays vs. non-POD (Paolo Carlini, Gabriel Dos Reis,
+ PR libstdc++/25626)
+- fix C++ duplicate declspec diagnostics (Volker Reichelt, PR c++/26151)
+- fix dominance ICE (Zdenek Dvorak, PR tree-optimization/26209)
+- add some new Intel {,e,x}mmintrin.h intrinsics (H.J. Lu)
+- speedup bitset<>::_M_copy_to_string (Paolo Carlini)
+- fix tree_expr_nonzero_p (Jeff Law)
+- fix TRUTH_XOR_EXPR handling in VRP (Jeff Law)
+
* Mon Feb 13 2006 Jakub Jelinek <jakub at redhat.com> 4.1.0-0.25
- update from gcc-4_1-branch (-r110831:110903)
- PRs c++/16405, c++/24996, fortran/14771, fortran/20858, fortran/25756,
Index: sources
===================================================================
RCS file: /cvs/dist/rpms/gcc/devel/sources,v
retrieving revision 1.135
retrieving revision 1.136
diff -u -r1.135 -r1.136
--- sources 13 Feb 2006 14:40:12 -0000 1.135
+++ sources 14 Feb 2006 17:04:24 -0000 1.136
@@ -1 +1 @@
-d1949cf2e79cf95e7f46d7b3e8f1dddc gcc-4.1.0-20060213.tar.bz2
+c492d5acbe9bade087754f9216d87d13 gcc-4.1.0-20060214.tar.bz2
--- gcc41-ldbl-default-libstdc++.patch DELETED ---
--- gcc41-ldbl-default.patch DELETED ---
--- gcc41-pr26092.patch DELETED ---
--- gcc41-pr26246.patch DELETED ---
- Previous message (by thread): rpms/gstreamer/devel gstreamer.spec,1.46,1.47
- Next message (by thread): rpms/selinux-policy/devel .cvsignore, 1.38, 1.39 Makefile.devel, 1.1, 1.2 policy-20060207.patch, 1.5, 1.6 selinux-policy.spec, 1.106, 1.107 sources, 1.42, 1.43
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-cvs-commits
mailing list