merge GCC 4.1-20061021.
This commit is contained in:
parent
1df0b9ba30
commit
d8a42ed9c7
38
gnu/dist/gcc4/configure
vendored
38
gnu/dist/gcc4/configure
vendored
@ -2158,6 +2158,7 @@ acx_cv_cc_gcc_supports_ada=no
|
||||
# given a .adb file, but produce no object file. So we must check
|
||||
# if an object file was really produced to guard against this.
|
||||
errors=`(${CC} -c conftest.adb) 2>&1 || echo failure`
|
||||
echo $errors
|
||||
if test x"$errors" = x && test -f conftest.$ac_objext; then
|
||||
acx_cv_cc_gcc_supports_ada=yes
|
||||
fi
|
||||
@ -6175,15 +6176,34 @@ trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
|
||||
# Transform confdefs.h into DEFS.
|
||||
# Protect against shell expansion while executing Makefile rules.
|
||||
# Protect against Makefile macro expansion.
|
||||
cat > conftest.defs <<\EOF
|
||||
s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g
|
||||
s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g
|
||||
s%\[%\\&%g
|
||||
s%\]%\\&%g
|
||||
s%\$%$$%g
|
||||
EOF
|
||||
DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '`
|
||||
rm -f conftest.defs
|
||||
#
|
||||
# If the first sed substitution is executed (which looks for macros that
|
||||
# take arguments), then we branch to the quote section. Otherwise,
|
||||
# look for a macro that doesn't take arguments.
|
||||
cat >confdef2opt.sed <<\_ACEOF
|
||||
t clear
|
||||
: clear
|
||||
s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g
|
||||
t quote
|
||||
s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g
|
||||
t quote
|
||||
d
|
||||
: quote
|
||||
s,[ `~#$^&*(){}\\|;'"<>?],\\&,g
|
||||
s,\[,\\&,g
|
||||
s,\],\\&,g
|
||||
s,\$,$$,g
|
||||
p
|
||||
_ACEOF
|
||||
# We use echo to avoid assuming a particular line-breaking character.
|
||||
# The extra dot is to prevent the shell from consuming trailing
|
||||
# line-breaks from the sub-command output. A line-break within
|
||||
# single-quotes doesn't work because, if this script is created in a
|
||||
# platform that uses two characters for line-breaks (e.g., DOS), tr
|
||||
# would break.
|
||||
ac_LF_and_DOT=`echo; echo .`
|
||||
DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'`
|
||||
rm -f confdef2opt.sed
|
||||
|
||||
|
||||
# Without the "./", some shells look in PATH for config.status.
|
||||
|
887
gnu/dist/gcc4/gcc/ChangeLog
vendored
887
gnu/dist/gcc4/gcc/ChangeLog
vendored
@ -1,3 +1,772 @@
|
||||
2006-10-19 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* fold-const.c (add_double): Rename to add_double_with_sign.
|
||||
Add 'unsigned_p' parameter and take it into account for the overflow.
|
||||
(mul_double): Rename to mul_double_with_sign.
|
||||
Add 'unsigned_p' parameter and take it into account for the overflow.
|
||||
(fold_div_compare): Call add_double_with_sign instead of add_double
|
||||
and mul_double_with_sign instead of mul_double, passing them the
|
||||
unsignedness of the type.
|
||||
* tree.h (add_double): Macroize.
|
||||
(add_double_with_sign): New prototype.
|
||||
(mul_double): Macroize.
|
||||
(mul_double_with_sign): New prototype.
|
||||
|
||||
2006-10-19 Ira Rosen <irar@il.ibm.com>
|
||||
|
||||
Backport from mainline:
|
||||
2006-08-07 Victor Kaplansky <victork@il.ibm.com>
|
||||
|
||||
PR tree-optimization/26969
|
||||
* tree-vect-analyze.c (vect_analyze_loop_form): Add check of latch
|
||||
with an empty list of PHIs.
|
||||
|
||||
2006-10-18 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
Backport from mainline:
|
||||
2006-08-16 Zdenek Dvorak <dvorakz@suse.cz>
|
||||
|
||||
PR gcov/profile/26570
|
||||
* value-prof.c (static_values): Removed.
|
||||
(tree_find_values_to_profile): Do not set static_values.
|
||||
(find_values_to_profile): Do not free static_values.
|
||||
* profile.c (instrument_values): Do not free the values.
|
||||
(branch_prob): Free the values.
|
||||
|
||||
2006-10-18 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
Backport from mainline:
|
||||
2006-05-11 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
PR debug/26881
|
||||
* Makefile.in (gt-cgraphunit.h): Add.
|
||||
* cgraphunit.c: Include gt-cgraphunit.h.
|
||||
(local_static_output): New static vector.
|
||||
(cgraph_varpool_assemble_decl): Defer outputting debug info
|
||||
for local statics to...
|
||||
(cgraph_varpool_debug_local_statics): ... here.
|
||||
(cgraph_optimize): Use it.
|
||||
|
||||
2006-10-18 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
* except.c (set_nothrow_function_flags): Fix return value.
|
||||
|
||||
2006-10-17 Paul Brook <paul@codesourcery.com>
|
||||
|
||||
Backport from mainline:
|
||||
* config/arm/arm.c (arm_rtx_costs_1): Handle multiply-accumulate.
|
||||
|
||||
2006-10-16 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR target/28960
|
||||
Backport from mainline:
|
||||
2006-08-23 Stuart Hastings <stuart@apple.com>
|
||||
|
||||
PR target/28825
|
||||
* gcc/config/i386/i386.c (ix86_expand_vector_init_duplicate,
|
||||
ix86_expand_vector_init_one_nonzero): Remove TARGET_SSE test.
|
||||
|
||||
2006-10-16 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
Backport from mainline:
|
||||
2006-10-10 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR inline-asm/29119
|
||||
* gimplify.c (gimplify_asm_expr): Mark the gimplified lvalue
|
||||
addressable.
|
||||
|
||||
2006-10-16 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
Backport from mainline:
|
||||
2006-08-13 Alexandre Oliva <aoliva@redhat.com>
|
||||
Andrew Pinski <pinskia@physics.uc.edu>
|
||||
|
||||
PR c/27184
|
||||
* tree.c (build_array_type): Unify array types with
|
||||
unspecified index_type.
|
||||
* c-decl.c (grokdeclarator): Make sure we do not modify a
|
||||
unified incomplete array type.
|
||||
* c-typeck.c (store_init_value): Create distinct type before
|
||||
filling in the index type in an initializer from a compound
|
||||
literal.
|
||||
|
||||
* c-decl.c (grokdeclarator): Remove code where we copy the
|
||||
array type over.
|
||||
|
||||
2006-10-16 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c/29091
|
||||
* varasm.c (output_constant): If TREE_VECTOR_CST_ELTS chain is shorter than
|
||||
the number of vector elements fill the rest with zeros.
|
||||
|
||||
2006-10-16 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR target/25519
|
||||
* doc/extend.texi (X86 Built-in Functions): Fix typos in
|
||||
SSE builtin documentation. Document SSE2 builtins.
|
||||
|
||||
2006-10-15 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
|
||||
|
||||
* pa64-hpux.h (LINK_SPEC): Force __cxa_finalize to be an undefined
|
||||
symbol in the output file for non-shared links when -nostdlib or
|
||||
-nodefaultlibs isn't specified.
|
||||
|
||||
* config.gcc (hppa*64*-*-hpux11*, hppa[12]*-*-hpux11*): Default to
|
||||
posix thread support.
|
||||
|
||||
2006-10-14 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR rtl-optimization/29323
|
||||
* except.c (set_nothrow_function_flags): For functions
|
||||
that do not bind local bail out early.
|
||||
|
||||
2006-10-14 Uros Bizjak <uros@kss-loka.si>
|
||||
|
||||
* config/i386/athlon.md (athlon_fist): Add fisttp.
|
||||
|
||||
2006-10-12 Jie Zhang <jie.zhang@analog.com>
|
||||
|
||||
* config/bfin/bfin.md (eh_return): Call emit_jump_insn instead of
|
||||
emit_insn to emit eh_return_internal instruction.
|
||||
(eh_return_internal): Explicitly set pc.
|
||||
|
||||
2006-10-06 Steve Ellcey <sje@cup.hp.com>
|
||||
|
||||
PR target/28490
|
||||
Backport from mainline
|
||||
2006-09-15 Jim Wilson <wilson@specifix.com>
|
||||
2006-09-19 Steve Ellcey <sje@cup.hp.com>
|
||||
* config/ia64/ia64.c (ia64_legitimate_constant_p): Allow function
|
||||
pointers as legitimate constants. Handle symbol offsets same as
|
||||
they are handled in ia64_expand_move and move_operand.
|
||||
|
||||
2006-10-06 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* tree-loop-linear.c (linear_transform_loops): Don't forget to
|
||||
free DEPENDENCE_RELATIONS and DATAREFS.
|
||||
|
||||
PR target/28924
|
||||
* builtins.c (expand_builtin_sync_operation,
|
||||
expand_builtin_compare_and_swap, expand_builtin_lock_test_and_set):
|
||||
Use convert_to_mode to handle promoted arguments.
|
||||
|
||||
2006-10-05 Uros Bizjak <uros@kss-loka.si>
|
||||
|
||||
* config/i386/sync.md ("sync_add<mode>", "sync_sub<mode>",
|
||||
"sync_ior<mode>", "sync_and<mode>", "sync_xor<mode>"):
|
||||
Use <modeconstraint> instead of "r" as operand 1 constraint.
|
||||
|
||||
2006-10-06 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR tree-optimization/29290
|
||||
* tree-loop-linear.c (linear_transform_loops): Bail if loop_nest has
|
||||
multiple exits.
|
||||
|
||||
PR target/29198
|
||||
* config/i386/i386.c (legitimize_pic_address): Reject TLS symbols.
|
||||
* config/i386/predicates.md (local_symbolic_operand): Likewise.
|
||||
|
||||
2006-10-05 David Edelsohn <edelsohn@gnu.org>
|
||||
|
||||
Backport from mainline
|
||||
2006-09-11 Guenter Roeck <guenter@roeck-us.net>
|
||||
David Edelsohn <edelsohn@gnu.org>
|
||||
|
||||
PR target/27287
|
||||
* config/rs6000/spe.md (frob_df_di): Remove %H.
|
||||
(frob_di_df): Remove %H. Change evmergelo to mr.
|
||||
(frob_di_df_2): Remove %H. Change evldd to two loads.
|
||||
|
||||
2006-10-05 Andrew Pinski <pinskia@physics.uc.edu>
|
||||
|
||||
PR debug/28980
|
||||
* dwarf2out.c (loc_descriptor_from_tree_1): Handle
|
||||
FUNCTION_DECL.
|
||||
|
||||
2006-10-04 Andrew Pinski <pinskia@physics.uc.edu>
|
||||
|
||||
PR c/27490
|
||||
PR c/27489
|
||||
* c-typeck.c (build_compound_expr): If the second expression
|
||||
is an error mark, then just return an error mark instead of
|
||||
creating a COMPOUND_EXPR.
|
||||
|
||||
2006-10-04 Andrew Pinski <pinskia@physics.uc.edu>
|
||||
|
||||
PR tree-opt/28952
|
||||
* tree-vect-transform.c (vectorizable_condition): Move the check
|
||||
for the type after the check for simple condition.
|
||||
|
||||
2006-10-03 Andrew Pinski <pinskia@physics.uc.edu>
|
||||
|
||||
PR middle-end/28862
|
||||
* stor-layout.c (relayout_decl): Don't zero the alignment if it
|
||||
was set by the user.
|
||||
|
||||
2006-10-02 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
Backport from mainline
|
||||
2006-02-20 Angel Nunez Mencias <anunez@de.ibm.com>
|
||||
|
||||
* config/s390/s390.c (legitimize_pic_address): Assertions checking
|
||||
for non tls symbols added.
|
||||
(legitimize_address): Do nothing for PLUS expressions if one of the
|
||||
addends is a tls symbol reference.
|
||||
|
||||
2006-10-02 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c/29154
|
||||
* gimplify.c (gimplify_self_mod_expr): Run inner expression's post
|
||||
side effects after the outer expression's post side effects.
|
||||
|
||||
2006-09-27 Paul Brook <paul@codesourcery.com>
|
||||
|
||||
PR target/29230
|
||||
Backport from mainline.
|
||||
* config/arm/arm.md (arith_adjacentmem): Handle large offsets.
|
||||
|
||||
2006-09-25 Matthias Klose <doko@debian.org>
|
||||
|
||||
* doc/invoke.texi: Add missing full stop.
|
||||
|
||||
2006-09-24 Roger Sayle <roger@eyesopen.com>
|
||||
|
||||
PR debug/29132
|
||||
Backport from mainline
|
||||
* dwarf2out.c (dwarf2out_begin_prologue): Initialise the current label,
|
||||
dw_fde_current_label, to be the start of the function, i.e. the same
|
||||
value as dw_fde_begin.
|
||||
|
||||
2006-09-20 Steven Bosscher <steven@gcc.gnu.org>
|
||||
|
||||
PR middle-end/26983
|
||||
Backport from mainline
|
||||
* builtins.c (expand_builtin_setjmp): Force next_lab to be
|
||||
preserved.
|
||||
|
||||
2006-09-20 Paul Brook <paul@codesourcery.com>
|
||||
|
||||
Backport from mainline.
|
||||
* config/arm/unwind-arm.c (selfrel_offset31): Clear top bit for
|
||||
positive offsets.
|
||||
|
||||
2006-09-18 Roger Sayle <roger@eyesopen.com>
|
||||
|
||||
PR middle-end/4520
|
||||
Backport from mainline
|
||||
* cselib.c (cselib_hash_rtx): Avoid hashing on the address of labels
|
||||
and symbols. Instead use the implementation from cse.c's hash_rtx.
|
||||
|
||||
2006-09-18 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
Backport from mainline:
|
||||
PR tree-optimization/28900
|
||||
* tree-if-conv.c (find_phi_replacement_condition): Gimplify
|
||||
compound conditional before creating COND_EXPR condition.
|
||||
|
||||
2006-09-18 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
Backport from mainline:
|
||||
J"orn Rennecke <joern.rennecke@st.com>
|
||||
Richard Guenther <rguenther@suse.de>
|
||||
Adam Nemet <anemet@caviumnetworks.com>
|
||||
|
||||
PR middle-end/27226
|
||||
* builtins.c (get_pointer_alignment): Handle more forms
|
||||
of base addresses that can be used to derive more precise
|
||||
information about alignment.
|
||||
|
||||
2006-09-15 Uros Bizjak <uros@kss-loka.si>
|
||||
|
||||
PR target/28946
|
||||
* config/i386/i386.md ("*ashldi3_cconly_rex64", "*ashlsi3_cconly",
|
||||
"*ashlhi3_cconly", "*ashlqi3_cconly", "*ashrdi3_one_bit_cconly_rex64",
|
||||
"*ashrdi3_cconly_rex64", "*ashrsi3_one_bit_cconly", "*ashrsi3_cconly",
|
||||
"*ashrhi3_one_bit_cconly", "*ashrhi3_cconly",
|
||||
"*ashrqi3_one_bit_cconly", "*ashrqi3_cconly",
|
||||
"*lshrdi3_cconly_one_bit_rex64", "*lshrdi3_cconly_rex64",
|
||||
"*lshrsi3_one_bit_cconly", "*lshrsi3_cconly",
|
||||
"*lshrhi3_one_bit_cconly", "*lshrhi3_cconly",
|
||||
"*lshrqi2_one_bit_cconly", "*lshrqi2_cconly": New patterns to
|
||||
implement only CC setting effects of shift instructions.
|
||||
|
||||
2006-09-14 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR middle-end/28493
|
||||
* builtins.c (expand_builtin_setjmp_receiver): Clobber
|
||||
hard_frame_pointer_rtx after using it to update the frame pointer.
|
||||
|
||||
2006-09-14 Anatoly Sokolov <aesok@post.ru>
|
||||
|
||||
PR target/26504
|
||||
* config/avr/avr.h (FRAME_POINTER_CFA_OFFSET): Define.
|
||||
|
||||
2006-09-12 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* doc/invoke.texi (mpreferred-stack-boundary): Remove exception
|
||||
for -Os. Update __m128 alignment requirement.
|
||||
|
||||
2006-09-12 Eric Botcazou <ebotcazou@libertysurf.fr>
|
||||
|
||||
PR rtl-optimization/28243
|
||||
* combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
|
||||
the insn to which the note was originally attached.
|
||||
|
||||
2006-09-11 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR target/13685
|
||||
PR target/27537
|
||||
PR target/28621
|
||||
* config/i386/i386.c (override_options): Always default to 16
|
||||
byte stack boundary.
|
||||
|
||||
2006-09-11 Eric Botcazou <ebotcazou@libertysurf.fr>
|
||||
|
||||
PR rtl-optimization/28726
|
||||
* sched-deps.c (sched_analyze_reg): New function extracted from...
|
||||
(sched_analyze_1): ...here. Call it to analyze references to
|
||||
registers. Treat again writes to a stack register as writing to the
|
||||
register.
|
||||
(sched_analyze_2): ...and here. Call it to analyze references to
|
||||
registers. Treat again reads of a stack register as reading the
|
||||
register.
|
||||
|
||||
2006-09-11 Hideki Iwamoto <h-iwamoto@kit.hi-ho.ne.jp>
|
||||
|
||||
* doc/cpp.texi: Fix names of charset options.
|
||||
|
||||
2006-09-10 Roger Sayle <roger@eyesopen.com>
|
||||
Nicolas Setton <setton@adacore.com>
|
||||
|
||||
Backport from mainline
|
||||
* dwarf2out.c (convert_cfa_to_fb_loc_list): Handle DW_CFA_set_loc.
|
||||
|
||||
2006-09-10 Eric Botcazou <ebotcazou@libertysurf.fr>
|
||||
|
||||
PR rtl-optimization/28636
|
||||
* combine.c (force_to_mode): Test for side-effects before
|
||||
substituting by zero.
|
||||
(simplify_shift_const): Likewise for zero or other constants.
|
||||
|
||||
2006-09-10 Richard Sandiford <richard@codesourcery.com>
|
||||
|
||||
PR target/29006
|
||||
* config/mips/mips-protos.h (mips_mem_fits_mode_p): Declare.
|
||||
* config/mips/mips.c (mips_expand_unaligned_store): Use the mode
|
||||
returned by mode_for_size, rather than the mode of src itself,
|
||||
to choose between 32-bit and 64-bit patterns.
|
||||
(mips_mem_fits_mode_p): New function.
|
||||
* config/mips/mips.md (mov_<load>l, mov_<load>r): Use it to check
|
||||
that the size of the source matches the size of the destination.
|
||||
(mov_<store>l, mov_<store>r): Likewise.
|
||||
|
||||
2006-09-10 Richard Sandiford <richard@codesourcery.com>
|
||||
|
||||
PR target/27681
|
||||
|
||||
Backport from mainline:
|
||||
|
||||
2006-05-23 Richard Sandiford <richard@codesourcery.com>
|
||||
|
||||
* libgcc2.c (LIBGCC2_MAX_UNITS_PER_WORD): New macro.
|
||||
(LIBGCC2_UNITS_PER_WORD): Use LIBGCC2_MAX_UNITS_PER_WORD rather than
|
||||
MIN_UNITS_PER_WORD to set the default. Also use it in the guard.
|
||||
|
||||
2006-05-22 Richard Sandiford <richard@codesourcery.com>
|
||||
|
||||
* mklibgcc.in (lib2funcs): Remove _floatdidf from initial assignment.
|
||||
|
||||
2006-05-19 Richard Sandiford <richard@codesourcery.com>
|
||||
|
||||
* libgcc2.c (MIN_UNITS_PER_WORD): Move default definition from
|
||||
libgcc2.h.
|
||||
(LIBGCC2_UNITS_PER_WORD): Provide default definition, using old
|
||||
MIN_UNITS_PER_WORD logic from libgcc2.h. Do nothing if
|
||||
LIBGCC2_UNITS_PER_WORD > MIN_UNITS_PER_WORD.
|
||||
* libgcc2.h (MIN_UNITS_PER_WORD): Remove definition from here.
|
||||
Use LIBGCC2_UNITS_PER_WORD rather than MIN_UNITS_PER_WORD to
|
||||
determine the size of Wtype, etc.
|
||||
* mklibgcc.in (LIB2_SIDITI_CONV_FUNCS): New argument.
|
||||
(swfloatfuncs): New variable.
|
||||
(dwfloatfuncs): Likewise.
|
||||
(lib2funcs): Remove floating-point conversion functions from
|
||||
initial assignment. Use LIB2_SIDITI_CONV_FUNCS to determine
|
||||
the set of conversion routines needed. Allow entries to specify
|
||||
an object name, filename and word size. Update users accordingly.
|
||||
* Makefile.in (libgcc.mk): Pass LIB2_SIDITI_CONV_FUNCS.
|
||||
* config/mips/t-mips (LIB2_SIDITI_CONV_FUNCS): Define.
|
||||
|
||||
Revert:
|
||||
|
||||
2006-02-08 Roger Sayle <roger@eyesopen.com>
|
||||
|
||||
PR target/22209
|
||||
* config/fixtfdi.c: New libgcc source file.
|
||||
* config/fixunstfdi.c: New source file.
|
||||
* config/floatditf.c: New source file.
|
||||
* config/floatunditf.c: New souce file.
|
||||
* config/mips/t-iris6 (LIB2FUNCS_EXTRA): Include the new source
|
||||
files above instead of config/mips/_tilib.c.
|
||||
* config/mips/t-linux64 (LIB2FUNCS_EXTRA): Likewise.
|
||||
|
||||
2006-09-09 Richard Sandiford <richard@codesourcery.com>
|
||||
|
||||
PR rtl-optimization/28634
|
||||
* reorg.c (fill_slots_from_thread): Do not assume A + X - X == A
|
||||
for floating-point modes unless flag_unsafe_math_optimizations.
|
||||
|
||||
2006-09-07 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR middle-end/27724
|
||||
* varasm.c (output_constant): Only strip actual no-op conversions.
|
||||
|
||||
2006-09-06 Matthias Klose <doko@debian.org>
|
||||
|
||||
PR bootstrap/26764
|
||||
PR bootstrap/27334
|
||||
* Makefile.in (s-macro_list): Conform to POSIX rules in single quoted
|
||||
strings.
|
||||
|
||||
2006-09-05 Eric Botcazou <ebotcazou@libertysurf.fr>
|
||||
|
||||
PR rtl-optimization/28386
|
||||
* loop.c (biased_biv_may_wrap_p): Rename to biv_may_wrap_p and
|
||||
remove 'bias' parameter.
|
||||
(maybe_eliminate_biv_1): Adjust for above change.
|
||||
|
||||
2006-09-04 Eric Botcazou <ebotcazou@libertysurf.fr>
|
||||
|
||||
PR rtl-optimization/27616
|
||||
* cse.c (table_size): New static variable.
|
||||
(new_basic_block): Initialize it to 0.
|
||||
(remove_from_table): Decrement it.
|
||||
(insert): Increment it.
|
||||
(fold_rtx_mem_1): New function, renamed from fold_rtx_mem.
|
||||
(fold_rtx_mem): Enforce a cap on the recursion depth. Call
|
||||
fold_rtx_mem_1 if under the cap.
|
||||
(fold_rtx) <RTX_COMM_ARITH>: In the associative case, delay a little
|
||||
the lookup of the equivalent expression and test for equality of the
|
||||
first operand of the equivalent expression before in turn looking up
|
||||
an equivalent constant for the second operand.
|
||||
|
||||
2006-09-01 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
Backport from mainline:
|
||||
PR middle-end/28814
|
||||
* fold-const.c (fold_binary): Fold temporary to correct
|
||||
type before constructing new comparison.
|
||||
|
||||
2006-09-01 Roger Sayle <roger@eyesopen.com>
|
||||
|
||||
PR other/22313
|
||||
* dwarf2out.c (add_fde_cfi): Use a set_loc if the current label is
|
||||
NULL, otherwise use an advance_loc4 to adjust relative to the
|
||||
current label.
|
||||
(output_cfi) <DW_CFA_set_loc>: Update the current label.
|
||||
(dwarf2out_switch_text_section): Reset the current label to avoid
|
||||
using advance_loc4 over section boundaries.
|
||||
|
||||
2006-09-01 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR middle-end/28683
|
||||
* cfgexpand.c (add_reg_br_prob_note): Check if last has exactly
|
||||
3 following insns.
|
||||
|
||||
2006-08-31 Andreas Krebbel <krebbel1@de.ibm.com>
|
||||
|
||||
PR target/24367
|
||||
* config/s390/s390.md ("movsi", "movdi" expander): Accept rtxes like
|
||||
r12 + SYMBOLIC_CONST.
|
||||
|
||||
2006-08-25 Joseph S. Myers <joseph@codesourcery.com>
|
||||
|
||||
PR c/27893
|
||||
* gimplify.c (gimplify_decl_expr, gimplify_init_ctor_preeval):
|
||||
Treat sizes as variable whenever not INTEGER_CST.
|
||||
|
||||
2006-08-25 Fariborz Jahanian <fjahanian@apple.com>
|
||||
|
||||
PR c/28418
|
||||
* c-gimplify.c (gimplify_compound_literal_expr): Don't add
|
||||
variable again if DECL_SEEN_IN_BIND_EXPR_P.
|
||||
|
||||
2006-08-25 Joseph S. Myers <joseph@codesourcery.com>
|
||||
|
||||
PR c/28299
|
||||
* c-decl.c (start_function): Don't try to process prototype
|
||||
information from old declaration that isn't a function.
|
||||
|
||||
2006-08-25 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
PR c/27558
|
||||
Backport:
|
||||
2006-04-20 Jakub Jelinek <jakub@redhat.com>
|
||||
* c-pretty-print.c (pp_c_direct_abstract_declarator): Print
|
||||
TYPE_MAX_VALUE (TYPE_DOMAIN (t)) + 1 for ARRAY_TYPE rather
|
||||
than plain TYPE_MAX_VALUE (TYPE_DOMAIN (t)).
|
||||
|
||||
2006-08-25 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
PR target/27075
|
||||
* config/rs6000/rs6000.c (print_operand): Only use e500 %y syntax
|
||||
for 8 byte objects.
|
||||
|
||||
2006-08-21 Mark Shinwell <shinwell@codesourcery.com>
|
||||
|
||||
* config/arm/pr-support.c (__gnu_unwind_execute): Insert " + 1" in
|
||||
necessary places to pass the correct "number of registers" values
|
||||
to _Unwind_VRS_Pop.
|
||||
|
||||
2006-08-18 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
PR target/27565
|
||||
* config/rs6000/rs6000.h (LOCAL_ALIGNMENT): For SPE, only adjust
|
||||
alignment of SPE vector types.
|
||||
|
||||
2006-08-17 Sebastian Pop <pop@cri.ensmp.fr>
|
||||
|
||||
PR middle-end/25211
|
||||
PR middle-end/20256
|
||||
PR middle-end/26435
|
||||
* tree-loop-linear.c (linear_transform_loops): Don't test perfect_nest_p.
|
||||
Call rewrite_into_loop_closed_ssa only when something changed.
|
||||
* lambda.h (gcc_loopnest_to_lambda_loopnest): Update declaration.
|
||||
* lambda-code.c (can_convert_to_perfect_nest): Declared.
|
||||
(gcc_loopnest_to_lambda_loopnest): Removed need_perfect_nest parameter.
|
||||
Test for perfect_nest_p here. Fix formating.
|
||||
(replace_uses_equiv_to_x_with_y): Fix formating.
|
||||
(stmt_uses_op): Removed.
|
||||
(can_convert_to_perfect_nest): Removed loopivs parameter.
|
||||
Complete the test by checking the scalar dependences.
|
||||
(perfect_nestify): Remove the test for can_convert_to_perfect_nest.
|
||||
Fix formating. Don't copy statements in the inner loop: move them to
|
||||
the inner loop header.
|
||||
|
||||
2006-08-16 Joseph S. Myers <joseph@codesourcery.com>
|
||||
|
||||
PR c/27697
|
||||
* c-typeck.c (build_component_ref): Combine qualifiers of
|
||||
structure or union and field.
|
||||
|
||||
2006-08-15 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
|
||||
|
||||
PR c/28649
|
||||
* c-parser.c (c_parser_compound_statement_nostart): Reset
|
||||
parser->error after each statement.
|
||||
|
||||
2006-08-14 Andrew Pinski <pinskia@gmail.com>
|
||||
|
||||
PR middle-end/28075
|
||||
* tree-inline.c (setup_one_parameter): Strip useless
|
||||
type conversion before adding it to the IR.
|
||||
(declare_return_variable): Likewise.
|
||||
|
||||
2006-08-13 Andrew MacLeod <amacleod@redhat.com>
|
||||
|
||||
PR middle-end/27793
|
||||
* tree-dfa.c (add_referenced_var): Assert DECL_UID is unique for
|
||||
different decls.
|
||||
|
||||
2006-08-13 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/28677
|
||||
Revert:
|
||||
2006-06-06 Andrew MacLeod <amacleod@redhat.com>
|
||||
PR middle-end/27793
|
||||
* tree-dfa.c (referenced_vars_dup_list): New. List of duplicate
|
||||
referenced_variables with matching DECL_UID's.
|
||||
(find_referenced_vars): Make sure duplicate list is empty to start.
|
||||
(add_referenced_var): Add var to duplicate list if required.
|
||||
* tree-ssa.c (delete_tree_ssa): Clear var_ann's on duplicates.
|
||||
* tree-flow.h (referenced_vars_dup_list): External declaration.
|
||||
|
||||
2006-08-13 Matthias Klose <doko@debian.org>
|
||||
|
||||
* doc/invoke.texi: Fix spelling errors.
|
||||
|
||||
2006-08-11 Eric Botcazou <ebotcazou@libertysurf.fr>
|
||||
|
||||
PR rtl-optimization/23454
|
||||
* reorg.c (relax_delay_slots): Update comment.
|
||||
|
||||
2006-08-11 Paolo Bonzini <bonzini@gnu.org>
|
||||
|
||||
PR target/27827
|
||||
* config/i386/i386.md: Add peephole2 to avoid "fld %st"
|
||||
instructions.
|
||||
|
||||
2006-08-11 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/28651
|
||||
* simplify-rtx.c (simplify_const_relational_operation):
|
||||
Simplify A CMP B to A - B CMP 0 only for EQ and NE comparison
|
||||
codes.
|
||||
|
||||
2006-08-05 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
|
||||
|
||||
PR c/27721
|
||||
* c-typeck.c (build_modify_expr): Test earlier for non-lvalues.
|
||||
|
||||
PR c/28136
|
||||
* c-parser.c (c_parser_postfix_expression_after_paren_type): Robustify.
|
||||
|
||||
2006-08-03 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
PR c++/28148
|
||||
* varasm.c (output_constant): Give the front end another chance to
|
||||
expand constants, after stripping NOPs.
|
||||
|
||||
2006-08-03 David Edelsohn <edelsohn@gnu.org>
|
||||
|
||||
Backport from mainline
|
||||
PR target/27566
|
||||
* config/rs6000/rs6000.c (rs6000_legitimize_reload_address): Do
|
||||
not reload a SPE symbol_ref into a lo_sum address.
|
||||
|
||||
2006-08-03 Steve Ellcey <sje@cup.hp.com>
|
||||
|
||||
PR rtl-optimization/28221
|
||||
Backport from mainline.
|
||||
2005-11-30 Nathan Sidwell <nathan@codesourcery.com>
|
||||
* loop-doloop.c (add_test): Only add jump note if we did emit a jump.
|
||||
2006-05-01 Zdenek Dvorak <dvorakz@suse.cz>
|
||||
PR rtl-optimization/27291
|
||||
* loop-doloop.c (add_test, doloop_modify): Handle the case condition
|
||||
is folded to a constant.
|
||||
|
||||
2006-08-03 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
|
||||
|
||||
PR c++/28257
|
||||
PR c++/28259
|
||||
PR c++/28267
|
||||
* toplev.c (compile_file): Return early on errorcount or sorrycount.
|
||||
* cgraphunit.c (cgraph_finalize_compilation_unit): Likewise.
|
||||
(cgraph_optimize): Likewise.
|
||||
|
||||
2006-08-02 Janis Johnson <janis187@us.ibm.com>
|
||||
|
||||
Backport from mainline
|
||||
* doc/sourcebuild.texi (Test Directives): Document dg-shouldfail.
|
||||
|
||||
2006-08-01 Steven Bosscher <steven@gcc.gnu.org>
|
||||
|
||||
PR debug/25468
|
||||
Backport from mainline
|
||||
* config/elfos.h (ASM_OUTPUT_ASCII): Remove 'register' marks.
|
||||
Cache the last found '\0' marker to avoid quadratic behavior.
|
||||
|
||||
2006-07-29 Roger Sayle <roger@eyesopen.com>
|
||||
|
||||
PR middle-end/28473
|
||||
Backport from mainline
|
||||
* convert.c (convert_to_integer): When transforming (T)foo(x) into
|
||||
bar(x) check that bar's result type can represent all the values of T.
|
||||
* builtins.c (fold_fixed_mathfn): When long and long long are the
|
||||
same size, canonicalize llceil*, llfloor*, llround* and llrint*
|
||||
functions to their lceil*, lfloor*, lround* and lrint* forms.
|
||||
|
||||
2006-07-26 David delsohn <edelsohn@gnu.org>
|
||||
|
||||
Backport from mainline
|
||||
2006-07-14 Eliot Dresselhaus <eliot@sonic.net>
|
||||
|
||||
PR target/27287
|
||||
* config/rs6000/spe.md (frob_di_df_2): Add m->r alternative.
|
||||
|
||||
2006-07-06 David Edelsohn <edelsohn@gnu.org>
|
||||
|
||||
PR target/28150
|
||||
* config/rs6000/rs6000.c (rs6000_legitimate_address): Do not allow
|
||||
PRE_{INC,DEC} of TFmode.
|
||||
|
||||
2006-07-06 David Edelsohn <edelsohn@gnu.org>
|
||||
Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
PR target/28170
|
||||
* config/rs6000/rs6000.c (insvdi_rshift_rlwimi_p): Correct shiftop
|
||||
bounds. Simplify.
|
||||
|
||||
2006-07-26 Richard Sandiford <richard@codesourcery.com>
|
||||
|
||||
PR middle-end/28403
|
||||
* optabs.c (expand_doubleword_shift): Wrap the call to
|
||||
do_compare_rtx_and_jump with NO_DEFER_POP and OK_DEFER_POP.
|
||||
|
||||
2006-07-26 Richard Sandiford <richard@codesourcery.com>
|
||||
|
||||
PR middle-end/28402
|
||||
* optabs.c (expand_binop): Pass next_methods rather than methods
|
||||
to expand_doubleword_shift.
|
||||
|
||||
2006-07-25 Zdenek Dvorak <dvorakz@suse.cz>
|
||||
|
||||
* tree-chrec.c (chrec_convert_aggressive): Return NULL on failure.
|
||||
|
||||
2006-07-24 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
Backport from mainline
|
||||
2006-07-17 Zdenek Dvorak <dvorakz@suse.cz>
|
||||
|
||||
* tree-chrec.c (avoid_arithmetics_in_type_p): New.
|
||||
(convert_affine_scev, chrec_convert_aggressive): Use
|
||||
avoid_arithmetics_in_type_p. Do not check for the subtypes
|
||||
separately.
|
||||
|
||||
2006-07-24 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/28238
|
||||
* tree-inline.c (copy_bb): Check if we produced valid
|
||||
gimple copying and substituting a stmt. If not, gimplify
|
||||
it.
|
||||
|
||||
2006-07-24 Toon Moene <toon@moene.indiv.nluug.nl>
|
||||
|
||||
* doc/invoke.texi: Remove mention of f77; Reformat table for
|
||||
inline parameter options correctly; mention that -malign-double
|
||||
is default on x86-64 targets.
|
||||
|
||||
2006-07-24 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/27795
|
||||
PR tree-optimization/27639
|
||||
PR tree-optimization/26719
|
||||
Backport from mainline
|
||||
2006-05-24 Zdenek Dvorak <dvorakz@suse.cz>
|
||||
|
||||
* tree-vrp.c (adjust_range_with_scev): Use scev_direction and adjust
|
||||
call to scev_probably_wraps_p.
|
||||
* tree-ssa-loop-niter.c (compare_trees, convert_step_widening,
|
||||
used_in_pointer_arithmetic_p, convert_step): Removed.
|
||||
(nowrap_type_p): New function.
|
||||
(scev_probably_wraps_p): Rewritten.
|
||||
* tree-scalar-evolution.c (instantiate_parameters_1): Do not call
|
||||
chrec_convert if chrec_convert_aggressive might have been used.
|
||||
* tree-chrec.c (convert_affine_scev, chrec_convert_1,
|
||||
scev_direction): New functions.
|
||||
(chrec_convert): Changed to a wrapper over chrec_convert_1.
|
||||
* tree-ssa-loop-ivopts.c (idx_find_step): Use convert_affine_scev
|
||||
instead of convert_step.
|
||||
* tree-flow.h (scev_probably_wraps_p): Declaration changed.
|
||||
(convert_step): Declaration removed.
|
||||
(convert_affine_scev, nowrap_type_p, scev_direction): Declare.
|
||||
|
||||
2006-07-24 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/28029
|
||||
Backport
|
||||
2006-02-15 Daniel Berlin <dberlin@dberlin.org>
|
||||
|
||||
* tree-ssa-alias.c (get_tmt_for): Don't handle TYPE_READONLY
|
||||
specially here.
|
||||
|
||||
2006-07-24 Roger Sayle <roger@eyesopen.com>
|
||||
|
||||
PR target/28247
|
||||
* gthr-solaris.h: Prototype __gthrw forms of thr_self, mutex_init and
|
||||
mutex_destroy even when !_LIBOOBJC. Remove duplicate prototype of
|
||||
the __gthrw form of thr_keycreate.
|
||||
(__gthread_key_delete): Silence the unused argument warning.
|
||||
|
||||
2006-07-21 Roger Sayle <roger@eyesopen.com>
|
||||
|
||||
PR middle-end/28283
|
||||
@ -7,6 +776,124 @@
|
||||
* config/sh/sh.c (shift_costs): Return MAX_COST to inform the
|
||||
middle-end that DImode shifts need to be synthesized by expand.
|
||||
|
||||
2006-07-20 Richard Henderson <rth@redhat.com>
|
||||
|
||||
PR 27889
|
||||
* tree-nested.c (create_tmp_var_for): Set DECL_COMPLEX_GIMPLE_REG_P
|
||||
if needed.
|
||||
|
||||
2006-07-20 Paul Brook <paul@codesourcery.com>
|
||||
|
||||
Backport from mainline.
|
||||
PR 27363
|
||||
* cse.c (cse_insn): Add destination addresses to hash table. Check if
|
||||
they are invalidated by this instruction.
|
||||
|
||||
2006-07-18 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
|
||||
|
||||
PR c/28286
|
||||
* c-pragma.c (handle_pragma_pack): Handle invalid constants.
|
||||
|
||||
2006-07-18 Andrew Haley <aph@redhat.com>
|
||||
|
||||
PR tree-optimization/19505
|
||||
* tree-cfgcleanup.c (tree_forwarder_block_p): If we have an EH
|
||||
edge leaving this block, make sure that the destination of this
|
||||
block has only one predecessor.
|
||||
|
||||
2006-07-18 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
PR c/26993
|
||||
* c-common.c (handle_weakref_attribute): Ignore attribute in
|
||||
the same conditions the alias attribute is ignored.
|
||||
|
||||
2006-07-16 Eric Botcazou <ebotcazou@libertysurf.fr>
|
||||
|
||||
* doc/install.texi (sparc-sun-solaris2*): Add GMP version number.
|
||||
|
||||
2006-07-12 Paolo Carlini <pcarlini@suse.de>
|
||||
|
||||
PR libstdc++/27878
|
||||
* doc/install.texi (mips-sgi-irix6): Add note about IRIX 6.5.x,
|
||||
x < 19, vs wchar_t support.
|
||||
|
||||
2006-07-12 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/28187
|
||||
* tree-vrp.c (vrp_operand_equal_p): New function.
|
||||
(vrp_bitmap_equal_p): Likewise.
|
||||
(update_value_range): Use them to compare old and new
|
||||
max and min values.
|
||||
|
||||
2006-07-11 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/28162
|
||||
* fold-const.c (fold_binary): For (-A) * (-B) -> A * B
|
||||
make sure to convert the operands to the correct type.
|
||||
|
||||
2006-07-08 Matthias Klose <doko@debian.org>
|
||||
|
||||
* doc/sourcebuild.texi: Fix typo.
|
||||
|
||||
2006-07-05 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/13983
|
||||
PR c++/17519
|
||||
* stor-layout.c (finish_record_layout): Copy TYPE_PACKED to variants.
|
||||
|
||||
2006-07-04 Paolo Bonzini <bonzini@gnu.org>
|
||||
|
||||
PR tree-optimization/28218
|
||||
|
||||
* tree-ssa-math-opts.c (execute_cse_reciprocals): Fix calls
|
||||
to calculate and free the dominator information.
|
||||
|
||||
2006-07-04 Peter O'Gorman <peter@pogma.com>
|
||||
|
||||
* mklibgcc.in: chmod 644 before ranlib during install.
|
||||
|
||||
2006-07-04 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR middle-end/26991
|
||||
Backport from mainline
|
||||
2006-02-16 Bernd Schmidt <bernd.schmidt@analog.com>
|
||||
|
||||
PR rtl-optimization/25636
|
||||
* local-alloc.c (update_equiv_regs): Lose a bogus rtx_equal_p test
|
||||
when deciding whether an insn is an initializing insn.
|
||||
|
||||
2006-07-04 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
PR target/28207
|
||||
* config/rs6000/rs6000.c (function_arg_boundary): Double-word align
|
||||
128-bit IBM long doubles for ABI_V4.
|
||||
|
||||
2006-07-03 Pete Steinmetz <steinmtz@us.ibm.com>
|
||||
|
||||
Backport from mainline
|
||||
* doc/invoke.texi: Add cpu_type power6.
|
||||
* config.gcc: Add cpu_type power6.
|
||||
* config/rs6000/rs6000.c (rs6000_override_options): Alias power6
|
||||
to power5+ with Altivec.
|
||||
* config/rs6000/aix52.h (ASM_CPU_SPEC): Add power6.
|
||||
* config/rs6000/rs6000.h (ASM_CPU_SPEC): Add power6.
|
||||
|
||||
2006-07-01 Roger Sayle <roger@eyesopen.com>
|
||||
|
||||
PR middle-end/27428
|
||||
* c-lex.c (c_lex_with_flags) <CPP_N_INVALID>: Increment errorcount
|
||||
to indicate the cpplib has issued an error message for us.
|
||||
|
||||
2006-07-01 Martin Michlmayr <tbm@cyrius.com>
|
||||
|
||||
* doc/gcov.texi (Invoking Gcov): Add a missing word.
|
||||
|
||||
2006-06-28 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/27768
|
||||
* tree-ssa-alias.c (compute_flow_insensitive_aliasing): Add
|
||||
may_aliases already in the tag's annotations to the bitmap.
|
||||
|
||||
2006-06-25 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
PR middle-end/28151
|
||||
|
12
gnu/dist/gcc4/gcc/Makefile.in
vendored
12
gnu/dist/gcc4/gcc/Makefile.in
vendored
@ -1339,6 +1339,7 @@ libgcc.mk: config.status Makefile mklibgcc $(LIB2ADD) $(LIB2ADD_ST) specs \
|
||||
LIB2ADDEHSTATIC='$(LIB2ADDEHSTATIC)' \
|
||||
LIB2ADDEHSHARED='$(LIB2ADDEHSHARED)' \
|
||||
LIB2ADDEHDEP='$(LIB2ADDEHDEP)' \
|
||||
LIB2_SIDITI_CONV_FUNCS='$(LIB2_SIDITI_CONV_FUNCS)' \
|
||||
LIBUNWIND='$(LIBUNWIND)' \
|
||||
LIBUNWINDDEP='$(LIBUNWINDDEP)' \
|
||||
SHLIBUNWIND_LINK='$(SHLIBUNWIND_LINK)' \
|
||||
@ -2178,7 +2179,8 @@ cgraphunit.o : cgraphunit.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
||||
$(TREE_H) langhooks.h tree-inline.h toplev.h $(FLAGS_H) $(GGC_H) \
|
||||
$(TARGET_H) $(CGRAPH_H) intl.h pointer-set.h function.h $(TREE_GIMPLE_H) \
|
||||
$(TREE_FLOW_H) tree-pass.h $(C_COMMON_H) debug.h $(DIAGNOSTIC_H) \
|
||||
$(FIBHEAP_H) output.h $(PARAMS_H) $(RTL_H) $(TIMEVAR_H) ipa-prop.h
|
||||
$(FIBHEAP_H) output.h $(PARAMS_H) $(RTL_H) $(TIMEVAR_H) ipa-prop.h \
|
||||
gt-cgraphunit.h
|
||||
ipa.o : ipa.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(CGRAPH_H)
|
||||
ipa-prop.o : ipa-prop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
|
||||
langhooks.h $(GGC_H) target.h $(CGRAPH_H) ipa-prop.h \
|
||||
@ -2747,7 +2749,7 @@ GTFILES = $(srcdir)/input.h $(srcdir)/coretypes.h \
|
||||
$(srcdir)/cselib.h $(srcdir)/basic-block.h $(srcdir)/cgraph.h \
|
||||
$(srcdir)/c-common.h $(srcdir)/c-tree.h $(srcdir)/reload.h \
|
||||
$(srcdir)/alias.c $(srcdir)/bitmap.c $(srcdir)/cselib.c $(srcdir)/cgraph.c \
|
||||
$(srcdir)/ipa-prop.c $(srcdir)/ipa-cp.c\
|
||||
$(srcdir)/ipa-prop.c $(srcdir)/ipa-cp.c $(srcdir)/cgraphunit.c \
|
||||
$(srcdir)/dbxout.c $(srcdir)/dwarf2out.c $(srcdir)/dwarf2asm.c \
|
||||
$(srcdir)/dojump.c $(srcdir)/tree-profile.c \
|
||||
$(srcdir)/emit-rtl.c $(srcdir)/except.c $(srcdir)/explow.c $(srcdir)/expr.c \
|
||||
@ -2789,7 +2791,7 @@ gt-tree-profile.h gt-tree-ssa-address.h \
|
||||
gt-tree-ssanames.h gt-tree-iterator.h gt-gimplify.h \
|
||||
gt-tree-phinodes.h gt-tree-nested.h \
|
||||
gt-tree-ssa-operands.h gt-tree-ssa-propagate.h \
|
||||
gt-tree-ssa-structalias.h \
|
||||
gt-tree-ssa-structalias.h gt-cgraphunit.h \
|
||||
gt-stringpool.h gt-targhooks.h : s-gtype ; @true
|
||||
|
||||
define echo_quoted_to_gtyp
|
||||
@ -3158,8 +3160,8 @@ install-gcc-tooldir:
|
||||
macro_list: s-macro_list; @true
|
||||
s-macro_list : $(GCC_PASSES)
|
||||
echo | $(GCC_FOR_TARGET) -E -dM - | \
|
||||
sed -n 's/^#define \([^_][a-zA-Z0-9_]*\).*/\1/p ; \
|
||||
s/^#define \(_[^_A-Z][a-zA-Z0-9_]*\).*/\1/p' | \
|
||||
sed -n -e 's/^#define \([^_][a-zA-Z0-9_]*\).*/\1/p' \
|
||||
-e 's/^#define \(_[^_A-Z][a-zA-Z0-9_]*\).*/\1/p' | \
|
||||
sort -u > tmp-macro_list
|
||||
$(SHELL) $(srcdir)/../move-if-change tmp-macro_list macro_list
|
||||
$(STAMP) s-macro_list
|
||||
|
114
gnu/dist/gcc4/gcc/builtins.c
vendored
114
gnu/dist/gcc4/gcc/builtins.c
vendored
@ -276,16 +276,44 @@ get_pointer_alignment (tree exp, unsigned int max_align)
|
||||
/* See what we are pointing at and look at its alignment. */
|
||||
exp = TREE_OPERAND (exp, 0);
|
||||
inner = max_align;
|
||||
while (handled_component_p (exp))
|
||||
if (handled_component_p (exp))
|
||||
{
|
||||
/* Fields in a structure can be packed, honour DECL_ALIGN
|
||||
of the FIELD_DECL. For all other references the conservative
|
||||
alignment is the element type alignment. */
|
||||
if (TREE_CODE (exp) == COMPONENT_REF)
|
||||
inner = MIN (inner, DECL_ALIGN (TREE_OPERAND (exp, 1)));
|
||||
else
|
||||
inner = MIN (inner, TYPE_ALIGN (TREE_TYPE (exp)));
|
||||
exp = TREE_OPERAND (exp, 0);
|
||||
HOST_WIDE_INT bitsize, bitpos;
|
||||
tree offset;
|
||||
enum machine_mode mode;
|
||||
int unsignedp, volatilep;
|
||||
|
||||
exp = get_inner_reference (exp, &bitsize, &bitpos, &offset,
|
||||
&mode, &unsignedp, &volatilep, true);
|
||||
if (bitpos)
|
||||
inner = MIN (inner, (unsigned) (bitpos & -bitpos));
|
||||
if (offset && TREE_CODE (offset) == PLUS_EXPR
|
||||
&& host_integerp (TREE_OPERAND (offset, 1), 1))
|
||||
{
|
||||
/* Any overflow in calculating offset_bits won't change
|
||||
the alignment. */
|
||||
unsigned offset_bits
|
||||
= ((unsigned) tree_low_cst (TREE_OPERAND (offset, 1), 1)
|
||||
* BITS_PER_UNIT);
|
||||
|
||||
if (offset_bits)
|
||||
inner = MIN (inner, (offset_bits & -offset_bits));
|
||||
offset = TREE_OPERAND (offset, 0);
|
||||
}
|
||||
if (offset && TREE_CODE (offset) == MULT_EXPR
|
||||
&& host_integerp (TREE_OPERAND (offset, 1), 1))
|
||||
{
|
||||
/* Any overflow in calculating offset_factor won't change
|
||||
the alignment. */
|
||||
unsigned offset_factor
|
||||
= ((unsigned) tree_low_cst (TREE_OPERAND (offset, 1), 1)
|
||||
* BITS_PER_UNIT);
|
||||
|
||||
if (offset_factor)
|
||||
inner = MIN (inner, (offset_factor & -offset_factor));
|
||||
}
|
||||
else if (offset)
|
||||
inner = MIN (inner, BITS_PER_UNIT);
|
||||
}
|
||||
if (TREE_CODE (exp) == FUNCTION_DECL)
|
||||
align = FUNCTION_BOUNDARY;
|
||||
@ -295,6 +323,9 @@ get_pointer_alignment (tree exp, unsigned int max_align)
|
||||
else if (CONSTANT_CLASS_P (exp))
|
||||
align = MIN (inner, (unsigned)CONSTANT_ALIGNMENT (exp, align));
|
||||
#endif
|
||||
else if (TREE_CODE (exp) == VIEW_CONVERT_EXPR
|
||||
|| TREE_CODE (exp) == INDIRECT_REF)
|
||||
align = MIN (TYPE_ALIGN (TREE_TYPE (exp)), inner);
|
||||
else
|
||||
align = MIN (align, inner);
|
||||
return MIN (align, max_align);
|
||||
@ -647,7 +678,12 @@ expand_builtin_setjmp_receiver (rtx receiver_label ATTRIBUTE_UNUSED)
|
||||
#ifdef HAVE_nonlocal_goto
|
||||
if (! HAVE_nonlocal_goto)
|
||||
#endif
|
||||
emit_move_insn (virtual_stack_vars_rtx, hard_frame_pointer_rtx);
|
||||
{
|
||||
emit_move_insn (virtual_stack_vars_rtx, hard_frame_pointer_rtx);
|
||||
/* This might change the hard frame pointer in ways that aren't
|
||||
apparent to early optimization passes, so force a clobber. */
|
||||
emit_insn (gen_rtx_CLOBBER (VOIDmode, hard_frame_pointer_rtx));
|
||||
}
|
||||
|
||||
#if ARG_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM
|
||||
if (fixed_regs[ARG_POINTER_REGNUM])
|
||||
@ -728,6 +764,12 @@ expand_builtin_setjmp (tree arglist, rtx target)
|
||||
|
||||
emit_label (next_lab);
|
||||
|
||||
/* Because setjmp and longjmp are not represented in the CFG, a cfgcleanup
|
||||
may find that the basic block starting with NEXT_LAB is unreachable.
|
||||
The whole block, along with NEXT_LAB, would be removed (see PR26983).
|
||||
Make sure that never happens. */
|
||||
LABEL_PRESERVE_P (next_lab) = 1;
|
||||
|
||||
expand_builtin_setjmp_receiver (next_lab);
|
||||
|
||||
/* Set TARGET to one. */
|
||||
@ -5507,6 +5549,8 @@ expand_builtin_sync_operation (enum machine_mode mode, tree arglist,
|
||||
|
||||
arglist = TREE_CHAIN (arglist);
|
||||
val = expand_expr (TREE_VALUE (arglist), NULL, mode, EXPAND_NORMAL);
|
||||
/* If VAL is promoted to a wider mode, convert it back to MODE. */
|
||||
val = convert_to_mode (mode, val, 1);
|
||||
|
||||
if (ignore)
|
||||
return expand_sync_operation (mem, val, code);
|
||||
@ -5530,9 +5574,13 @@ expand_builtin_compare_and_swap (enum machine_mode mode, tree arglist,
|
||||
|
||||
arglist = TREE_CHAIN (arglist);
|
||||
old_val = expand_expr (TREE_VALUE (arglist), NULL, mode, EXPAND_NORMAL);
|
||||
/* If OLD_VAL is promoted to a wider mode, convert it back to MODE. */
|
||||
old_val = convert_to_mode (mode, old_val, 1);
|
||||
|
||||
arglist = TREE_CHAIN (arglist);
|
||||
new_val = expand_expr (TREE_VALUE (arglist), NULL, mode, EXPAND_NORMAL);
|
||||
/* If NEW_VAL is promoted to a wider mode, convert it back to MODE. */
|
||||
new_val = convert_to_mode (mode, new_val, 1);
|
||||
|
||||
if (is_bool)
|
||||
return expand_bool_compare_and_swap (mem, old_val, new_val, target);
|
||||
@ -5557,6 +5605,8 @@ expand_builtin_lock_test_and_set (enum machine_mode mode, tree arglist,
|
||||
|
||||
arglist = TREE_CHAIN (arglist);
|
||||
val = expand_expr (TREE_VALUE (arglist), NULL, mode, EXPAND_NORMAL);
|
||||
/* If VAL is promoted to a wider mode, convert it back to MODE. */
|
||||
val = convert_to_mode (mode, val, 1);
|
||||
|
||||
return expand_sync_lock_test_and_set (mem, val, target);
|
||||
}
|
||||
@ -6885,6 +6935,50 @@ fold_fixed_mathfn (tree fndecl, tree arglist)
|
||||
return build_function_call_expr (decl, arglist);
|
||||
}
|
||||
}
|
||||
|
||||
/* Canonicalize llround (x) to lround (x) on LP64 targets where
|
||||
sizeof (long long) == sizeof (long). */
|
||||
if (TYPE_PRECISION (long_long_integer_type_node)
|
||||
== TYPE_PRECISION (long_integer_type_node))
|
||||
{
|
||||
tree newfn = NULL_TREE;
|
||||
switch (fcode)
|
||||
{
|
||||
case BUILT_IN_LLCEIL:
|
||||
case BUILT_IN_LLCEILF:
|
||||
case BUILT_IN_LLCEILL:
|
||||
newfn = mathfn_built_in (TREE_TYPE (arg), BUILT_IN_LCEIL);
|
||||
break;
|
||||
|
||||
case BUILT_IN_LLFLOOR:
|
||||
case BUILT_IN_LLFLOORF:
|
||||
case BUILT_IN_LLFLOORL:
|
||||
newfn = mathfn_built_in (TREE_TYPE (arg), BUILT_IN_LFLOOR);
|
||||
break;
|
||||
|
||||
case BUILT_IN_LLROUND:
|
||||
case BUILT_IN_LLROUNDF:
|
||||
case BUILT_IN_LLROUNDL:
|
||||
newfn = mathfn_built_in (TREE_TYPE (arg), BUILT_IN_LROUND);
|
||||
break;
|
||||
|
||||
case BUILT_IN_LLRINT:
|
||||
case BUILT_IN_LLRINTF:
|
||||
case BUILT_IN_LLRINTL:
|
||||
newfn = mathfn_built_in (TREE_TYPE (arg), BUILT_IN_LRINT);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (newfn)
|
||||
{
|
||||
tree newcall = build_function_call_expr (newfn, arglist);
|
||||
return fold_convert (TREE_TYPE (TREE_TYPE (fndecl)), newcall);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
8
gnu/dist/gcc4/gcc/config.gcc
vendored
8
gnu/dist/gcc4/gcc/config.gcc
vendored
@ -296,7 +296,7 @@ powerpc*-*-*)
|
||||
extra_headers="ppc-asm.h altivec.h spe.h"
|
||||
need_64bit_hwint=yes
|
||||
case x$with_cpu in
|
||||
xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[345]|xrs64a)
|
||||
xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[3456]|xrs64a)
|
||||
cpu_is_64bit=yes
|
||||
;;
|
||||
esac
|
||||
@ -951,7 +951,7 @@ hppa*64*-*-hpux11*)
|
||||
extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o \
|
||||
libgcc_stub.a"
|
||||
case x${enable_threads} in
|
||||
xyes | xposix )
|
||||
x | xyes | xposix )
|
||||
thread_file=posix
|
||||
;;
|
||||
esac
|
||||
@ -980,7 +980,7 @@ hppa[12]*-*-hpux11*)
|
||||
tmake_file="$tmake_file pa/t-slibgcc-dwarf-ver"
|
||||
fi
|
||||
case x${enable_threads} in
|
||||
xyes | xposix )
|
||||
x | xyes | xposix )
|
||||
thread_file=posix
|
||||
;;
|
||||
esac
|
||||
@ -2729,7 +2729,7 @@ case "${target}" in
|
||||
eval "with_$which=405"
|
||||
;;
|
||||
"" | common \
|
||||
| power | power[2345] | powerpc | powerpc64 \
|
||||
| power | power[23456] | powerpc | powerpc64 \
|
||||
| rios | rios1 | rios2 | rsc | rsc1 | rs64a \
|
||||
| 401 | 403 | 405 | 405fp | 440 | 440fp | 505 \
|
||||
| 601 | 602 | 603 | 603e | ec603e | 604 \
|
||||
|
18
gnu/dist/gcc4/gcc/config/fixtfdi.c
vendored
18
gnu/dist/gcc4/gcc/config/fixtfdi.c
vendored
@ -1,18 +0,0 @@
|
||||
/* Public domain. */
|
||||
#if __LDBL_MANT_DIG__ == 106 || __LDBL_MANT_DIG__ == 113
|
||||
typedef int DItype __attribute__ ((mode (DI)));
|
||||
typedef float TFtype __attribute__ ((mode (TF)));
|
||||
|
||||
DItype __fixtfdi (TFtype);
|
||||
DItype __fixunstfdi (TFtype);
|
||||
|
||||
|
||||
DItype
|
||||
__fixtfdi (TFtype x)
|
||||
{
|
||||
if (x < 0)
|
||||
return - __fixunstfdi (-x);
|
||||
return __fixunstfdi (x);
|
||||
}
|
||||
|
||||
#endif
|
35
gnu/dist/gcc4/gcc/config/fixunstfdi.c
vendored
35
gnu/dist/gcc4/gcc/config/fixunstfdi.c
vendored
@ -1,35 +0,0 @@
|
||||
/* Public domain. */
|
||||
#if __LDBL_MANT_DIG__ == 106 || __LDBL_MANT_DIG__ == 113
|
||||
typedef int DItype __attribute__ ((mode (DI)));
|
||||
typedef int SItype __attribute__ ((mode (SI)));
|
||||
typedef unsigned int UDItype __attribute__ ((mode (DI)));
|
||||
typedef unsigned int USItype __attribute__ ((mode (SI)));
|
||||
typedef float TFtype __attribute__ ((mode (TF)));
|
||||
|
||||
DItype __fixunstfdi (TFtype);
|
||||
|
||||
DItype
|
||||
__fixunstfdi (TFtype a)
|
||||
{
|
||||
if (a < 0)
|
||||
return 0;
|
||||
|
||||
/* Compute high word of result, as a flonum. */
|
||||
const TFtype b = (a / (((UDItype) 1) << (sizeof (SItype) * 8)));
|
||||
/* Convert that to fixed (but not to DItype!),
|
||||
and shift it into the high word. */
|
||||
UDItype v = (USItype) b;
|
||||
v <<= (sizeof (SItype) * 8);
|
||||
/* Remove high part from the TFtype, leaving the low part as flonum. */
|
||||
a -= (TFtype) v;
|
||||
/* Convert that to fixed (but not to DItype!) and add it in.
|
||||
Sometimes A comes out negative. This is significant, since
|
||||
A has more bits than a long int does. */
|
||||
if (a < 0)
|
||||
v -= (USItype) (-a);
|
||||
else
|
||||
v += (USItype) a;
|
||||
return v;
|
||||
}
|
||||
|
||||
#endif
|
25
gnu/dist/gcc4/gcc/config/floatditf.c
vendored
25
gnu/dist/gcc4/gcc/config/floatditf.c
vendored
@ -1,25 +0,0 @@
|
||||
/* Public domain. */
|
||||
#if __LDBL_MANT_DIG__ == 106 || __LDBL_MANT_DIG__ == 113
|
||||
typedef int DItype __attribute__ ((mode (DI)));
|
||||
typedef int SItype __attribute__ ((mode (SI)));
|
||||
typedef unsigned int UDItype __attribute__ ((mode (DI)));
|
||||
typedef unsigned int USItype __attribute__ ((mode (SI)));
|
||||
typedef float DFtype __attribute__ ((mode (DF)));
|
||||
typedef float TFtype __attribute__ ((mode (TF)));
|
||||
|
||||
TFtype __floatditf (UDItype);
|
||||
|
||||
TFtype
|
||||
__floatditf (UDItype u)
|
||||
{
|
||||
DFtype dh, dl;
|
||||
|
||||
dh = (SItype) (u >> (sizeof (SItype) * 8));
|
||||
dh *= 2.0 * (((UDItype) 1) << ((sizeof (SItype) * 8) - 1));
|
||||
dl = (USItype) (u & ((((UDItype) 1) << (sizeof (SItype) * 8)) - 1));
|
||||
|
||||
return (TFtype) dh + (TFtype) dl;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
25
gnu/dist/gcc4/gcc/config/floatunditf.c
vendored
25
gnu/dist/gcc4/gcc/config/floatunditf.c
vendored
@ -1,25 +0,0 @@
|
||||
/* Public domain. */
|
||||
#if __LDBL_MANT_DIG__ == 106 || __LDBL_MANT_DIG__ == 113
|
||||
typedef int DItype __attribute__ ((mode (DI)));
|
||||
typedef int SItype __attribute__ ((mode (SI)));
|
||||
typedef unsigned int UDItype __attribute__ ((mode (DI)));
|
||||
typedef unsigned int USItype __attribute__ ((mode (SI)));
|
||||
typedef float DFtype __attribute__ ((mode (DF)));
|
||||
typedef float TFtype __attribute__ ((mode (TF)));
|
||||
|
||||
TFtype __floatunditf (UDItype);
|
||||
|
||||
TFtype
|
||||
__floatunditf (UDItype u)
|
||||
{
|
||||
DFtype dh, dl;
|
||||
|
||||
dh = (USItype) (u >> (sizeof (SItype) * 8));
|
||||
dh *= 2.0 * (((UDItype) 1) << ((sizeof (SItype) * 8) - 1));
|
||||
dl = (USItype) (u & ((((UDItype) 1) << (sizeof (SItype) * 8)) - 1));
|
||||
|
||||
return (TFtype) dh + (TFtype) dl;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
20
gnu/dist/gcc4/gcc/config/mips/mips.c
vendored
20
gnu/dist/gcc4/gcc/config/mips/mips.c
vendored
@ -4439,13 +4439,15 @@ bool
|
||||
mips_expand_unaligned_store (rtx dest, rtx src, unsigned int width, int bitpos)
|
||||
{
|
||||
rtx left, right;
|
||||
enum machine_mode mode;
|
||||
|
||||
if (!mips_get_unaligned_mem (&dest, width, bitpos, &left, &right))
|
||||
return false;
|
||||
|
||||
src = gen_lowpart (mode_for_size (width, MODE_INT, 0), src);
|
||||
mode = mode_for_size (width, MODE_INT, 0);
|
||||
src = gen_lowpart (mode, src);
|
||||
|
||||
if (GET_MODE (src) == DImode)
|
||||
if (mode == DImode)
|
||||
{
|
||||
emit_insn (gen_mov_sdl (dest, src, left));
|
||||
emit_insn (gen_mov_sdr (copy_rtx (dest), copy_rtx (src), right));
|
||||
@ -4458,6 +4460,20 @@ mips_expand_unaligned_store (rtx dest, rtx src, unsigned int width, int bitpos)
|
||||
return true;
|
||||
}
|
||||
|
||||
/* Return true if X is a MEM with the same size as MODE. */
|
||||
|
||||
bool
|
||||
mips_mem_fits_mode_p (enum machine_mode mode, rtx x)
|
||||
{
|
||||
rtx size;
|
||||
|
||||
if (!MEM_P (x))
|
||||
return false;
|
||||
|
||||
size = MEM_SIZE (x);
|
||||
return size && INTVAL (size) == GET_MODE_SIZE (mode);
|
||||
}
|
||||
|
||||
/* Return true if (zero_extract OP SIZE POSITION) can be used as the
|
||||
source of an "ext" instruction or the destination of an "ins"
|
||||
instruction. OP must be a register operand and the following
|
||||
|
@ -39,7 +39,7 @@
|
||||
|
||||
.file "crtsavres.asm"
|
||||
.section ".text"
|
||||
#include "rs6000/ppc-asm.h"
|
||||
#include "ppc-asm.h"
|
||||
|
||||
/* On PowerPC64 Linux, these functions are provided by the linker. */
|
||||
#ifndef __powerpc64__
|
||||
|
33
gnu/dist/gcc4/gcc/config/rs6000/rs6000.c
vendored
33
gnu/dist/gcc4/gcc/config/rs6000/rs6000.c
vendored
@ -1160,6 +1160,9 @@ rs6000_override_options (const char *default_cpu)
|
||||
{"power5+", PROCESSOR_POWER5,
|
||||
POWERPC_BASE_MASK | MASK_POWERPC64 | MASK_PPC_GFXOPT
|
||||
| MASK_MFCRF | MASK_POPCNTB | MASK_FPRND},
|
||||
{"power6", PROCESSOR_POWER5,
|
||||
POWERPC_7400_MASK | MASK_POWERPC64 | MASK_MFCRF | MASK_POPCNTB
|
||||
| MASK_FPRND},
|
||||
{"powerpc", PROCESSOR_POWERPC, POWERPC_BASE_MASK},
|
||||
{"powerpc64", PROCESSOR_POWERPC64,
|
||||
POWERPC_BASE_MASK | MASK_PPC_GFXOPT | MASK_POWERPC64},
|
||||
@ -3367,6 +3370,7 @@ rs6000_legitimize_reload_address (rtx x, enum machine_mode mode,
|
||||
|
||||
if (GET_CODE (x) == SYMBOL_REF
|
||||
&& !ALTIVEC_VECTOR_MODE (mode)
|
||||
&& !SPE_VECTOR_MODE (mode)
|
||||
#if TARGET_MACHO
|
||||
&& DEFAULT_ABI == ABI_DARWIN
|
||||
&& (flag_pic || MACHO_DYNAMIC_NO_PIC_P)
|
||||
@ -3468,6 +3472,7 @@ rs6000_legitimate_address (enum machine_mode mode, rtx x, int reg_ok_strict)
|
||||
if ((GET_CODE (x) == PRE_INC || GET_CODE (x) == PRE_DEC)
|
||||
&& !ALTIVEC_VECTOR_MODE (mode)
|
||||
&& !SPE_VECTOR_MODE (mode)
|
||||
&& mode != TFmode
|
||||
/* Restrict addressing for DI because of our SUBREG hackery. */
|
||||
&& !(TARGET_E500_DOUBLE && (mode == DFmode || mode == DImode))
|
||||
&& TARGET_UPDATE
|
||||
@ -4403,7 +4408,12 @@ function_arg_padding (enum machine_mode mode, tree type)
|
||||
of an argument with the specified mode and type. If it is not defined,
|
||||
PARM_BOUNDARY is used for all arguments.
|
||||
|
||||
V.4 wants long longs to be double word aligned.
|
||||
V.4 wants long longs and doubles to be double word aligned. Just
|
||||
testing the mode size is a boneheaded way to do this as it means
|
||||
that other types such as complex int are also double word aligned.
|
||||
However, we're stuck with this because changing the ABI might break
|
||||
existing library interfaces.
|
||||
|
||||
Doubleword align SPE vectors.
|
||||
Quadword align Altivec vectors.
|
||||
Quadword align large synthetic vector types. */
|
||||
@ -4411,7 +4421,11 @@ function_arg_padding (enum machine_mode mode, tree type)
|
||||
int
|
||||
function_arg_boundary (enum machine_mode mode, tree type)
|
||||
{
|
||||
if (DEFAULT_ABI == ABI_V4 && GET_MODE_SIZE (mode) == 8)
|
||||
if (DEFAULT_ABI == ABI_V4
|
||||
&& (GET_MODE_SIZE (mode) == 8
|
||||
|| (TARGET_HARD_FLOAT
|
||||
&& TARGET_FPRS
|
||||
&& mode == TFmode)))
|
||||
return 64;
|
||||
else if (SPE_VECTOR_MODE (mode)
|
||||
|| (type && TREE_CODE (type) == VECTOR_TYPE
|
||||
@ -9709,12 +9723,12 @@ effects of instruction do not correspond to semantics of RTL insn. */
|
||||
int
|
||||
insvdi_rshift_rlwimi_p (rtx sizeop, rtx startop, rtx shiftop)
|
||||
{
|
||||
if (INTVAL (startop) < 64
|
||||
&& INTVAL (startop) > 32
|
||||
&& (INTVAL (sizeop) + INTVAL (startop) < 64)
|
||||
&& (INTVAL (sizeop) + INTVAL (startop) > 33)
|
||||
&& (INTVAL (sizeop) + INTVAL (startop) + INTVAL (shiftop) < 96)
|
||||
&& (INTVAL (sizeop) + INTVAL (startop) + INTVAL (shiftop) >= 64)
|
||||
if (INTVAL (startop) > 32
|
||||
&& INTVAL (startop) < 64
|
||||
&& INTVAL (sizeop) > 1
|
||||
&& INTVAL (sizeop) + INTVAL (startop) < 64
|
||||
&& INTVAL (shiftop) > 0
|
||||
&& INTVAL (sizeop) + INTVAL (shiftop) < 32
|
||||
&& (64 - (INTVAL (shiftop) & 63)) >= INTVAL (sizeop))
|
||||
return 1;
|
||||
|
||||
@ -10696,7 +10710,8 @@ print_operand (FILE *file, rtx x, int code)
|
||||
|
||||
tmp = XEXP (x, 0);
|
||||
|
||||
if (TARGET_E500)
|
||||
/* Ugly hack because %y is overloaded. */
|
||||
if (TARGET_E500 && GET_MODE_SIZE (GET_MODE (x)) == 8)
|
||||
{
|
||||
/* Handle [reg]. */
|
||||
if (GET_CODE (tmp) == REG)
|
||||
|
534
gnu/dist/gcc4/gcc/cp/ChangeLog
vendored
534
gnu/dist/gcc4/gcc/cp/ChangeLog
vendored
@ -1,3 +1,537 @@
|
||||
2006-10-18 Mark Shinwell <shinwell@codesourcery.com>
|
||||
|
||||
PR c++/26884
|
||||
* typeck2.c (digest_init): Raise error upon attempts to
|
||||
initialize arrays with variables.
|
||||
|
||||
2006-10-18 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR C++/25878
|
||||
Backport from mainline:
|
||||
2006-08-25 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
PR c++/27787
|
||||
* decl.c (make_typename_type): Only try and resolve it when
|
||||
context is not dependent. Refactor.
|
||||
* decl2.c (check_classfn): Push to class scope before looking for
|
||||
the function.
|
||||
|
||||
2006-10-17 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
Backport from mainline:
|
||||
2006-09-07 Andrew Pinski <pinskia@physics.uc.edu>
|
||||
|
||||
PR C++/28906
|
||||
* init.c (build_new_1): Build a distinct type copy
|
||||
for the array type that was returned from
|
||||
build_cplus_array_type.
|
||||
|
||||
2006-10-16 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
PR c++/29435
|
||||
* typeck.c (cxx_sizeof_or_alignof_type): Complete non-dependent
|
||||
types when their sizes are required. Refine test for VLAs.
|
||||
|
||||
2006-10-16 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
PR c++/29408
|
||||
* parser.c (cp_parser_using_declaration): Stop parsing when
|
||||
something goes wrong with an access declaration.
|
||||
|
||||
2006-10-14 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR rtl-optimization/29323
|
||||
* decl.c (finish_function): Set TREE_NOTHROW only for
|
||||
functions that bind local.
|
||||
|
||||
2006-10-13 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
PR c++/28506
|
||||
* parser.c (function_declarator_p): New function.
|
||||
(cp_parser_init_declarator): Use it.
|
||||
(cp_parser_member_declaration): Likewise.
|
||||
|
||||
2006-10-12 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
PR c++/29318
|
||||
* rtti.c (get_tinfo_decl): Refuse to create type info objects for
|
||||
variably modified types.
|
||||
|
||||
2006-10-12 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
PR c++/29175
|
||||
* decl.c (check_initializer): Issue errors about trying to
|
||||
initialize arrays whose elements have variable size.
|
||||
|
||||
2006-10-07 Andrew Pinski <pinskia@physics.uc.edu>
|
||||
|
||||
PR C++/29002
|
||||
* init.c (build_zero_init): If we have an error mark node for
|
||||
the array size, return.
|
||||
|
||||
2006-10-06 Andrew Pinski <pinskia@physics.uc.edu>
|
||||
|
||||
PR c++/28302
|
||||
* typeck.c (build_unary_op <case BIT_NOT_EXPR:>): Don't call
|
||||
perform_integral_promotions for non integral type
|
||||
|
||||
2006-10-06 Andrew Pinski <pinskia@physics.uc.edu>
|
||||
|
||||
PR C++/28450
|
||||
* cp/init.c (build_zero_init): Handle VECTOR_TYPE and
|
||||
COMPLEX_TYPEs.
|
||||
|
||||
2006-10-05 Andrew Pinski <pinskia@physics.uc.edu>
|
||||
|
||||
PR C++/28349
|
||||
* call.c (build_x_va_arg): Remove the reference type
|
||||
from the type before creating the pointer type.
|
||||
|
||||
2006-10-03 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
PR c++/29138
|
||||
* decl2.c (grokfield): Don't handle access declarations here.
|
||||
* parser.c (cp_parser_using_declaration): Handle access
|
||||
declarations too.
|
||||
(cp_parser_block_declaration): Adjust calls to
|
||||
cp_parser_using_declaration.
|
||||
(cp_parser_member_declaration): Likewise. Use
|
||||
cp_parser_using_declaration to look for access_declarations.
|
||||
|
||||
2006-10-02 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
PR c++/29226
|
||||
* typeck.c (cxx_sizeof_or_alignof_type): Tidy. In templates, do
|
||||
not try to actually evaluate sizeof for a VLA type.
|
||||
|
||||
2006-10-01 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
PR c++/29080
|
||||
* parser.c (cp_parser_postfix_dot_deref_expression): Use
|
||||
BASELINK_ACCESS_BINFO as the qualifying scope when calling
|
||||
adjust_result_of_qualified_name_lookup.
|
||||
|
||||
2006-09-22 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/28996
|
||||
* cvt.c (convert_to_void): Strip COMPONENT_REF to functions.
|
||||
|
||||
2006-09-21 Steven Bosscher <steven@gcc.gnu.org>
|
||||
|
||||
PR c++/29087
|
||||
Backport from mainline:
|
||||
* parser.c (cp_parser_labeled_statement): Return nothing. Do
|
||||
not take in_statement_expr and in_compound as arguments. Rename
|
||||
to cp_parser_label_for_labeled_statement. Parse only the label,
|
||||
not the statement.
|
||||
(cp_parser_statement): Parse the statement of a labeled-statement
|
||||
from here, using tail recursion.
|
||||
|
||||
2006-09-07 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/26957
|
||||
* method.c (use_thunk): Clear DECL_HAS_VALUE_EXPR_P on copied
|
||||
parms.
|
||||
|
||||
2006-09-06 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
PR c++/28886
|
||||
* pt.c (unify): Avoid unnecessary calls to fold_build2 for array
|
||||
dimensions.
|
||||
|
||||
2006-09-06 Zak Kipling <zak@transversal.com>
|
||||
|
||||
PR c++/26195
|
||||
* decl.c (make_rtl_for_nonlocal_decl),
|
||||
(start_preparsed_function): Don't use lbasename on
|
||||
input_filename when calling get_fileinfo.
|
||||
* semantics.c (begin_class_definition): Likewise.
|
||||
* lex.c (cxx_make_type): Likewise.
|
||||
(handle_pragma_interface): Call get_fileinfo on input_filename,
|
||||
not on the parameter to the directive.
|
||||
|
||||
2006-09-06 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/26696
|
||||
* cvt.c (convert_to_void): Replace a subexpression with no side
|
||||
effects with void_zero_node.
|
||||
* tree.c (is_overloaded_fn): Look through COMPONENT_REF.
|
||||
(get_first_fn): Ditto.
|
||||
* decl.c (grokdeclarator): No need to look through COMPONENT_REF.
|
||||
|
||||
2006-09-05 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/26571
|
||||
* parser.c (cp_parser_diagnose_invalid_type_name): Handle the case
|
||||
where the name is a type used incorrectly.
|
||||
|
||||
PR c++/26671
|
||||
* typeck.c (maybe_warn_about_returning_address_of_local): Look
|
||||
through COMPONENT_REF and ARRAY_REF.
|
||||
|
||||
PR c++/26102
|
||||
* name-lookup.c (do_class_using_decl): Try to find the base even
|
||||
if bases_dependent_p.
|
||||
* pt.c (type_dependent_expression_p): A USING_DECL is dependent.
|
||||
|
||||
PR c++/19809
|
||||
* pt.c (tsubst_friend_function): Set DECL_INITIAL before pushdecl.
|
||||
|
||||
2006-09-02 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/28878
|
||||
* except.c (build_throw): Only set current_function_returns_abnormally
|
||||
if cfun is not NULL.
|
||||
|
||||
PR c++/26917
|
||||
* repo.c (repo_file): Remove.
|
||||
(open_repo_file, reopen_repo_file_for_write): Return fopened
|
||||
FILE * instead of setting global repo_file variable.
|
||||
(init_repo): Adjust caller.
|
||||
(finish_repo): Likewise. Return instead of goto out before
|
||||
reopen_repo_file_for_write has been called.
|
||||
|
||||
2006-08-30 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/26670
|
||||
* class.c (check_field_decls): Don't unset TYPE_PACKED until all
|
||||
the fields have been processed.
|
||||
|
||||
PR c++/26670
|
||||
* class.c (check_field_decls): Unset TYPE_PACKED (t) if one of the
|
||||
fields can't be packed.
|
||||
|
||||
2006-08-28 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/26577
|
||||
* cvt.c (convert_to_void): Don't automatically load from volatiles
|
||||
of TREE_ADDRESSABLE type.
|
||||
|
||||
2006-08-28 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
|
||||
|
||||
PR c++/28860
|
||||
* cp-tree.h (maybe_process_partial_specialization): Return
|
||||
tree instead of void.
|
||||
* parser.c (cp_parser_class_head): Use return value of
|
||||
maybe_process_partial_specialization.
|
||||
* pt.c (maybe_process_partial_specialization): Return error_mark_node
|
||||
for broken specializations, TYPE otherwise. Check for template
|
||||
template parameters.
|
||||
|
||||
2006-08-27 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
PR c++/28058
|
||||
* pt.c (register_specialization): Return error_mark_node for
|
||||
specialization-after-instantiation.
|
||||
* decl2.c (mark_used): Mark the main function used when one of its
|
||||
clones is used.
|
||||
|
||||
2006-08-26 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
PR c++/28595
|
||||
* pt.c (tsubst): Issue errors about attempts to create VLAs at
|
||||
template-instantiation time.
|
||||
|
||||
2006-08-25 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
|
||||
|
||||
PR c++/28853
|
||||
* typeck2.c (cxx_incomplete_type_diagnostic): Handle template
|
||||
template parameters. Improve error message for template type
|
||||
parameters.
|
||||
|
||||
2006-08-25 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
PR c++/28056
|
||||
* decl.c (grokdeclarator): Disallow declarations with qualified
|
||||
names in local scopes.
|
||||
|
||||
2006-08-23 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/27714
|
||||
* pt.c (push_template_decl_real): A friend template with class
|
||||
scope isn't primary.
|
||||
|
||||
2006-08-22 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/23372
|
||||
* call.c (build_over_call): Don't make a copy here if build_call
|
||||
will make one too.
|
||||
|
||||
2006-08-20 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
PR c++/28346
|
||||
* pt.c (tsubst_qualified_id): Do not strip references from
|
||||
OFFSET_REFs.
|
||||
|
||||
2006-08-17 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/28385
|
||||
* pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Ignore quals from template
|
||||
if arg is a function.
|
||||
|
||||
2006-08-17 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
|
||||
|
||||
PR c++/28606
|
||||
* parser.c (cp_parser_diagnose_invalid_type_name): Handle BIT_NOT_EXPR.
|
||||
Fix formatting.
|
||||
(cp_parser_parse_and_diagnose_invalid_type_name): Tighten condition
|
||||
for valid type-names.
|
||||
(cp_parser_unqualified_id): Fix error handling for destructors.
|
||||
|
||||
PR c++/28710
|
||||
* decl.c (xref_tag): Improve error message. Return early on error.
|
||||
|
||||
2006-08-16 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
|
||||
|
||||
PR c++/28593
|
||||
* init.c (build_new): Return early on invalid placement.
|
||||
|
||||
2006-08-13 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/28677
|
||||
PR middle-end/27793
|
||||
* cp-tree.h (cxx_int_tree_map): New struct.
|
||||
(struct language_function): Add extern_decl_map field.
|
||||
* name-lookup.c (pushdecl_maybe_friend): Add x -> t mapping
|
||||
to cp_function_chain->extern_decl_map hash table instead of
|
||||
copying over DECL_UID.
|
||||
* cp-gimplify.c (cxx_int_tree_map_eq, cxx_int_tree_map_hash): New
|
||||
functions.
|
||||
(cp_genericize_r): Remap DECL_EXTERN local decls using
|
||||
cp_function_chain->extern_decl_map hash table.
|
||||
* decl.c (finish_function): Clear extern_decl_map.
|
||||
|
||||
2006-08-10 Lee Millward <lee.millward@codesourcery.com>
|
||||
|
||||
PR c++/28594
|
||||
PR c++/28637
|
||||
PR c++/28638
|
||||
PR c++/28639
|
||||
PR c++/28640
|
||||
PR c++/28641
|
||||
|
||||
Revert
|
||||
2006-07-28 Lee Millward <lee.millward@codesourcery.com>
|
||||
|
||||
PR c++/27668
|
||||
PR c++/27962
|
||||
* pt.c (process_template_parm) Store invalid template
|
||||
parameters as error_mark_node in the paramater list.
|
||||
(push_inline_template_parms_recursive): Handle invalid
|
||||
template parameters.
|
||||
(comp_template_parms): Likewise.
|
||||
(check_default_tmpl_args): Likewise.
|
||||
(coerce_template_template_parms): Likewise.
|
||||
(coerce_template_parms): Likewise.
|
||||
(mangle_class_name_for_template): Likewise.
|
||||
(tsubst_template_parms): Likewise.
|
||||
* error.c (dump_template_argument_list): Likewise.
|
||||
|
||||
2006-08-07 Lee Millward <lee.millward@codesourcery.com>
|
||||
|
||||
* pt.c (coerce_template_parms): Fix misplaced parenthesis.
|
||||
|
||||
2006-08-03 Lee Millward <lee.millward@codesourcery.com>
|
||||
|
||||
PR c++/28347
|
||||
* decl.c (start_decl): Return error_mark_node if a
|
||||
diagnostic was issed for an invalid typedef initialization
|
||||
|
||||
2006-08-03 Steve Ellcey <sje@cup.hp.com>
|
||||
|
||||
PR c++/28432
|
||||
* decl2.c (check_classfn): Remove early return.
|
||||
* search.c (lookup_member): Return NULL with bad type.
|
||||
|
||||
2006-08-03 Steve Ellcey <sje@cup.hp.com>
|
||||
|
||||
PR c++/28256
|
||||
* decl.c (check_initializer): Check for 1 initializer on scalar types.
|
||||
|
||||
2006-08-03 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
|
||||
|
||||
PR c++/27508
|
||||
* parser.c (cp_parser_unqualified_id): Check for invalid scopes
|
||||
when parsing destructor names.
|
||||
|
||||
PR c++/28274
|
||||
* decl.c (duplicate_decls): Call check_default_args here.
|
||||
(start_preparsed_function): Do not call check_default_args.
|
||||
* name-lookup.c (pushdecl_maybe_friend): Only call
|
||||
check_default_args if duplicate_decls got bypassed.
|
||||
|
||||
2006-08-02 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
PR c++/28557
|
||||
* pt.c (tsubst_baselink): Substitute into BASELINK_OPTYPE.
|
||||
|
||||
2006-07-31 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
PR c++/28523
|
||||
* tree.c (stabilize_expr): Tweak documentation. Add assertion.
|
||||
(stabilize_call): Tweak documentation.
|
||||
(stabilize_init): Only call stabilize_call for calls.
|
||||
|
||||
2006-07-28 Lee Millward <lee.millward@codesourcery.com>
|
||||
|
||||
PR c++/27668
|
||||
PR c++/27962
|
||||
* pt.c (process_template_parm) Store invalid template
|
||||
parameters as error_mark_node in the paramater list.
|
||||
(push_inline_template_parms_recursive): Handle invalid
|
||||
template parameters.
|
||||
(comp_template_parms): Likewise.
|
||||
(check_default_tmpl_args): Likewise.
|
||||
(coerce_template_template_parms): Likewise.
|
||||
(coerce_template_parms): Likewise.
|
||||
(mangle_class_name_for_template): Likewise.
|
||||
(tsubst_template_parms): Likewise.
|
||||
* error.c (dump_template_argument_list): Likewise.
|
||||
|
||||
2006-07-24 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
|
||||
|
||||
PR c++/27572
|
||||
* decl.c (grokdeclarator): Return error_mark_node after invalid
|
||||
typedef.
|
||||
|
||||
2006-07-23 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
PR c++/28025
|
||||
* cp-tree.h (LOOKUP_HIDDEN): New macro. Reformat comments.
|
||||
* name-lookup.c (unqualified_namespace_lookup): There is no way to
|
||||
have a hidden name in non-namespace scopes.
|
||||
* pt.c (tsubst_friend_class): Look for hidden names.
|
||||
* decl.c (lookup_and_check_tag): Fix typo in comment.
|
||||
|
||||
* semantics.c (finish_compound_literal): Fix typo in comment.
|
||||
|
||||
2006-07-22 Lee Millward <lee.millward@gmail.com>
|
||||
|
||||
PR c++/28258
|
||||
* method.c (locate_copy): Check for non_reference
|
||||
returning error_mark_node.
|
||||
|
||||
2006-07-21 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
|
||||
|
||||
PR c++/28363
|
||||
* semantics.c (check_template_template_default_arg): Simplify
|
||||
error handling.
|
||||
|
||||
2006-07-20 Steve Ellcey <sje@cup.hp.com>
|
||||
|
||||
PR c++/27495
|
||||
* search.c (adjust_result_of_qualified_name_lookup): Change
|
||||
assert to part of if statement.
|
||||
|
||||
2006-07-19 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
PR c++/28338
|
||||
* decl.c (layout_var_decl): Don't call push_local_name here.
|
||||
(initialize_artificial_var): Assert artificiality.
|
||||
(cp_finish_decl): Call push_local_name here.
|
||||
|
||||
2006-07-18 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
PR c++/28337
|
||||
* typeck.c (build_binary_op): Short-circuit pointer arithmetic in
|
||||
templates.
|
||||
|
||||
PR c++/28048
|
||||
* semantics.c (check_accessibility_of_qualified_id): Robustify.
|
||||
|
||||
2006-07-18 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
PR c++/28235
|
||||
* pt.c (tsubst_decl): Handling substitutions into a static data
|
||||
member from within the scope of the tempalte itself.
|
||||
|
||||
2006-07-18 Steve Ellcey <sje@cup.hp.com>
|
||||
|
||||
PR c++/28291
|
||||
* decl.c (reshape_init_class): Return error_mark_node on error.
|
||||
|
||||
2006-07-18 Steve Ellcey <sje@cup.hp.com>
|
||||
|
||||
PR c++/28304
|
||||
* decl2.c (check_classfn): Return NULL_TREE on error.
|
||||
|
||||
2006-07-15 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
|
||||
|
||||
PR c++/28249
|
||||
* parser.c (cp_parser_check_decl_spec): New function.
|
||||
(cp_parser_decl_specifier_seq): Factor out check for repeated
|
||||
decl-specifiers into cp_parser_check_decl_spec. Use it.
|
||||
(cp_parser_type_specifier_seq): Use it.
|
||||
|
||||
PR c++/28294
|
||||
* semantics.c (finish_offsetof): Use TREE_OPERAND for COMPONENT_REFs
|
||||
only.
|
||||
|
||||
2006-07-14 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
|
||||
|
||||
PR c++/28343
|
||||
* decl.c (cp_finish_decl): Check asmspec_tree for error_mark_node.
|
||||
* decl2.c (grokfield): Likewise.
|
||||
|
||||
2006-06-16 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
PR c++/28016
|
||||
* decl.c (cp_finsh_decl): Do not emit uninstantiated static data
|
||||
members.
|
||||
|
||||
2006-07-11 Lee Millward <lee.millward@gmail.com>
|
||||
|
||||
PR c++/28051
|
||||
* mangle.c (mangle_conv_op_name_for_type): Check for
|
||||
invalid types.
|
||||
* name-lookup.c (push_class_level_binding): Robustify.
|
||||
(do_class_using_decl): Return early if name is
|
||||
error_mark_node.
|
||||
|
||||
2006-07-10 Steve Ellcey <sje@cup.hp.com>
|
||||
|
||||
PR c++/27019
|
||||
* typeck2.c (process_init_constructor_array): Set ce->value on errors.
|
||||
|
||||
2006-07-10 Steve Ellcey <sje@cup.hp.com>
|
||||
|
||||
PR c++/28114
|
||||
* name-lookup.c (pushtag): Return if we have error_mark_node.
|
||||
|
||||
2006-07-08 Lee Millward <lee.millward@gmail.com>
|
||||
Andrew Pinski <pinskia@gmail.com>
|
||||
|
||||
PR c++/27820
|
||||
* decl.c (define_label): Return error_mark_node on error.
|
||||
* semantics.c (finish_label_stmt): Don't call
|
||||
add_stmt for invalid labels.
|
||||
|
||||
2006-07-05 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/13983
|
||||
PR c++/17519
|
||||
* class.c (check_field_decls): Check TYPE_PACKED after
|
||||
stripping array types.
|
||||
|
||||
PR c++/18681
|
||||
* friend.c (is_friend): Fix DR 45 implementation.
|
||||
|
||||
2006-06-30 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/26577
|
||||
* call.c (build_new_method_call): Force evaluation of the
|
||||
instance pointer, not the object.
|
||||
|
||||
PR c++/18698
|
||||
* decl2.c (grokfield): Only try to treat the decl as an access
|
||||
declaration if the scope is a class.
|
||||
|
||||
2006-06-28 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/27424
|
||||
* pt.c (convert_template_argument): Pass all template arguments
|
||||
on to coerce_template_template_parms.
|
||||
|
||||
2006-06-25 Lee Millward <lee.millward@gmail.com>
|
||||
|
||||
PR c++/27821
|
||||
|
238
gnu/dist/gcc4/gcc/cp/decl.c
vendored
238
gnu/dist/gcc4/gcc/cp/decl.c
vendored
@ -1621,6 +1621,9 @@ duplicate_decls (tree newdecl, tree olddecl, bool newdecl_is_friend)
|
||||
check_redeclaration_exception_specification (newdecl, olddecl);
|
||||
TREE_TYPE (newdecl) = TREE_TYPE (olddecl) = newtype;
|
||||
|
||||
if (TREE_CODE (newdecl) == FUNCTION_DECL)
|
||||
check_default_args (newdecl);
|
||||
|
||||
/* Lay the type out, unless already done. */
|
||||
if (! same_type_p (newtype, oldtype)
|
||||
&& TREE_TYPE (newdecl) != error_mark_node
|
||||
@ -2415,7 +2418,10 @@ define_label (location_t location, tree name)
|
||||
pedwarn ("label named wchar_t");
|
||||
|
||||
if (DECL_INITIAL (decl) != NULL_TREE)
|
||||
error ("duplicate label %qD", decl);
|
||||
{
|
||||
error ("duplicate label %qD", decl);
|
||||
POP_TIMEVAR_AND_RETURN(TV_NAME_LOOKUP, error_mark_node);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Mark label as having been defined. */
|
||||
@ -2640,6 +2646,8 @@ make_typename_type (tree context, tree name, enum tag_types tag_type,
|
||||
tsubst_flags_t complain)
|
||||
{
|
||||
tree fullname;
|
||||
tree t;
|
||||
bool want_template;
|
||||
|
||||
if (name == error_mark_node
|
||||
|| context == NULL_TREE
|
||||
@ -2677,73 +2685,60 @@ make_typename_type (tree context, tree name, enum tag_types tag_type,
|
||||
gcc_assert (TREE_CODE (name) == IDENTIFIER_NODE);
|
||||
gcc_assert (TYPE_P (context));
|
||||
|
||||
if (!dependent_type_p (context)
|
||||
|| currently_open_class (context))
|
||||
{
|
||||
if (TREE_CODE (fullname) == TEMPLATE_ID_EXPR)
|
||||
{
|
||||
tree tmpl = NULL_TREE;
|
||||
if (IS_AGGR_TYPE (context))
|
||||
tmpl = lookup_field (context, name, 0, false);
|
||||
if (!tmpl || !DECL_CLASS_TEMPLATE_P (tmpl))
|
||||
{
|
||||
if (complain & tf_error)
|
||||
error ("no class template named %q#T in %q#T",
|
||||
name, context);
|
||||
return error_mark_node;
|
||||
}
|
||||
/* When the CONTEXT is a dependent type, NAME could refer to a
|
||||
dependent base class of CONTEXT. So we cannot peek inside it,
|
||||
even if CONTEXT is a currently open scope. */
|
||||
if (dependent_type_p (context))
|
||||
return build_typename_type (context, name, fullname, tag_type);
|
||||
|
||||
if (complain & tf_error)
|
||||
perform_or_defer_access_check (TYPE_BINFO (context), tmpl);
|
||||
|
||||
return lookup_template_class (tmpl,
|
||||
TREE_OPERAND (fullname, 1),
|
||||
NULL_TREE, context,
|
||||
/*entering_scope=*/0,
|
||||
tf_error | tf_warning | tf_user);
|
||||
}
|
||||
else
|
||||
{
|
||||
tree t;
|
||||
|
||||
if (!IS_AGGR_TYPE (context))
|
||||
{
|
||||
if (complain & tf_error)
|
||||
error ("no type named %q#T in %q#T", name, context);
|
||||
return error_mark_node;
|
||||
}
|
||||
|
||||
t = lookup_field (context, name, 0, true);
|
||||
if (t)
|
||||
{
|
||||
if (TREE_CODE (t) != TYPE_DECL)
|
||||
{
|
||||
if (complain & tf_error)
|
||||
error ("no type named %q#T in %q#T", name, context);
|
||||
return error_mark_node;
|
||||
}
|
||||
|
||||
if (complain & tf_error)
|
||||
perform_or_defer_access_check (TYPE_BINFO (context), t);
|
||||
|
||||
if (DECL_ARTIFICIAL (t) || !(complain & tf_keep_type_decl))
|
||||
t = TREE_TYPE (t);
|
||||
|
||||
return t;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* If the CONTEXT is not a template type, then either the field is
|
||||
there now or its never going to be. */
|
||||
if (!dependent_type_p (context))
|
||||
if (!IS_AGGR_TYPE (context))
|
||||
{
|
||||
if (complain & tf_error)
|
||||
error ("no type named %q#T in %q#T", name, context);
|
||||
error ("%q#T is not a class", context);
|
||||
return error_mark_node;
|
||||
}
|
||||
|
||||
want_template = TREE_CODE (fullname) == TEMPLATE_ID_EXPR;
|
||||
|
||||
/* We should only set WANT_TYPE when we're a nested typename type.
|
||||
Then we can give better diagnostics if we find a non-type. */
|
||||
t = lookup_field (context, name, 0, /*want_type=*/true);
|
||||
if (!t)
|
||||
{
|
||||
if (complain & tf_error)
|
||||
error (want_template ? "no class template named %q#T in %q#T"
|
||||
: "no type named %q#T in %q#T", name, context);
|
||||
return error_mark_node;
|
||||
}
|
||||
|
||||
if (want_template && !DECL_CLASS_TEMPLATE_P (t))
|
||||
{
|
||||
if (complain & tf_error)
|
||||
error ("%<typename %T::%D%> names %q#T, which is not a class template",
|
||||
context, name, t);
|
||||
return error_mark_node;
|
||||
}
|
||||
if (!want_template && TREE_CODE (t) != TYPE_DECL)
|
||||
{
|
||||
if (complain & tf_error)
|
||||
error ("%<typename %T::%D%> names %q#T, which is not a type",
|
||||
context, name, t);
|
||||
return error_mark_node;
|
||||
}
|
||||
|
||||
if (complain & tf_error)
|
||||
perform_or_defer_access_check (TYPE_BINFO (context), t);
|
||||
|
||||
return build_typename_type (context, name, fullname, tag_type);
|
||||
if (want_template)
|
||||
return lookup_template_class (t, TREE_OPERAND (fullname, 1),
|
||||
NULL_TREE, context,
|
||||
/*entering_scope=*/0,
|
||||
tf_error | tf_warning | tf_user);
|
||||
|
||||
if (DECL_ARTIFICIAL (t) || !(complain & tf_keep_type_decl))
|
||||
t = TREE_TYPE (t);
|
||||
|
||||
return t;
|
||||
}
|
||||
|
||||
/* Resolve `CONTEXT::template NAME'. Returns a TEMPLATE_DECL if the name
|
||||
@ -3721,8 +3716,7 @@ start_decl (const cp_declarator *declarator,
|
||||
{
|
||||
case TYPE_DECL:
|
||||
error ("typedef %qD is initialized (use __typeof__ instead)", decl);
|
||||
initialized = 0;
|
||||
break;
|
||||
return error_mark_node;
|
||||
|
||||
case FUNCTION_DECL:
|
||||
error ("function %q#D is initialized like a variable", decl);
|
||||
@ -4055,12 +4049,6 @@ layout_var_decl (tree decl)
|
||||
{
|
||||
tree type;
|
||||
|
||||
if (TREE_STATIC (decl)
|
||||
&& !DECL_ARTIFICIAL (decl)
|
||||
&& current_function_decl
|
||||
&& DECL_CONTEXT (decl) == current_function_decl)
|
||||
push_local_name (decl);
|
||||
|
||||
type = TREE_TYPE (decl);
|
||||
if (type == error_mark_node)
|
||||
return;
|
||||
@ -4371,8 +4359,11 @@ reshape_init_class (tree type, reshape_iter *d, bool first_initializer_p)
|
||||
field = lookup_field_1 (type, d->cur->index, /*want_type=*/false);
|
||||
|
||||
if (!field || TREE_CODE (field) != FIELD_DECL)
|
||||
error ("%qT has no non-static data member named %qD", type,
|
||||
d->cur->index);
|
||||
{
|
||||
error ("%qT has no non-static data member named %qD", type,
|
||||
d->cur->index);
|
||||
return error_mark_node;
|
||||
}
|
||||
}
|
||||
|
||||
/* If we processed all the member of the class, we are done. */
|
||||
@ -4590,22 +4581,45 @@ check_initializer (tree decl, tree init, int flags, tree *cleanup)
|
||||
if (type == error_mark_node)
|
||||
/* We will have already complained. */
|
||||
init = NULL_TREE;
|
||||
else if (init && COMPLETE_TYPE_P (type)
|
||||
&& !TREE_CONSTANT (TYPE_SIZE (type)))
|
||||
|
||||
if (TREE_CODE (type) == ARRAY_TYPE)
|
||||
{
|
||||
error ("variable-sized object %qD may not be initialized", decl);
|
||||
init = NULL_TREE;
|
||||
tree element_type = TREE_TYPE (type);
|
||||
|
||||
/* The array type itself need not be complete, because the
|
||||
initializer may tell us how many elements are in the array.
|
||||
But, the elements of the array must be complete. */
|
||||
if (!COMPLETE_TYPE_P (complete_type (element_type)))
|
||||
{
|
||||
error ("elements of array %q#D have incomplete type", decl);
|
||||
return NULL_TREE;
|
||||
}
|
||||
/* It is not valid to initialize an a VLA. */
|
||||
if (init
|
||||
&& ((COMPLETE_TYPE_P (type) && !TREE_CONSTANT (TYPE_SIZE (type)))
|
||||
|| !TREE_CONSTANT (TYPE_SIZE (element_type))))
|
||||
{
|
||||
error ("variable-sized object %qD may not be initialized", decl);
|
||||
return NULL_TREE;
|
||||
}
|
||||
}
|
||||
else if (TREE_CODE (type) == ARRAY_TYPE
|
||||
&& !COMPLETE_TYPE_P (complete_type (TREE_TYPE (type))))
|
||||
{
|
||||
error ("elements of array %q#D have incomplete type", decl);
|
||||
init = NULL_TREE;
|
||||
}
|
||||
else if (TREE_CODE (type) != ARRAY_TYPE && !COMPLETE_TYPE_P (type))
|
||||
else if (!COMPLETE_TYPE_P (type))
|
||||
{
|
||||
error ("%qD has incomplete type", decl);
|
||||
TREE_TYPE (decl) = error_mark_node;
|
||||
return NULL_TREE;
|
||||
}
|
||||
else
|
||||
/* There is no way to make a variable-sized class type in GNU C++. */
|
||||
gcc_assert (TREE_CONSTANT (TYPE_SIZE (type)));
|
||||
|
||||
if (!CP_AGGREGATE_TYPE_P (type)
|
||||
&& init && TREE_CODE (init) == CONSTRUCTOR
|
||||
&& BRACE_ENCLOSED_INITIALIZER_P (init)
|
||||
&& VEC_length (constructor_elt, CONSTRUCTOR_ELTS (init)) != 1)
|
||||
{
|
||||
error ("scalar object %qD requires one element in initializer", decl);
|
||||
TREE_TYPE (decl) = error_mark_node;
|
||||
init = NULL_TREE;
|
||||
}
|
||||
|
||||
@ -4787,7 +4801,7 @@ make_rtl_for_nonlocal_decl (tree decl, tree init, const char* asmspec)
|
||||
{
|
||||
/* Fool with the linkage of static consts according to #pragma
|
||||
interface. */
|
||||
struct c_fileinfo *finfo = get_fileinfo (lbasename (filename));
|
||||
struct c_fileinfo *finfo = get_fileinfo (filename);
|
||||
if (!finfo->interface_unknown && !TREE_PUBLIC (decl))
|
||||
{
|
||||
TREE_PUBLIC (decl) = 1;
|
||||
@ -4875,6 +4889,7 @@ initialize_local_var (tree decl, tree init)
|
||||
void
|
||||
initialize_artificial_var (tree decl, tree init)
|
||||
{
|
||||
gcc_assert (DECL_ARTIFICIAL (decl));
|
||||
if (TREE_CODE (init) == TREE_LIST)
|
||||
init = build_constructor_from_list (NULL_TREE, init);
|
||||
gcc_assert (TREE_CODE (init) == CONSTRUCTOR);
|
||||
@ -4932,7 +4947,7 @@ cp_finish_decl (tree decl, tree init, bool init_const_expr_p,
|
||||
/* If a name was specified, get the string. */
|
||||
if (global_scope_p (current_binding_level))
|
||||
asmspec_tree = maybe_apply_renaming_pragma (decl, asmspec_tree);
|
||||
if (asmspec_tree)
|
||||
if (asmspec_tree && asmspec_tree != error_mark_node)
|
||||
asmspec = TREE_STRING_POINTER (asmspec_tree);
|
||||
|
||||
if (current_class_type
|
||||
@ -5019,6 +5034,17 @@ cp_finish_decl (tree decl, tree init, bool init_const_expr_p,
|
||||
if (DECL_THREAD_LOCAL_P (decl) && !pod_type_p (TREE_TYPE (decl)))
|
||||
error ("%qD cannot be thread-local because it has non-POD type %qT",
|
||||
decl, TREE_TYPE (decl));
|
||||
/* If this is a local variable that will need a mangled name,
|
||||
register it now. We must do this before processing the
|
||||
initializer for the variable, since the initialization might
|
||||
require a guard variable, and since the mangled name of the
|
||||
guard variable will depend on the mangled name of this
|
||||
variable. */
|
||||
if (!processing_template_decl
|
||||
&& DECL_FUNCTION_SCOPE_P (decl)
|
||||
&& TREE_STATIC (decl)
|
||||
&& !DECL_ARTIFICIAL (decl))
|
||||
push_local_name (decl);
|
||||
/* Convert the initializer to the type of DECL, if we have not
|
||||
already initialized DECL. */
|
||||
if (!DECL_INITIALIZED_P (decl)
|
||||
@ -6776,7 +6802,27 @@ grokdeclarator (const cp_declarator *declarator,
|
||||
break;
|
||||
if (qualifying_scope)
|
||||
{
|
||||
if (TYPE_P (qualifying_scope))
|
||||
if (at_function_scope_p ())
|
||||
{
|
||||
/* [dcl.meaning]
|
||||
|
||||
A declarator-id shall not be qualified except
|
||||
for ...
|
||||
|
||||
None of the cases are permitted in block
|
||||
scope. */
|
||||
if (qualifying_scope == global_namespace)
|
||||
error ("invalid use of qualified-name %<::%D%>",
|
||||
decl);
|
||||
else if (TYPE_P (qualifying_scope))
|
||||
error ("invalid use of qualified-name %<%T::%D%>",
|
||||
qualifying_scope, decl);
|
||||
else
|
||||
error ("invalid use of qualified-name %<%D::%D%>",
|
||||
qualifying_scope, decl);
|
||||
return error_mark_node;
|
||||
}
|
||||
else if (TYPE_P (qualifying_scope))
|
||||
{
|
||||
ctype = qualifying_scope;
|
||||
if (innermost_code != cdk_function
|
||||
@ -6821,8 +6867,6 @@ grokdeclarator (const cp_declarator *declarator,
|
||||
tree fns = TREE_OPERAND (decl, 0);
|
||||
|
||||
dname = fns;
|
||||
if (TREE_CODE (dname) == COMPONENT_REF)
|
||||
dname = TREE_OPERAND (dname, 1);
|
||||
if (TREE_CODE (dname) != IDENTIFIER_NODE)
|
||||
{
|
||||
gcc_assert (is_overloaded_fn (dname));
|
||||
@ -7173,7 +7217,10 @@ grokdeclarator (const cp_declarator *declarator,
|
||||
if (decl_context == PARM)
|
||||
{
|
||||
if (declspecs->specs[(int)ds_typedef])
|
||||
error ("typedef declaration invalid in parameter declaration");
|
||||
{
|
||||
error ("typedef declaration invalid in parameter declaration");
|
||||
return error_mark_node;
|
||||
}
|
||||
else if (storage_class == sc_static
|
||||
|| storage_class == sc_extern
|
||||
|| thread_p)
|
||||
@ -9340,7 +9387,7 @@ lookup_and_check_tag (enum tag_types tag_code, tree name,
|
||||
/* If that fails, the name will be placed in the smallest
|
||||
non-class, non-function-prototype scope according to 3.3.1/5.
|
||||
We may already have a hidden name declared as friend in this
|
||||
scope. So lookup again but not ignoring hidden name.
|
||||
scope. So lookup again but not ignoring hidden names.
|
||||
If we find one, that name will be made visible rather than
|
||||
creating a new tag. */
|
||||
if (!decl)
|
||||
@ -9517,7 +9564,8 @@ xref_tag (enum tag_types tag_code, tree name,
|
||||
&& CLASSTYPE_IS_TEMPLATE (t))
|
||||
{
|
||||
error ("redeclaration of %qT as a non-template", t);
|
||||
t = error_mark_node;
|
||||
error ("previous declaration %q+D", t);
|
||||
POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, error_mark_node);
|
||||
}
|
||||
|
||||
/* Make injected friend class visible. */
|
||||
@ -10160,7 +10208,7 @@ start_preparsed_function (tree decl1, tree attrs, int flags)
|
||||
struct cp_binding_level *bl;
|
||||
tree current_function_parms;
|
||||
struct c_fileinfo *finfo
|
||||
= get_fileinfo (lbasename (LOCATION_FILE (DECL_SOURCE_LOCATION (decl1))));
|
||||
= get_fileinfo (LOCATION_FILE (DECL_SOURCE_LOCATION (decl1)));
|
||||
bool honor_interface;
|
||||
|
||||
/* Sanity check. */
|
||||
@ -10259,8 +10307,6 @@ start_preparsed_function (tree decl1, tree attrs, int flags)
|
||||
you declare a function, these types can be incomplete, but they
|
||||
must be complete when you define the function. */
|
||||
check_function_type (decl1, current_function_parms);
|
||||
/* Make sure no default arg is missing. */
|
||||
check_default_args (decl1);
|
||||
|
||||
/* Build the return declaration for the function. */
|
||||
restype = TREE_TYPE (fntype);
|
||||
@ -10918,7 +10964,8 @@ finish_function (int flags)
|
||||
/* If this function can't throw any exceptions, remember that. */
|
||||
if (!processing_template_decl
|
||||
&& !cp_function_chain->can_throw
|
||||
&& !flag_non_call_exceptions)
|
||||
&& !flag_non_call_exceptions
|
||||
&& targetm.binds_local_p (fndecl))
|
||||
TREE_NOTHROW (fndecl) = 1;
|
||||
|
||||
/* This must come after expand_function_end because cleanups might
|
||||
@ -11021,6 +11068,7 @@ finish_function (int flags)
|
||||
f->x_vtt_parm = NULL;
|
||||
f->x_return_value = NULL;
|
||||
f->bindings = NULL;
|
||||
f->extern_decl_map = NULL;
|
||||
|
||||
/* Handle attribute((warn_unused_result)). Relies on gimple input. */
|
||||
c_warn_unused_result (&DECL_SAVED_TREE (fndecl));
|
||||
|
2
gnu/dist/gcc4/gcc/doc/cpp.texi
vendored
2
gnu/dist/gcc4/gcc/doc/cpp.texi
vendored
@ -3788,7 +3788,7 @@ execution character set.
|
||||
|
||||
Currently, CPP requires its input to be ASCII or UTF-8. The execution
|
||||
character set may be controlled by the user, with the
|
||||
@option{-ftarget-charset} and @option{-ftarget-wide-charset} options.
|
||||
@option{-fexec-charset} and @option{-fwide-exec-charset} options.
|
||||
|
||||
@item Identifier characters.
|
||||
@anchor{Identifier characters}
|
||||
|
39
gnu/dist/gcc4/gcc/doc/invoke.texi
vendored
39
gnu/dist/gcc4/gcc/doc/invoke.texi
vendored
@ -923,7 +923,6 @@ objective-c objective-c-header objective-c-cpp-output
|
||||
objective-c++ objective-c++-header objective-c++-cpp-output
|
||||
assembler assembler-with-cpp
|
||||
ada
|
||||
f77 f77-cpp-input
|
||||
f95 f95-cpp-input
|
||||
java
|
||||
treelang
|
||||
@ -2630,7 +2629,7 @@ To suppress this warning use the @samp{unused} attribute
|
||||
@item -Wunused-variable
|
||||
@opindex Wunused-variable
|
||||
Warn whenever a local variable or non-constant static variable is unused
|
||||
aside from its declaration
|
||||
aside from its declaration.
|
||||
This warning is enabled by @option{-Wall}.
|
||||
|
||||
To suppress this warning use the @samp{unused} attribute
|
||||
@ -4553,14 +4552,14 @@ The @option{-finline-limit=@var{n}} option sets some of these parameters
|
||||
as follows:
|
||||
|
||||
@table @gcctabopt
|
||||
@item max-inline-insns-single
|
||||
is set to @var{n}/2.
|
||||
@item max-inline-insns-auto
|
||||
is set to @var{n}/2.
|
||||
@item min-inline-insns
|
||||
is set to 130 or @var{n}/4, whichever is smaller.
|
||||
@item max-inline-insns-rtl
|
||||
is set to @var{n}.
|
||||
@item max-inline-insns-single
|
||||
is set to @var{n}/2.
|
||||
@item max-inline-insns-auto
|
||||
is set to @var{n}/2.
|
||||
@item min-inline-insns
|
||||
is set to 130 or @var{n}/4, whichever is smaller.
|
||||
@item max-inline-insns-rtl
|
||||
is set to @var{n}.
|
||||
@end table
|
||||
|
||||
See below for a documentation of the individual
|
||||
@ -5850,7 +5849,7 @@ Specifies maximum number of instructions out-of-line copy of self recursive inli
|
||||
function can grow into by performing recursive inlining.
|
||||
|
||||
For functions declared inline @option{--param max-inline-insns-recursive} is
|
||||
taken into acount. For function not declared inline, recursive inlining
|
||||
taken into account. For function not declared inline, recursive inlining
|
||||
happens only when @option{-finline-functions} (included in @option{-O3}) is
|
||||
enabled and @option{--param max-inline-insns-recursive-auto} is used. The
|
||||
default value is 450.
|
||||
@ -5860,7 +5859,7 @@ default value is 450.
|
||||
Specifies maximum recursion depth used by the recursive inlining.
|
||||
|
||||
For functions declared inline @option{--param max-inline-recursive-depth} is
|
||||
taken into acount. For function not declared inline, recursive inlining
|
||||
taken into account. For function not declared inline, recursive inlining
|
||||
happens only when @option{-finline-functions} (included in @option{-O3}) is
|
||||
enabled and @option{--param max-inline-recursive-depth-auto} is used. The
|
||||
default value is 450.
|
||||
@ -6063,7 +6062,7 @@ compile time increase with probably slightly better performance. The default
|
||||
value is 100.
|
||||
|
||||
@item max-cselib-memory-location
|
||||
The maximum number of memory locations cselib should take into acount.
|
||||
The maximum number of memory locations cselib should take into account.
|
||||
Increasing values mean more aggressive optimization, making the compile time
|
||||
increase with probably slightly better performance. The default value is 500.
|
||||
|
||||
@ -9183,6 +9182,8 @@ boundary. Aligning @code{double} variables on a two word boundary will
|
||||
produce code that runs somewhat faster on a @samp{Pentium} at the
|
||||
expense of more memory.
|
||||
|
||||
On x86-64, @option{-malign-double} is enabled by default.
|
||||
|
||||
@strong{Warning:} if you use the @option{-malign-double} switch,
|
||||
structures containing the above types will be aligned differently than
|
||||
the published application binary interface specifications for the 386
|
||||
@ -9284,15 +9285,13 @@ the system libraries and startup modules.
|
||||
@opindex mpreferred-stack-boundary
|
||||
Attempt to keep the stack boundary aligned to a 2 raised to @var{num}
|
||||
byte boundary. If @option{-mpreferred-stack-boundary} is not specified,
|
||||
the default is 4 (16 bytes or 128 bits), except when optimizing for code
|
||||
size (@option{-Os}), in which case the default is the minimum correct
|
||||
alignment (4 bytes for x86, and 8 bytes for x86-64).
|
||||
the default is 4 (16 bytes or 128 bits).
|
||||
|
||||
On Pentium and PentiumPro, @code{double} and @code{long double} values
|
||||
should be aligned to an 8 byte boundary (see @option{-malign-double}) or
|
||||
suffer significant run time performance penalties. On Pentium III, the
|
||||
Streaming SIMD Extension (SSE) data type @code{__m128} suffers similar
|
||||
penalties if it is not 16 byte aligned.
|
||||
Streaming SIMD Extension (SSE) data type @code{__m128} may not work
|
||||
properly if it is not 16 byte aligned.
|
||||
|
||||
To ensure proper alignment of this values on the stack, the stack boundary
|
||||
must be as aligned as that required by any value stored on the stack.
|
||||
@ -10953,7 +10952,7 @@ Supported values for @var{cpu_type} are @samp{401}, @samp{403},
|
||||
@samp{7450}, @samp{750}, @samp{801}, @samp{821}, @samp{823},
|
||||
@samp{860}, @samp{970}, @samp{8540}, @samp{ec603e}, @samp{G3},
|
||||
@samp{G4}, @samp{G5}, @samp{power}, @samp{power2}, @samp{power3},
|
||||
@samp{power4}, @samp{power5}, @samp{power5+},
|
||||
@samp{power4}, @samp{power5}, @samp{power5+}, @samp{power6},
|
||||
@samp{common}, @samp{powerpc}, @samp{powerpc64},
|
||||
@samp{rios}, @samp{rios1}, @samp{rios2}, @samp{rsc}, and @samp{rs64}.
|
||||
|
||||
@ -12722,7 +12721,7 @@ it.
|
||||
@opindex fbounds-check
|
||||
For front-ends that support it, generate additional code to check that
|
||||
indices used to access arrays are within the declared range. This is
|
||||
currently only supported by the Java and Fortran 77 front-ends, where
|
||||
currently only supported by the Java and Fortran front-ends, where
|
||||
this option defaults to true and false respectively.
|
||||
|
||||
@item -ftrapv
|
||||
|
1023
gnu/dist/gcc4/gcc/testsuite/ChangeLog
vendored
1023
gnu/dist/gcc4/gcc/testsuite/ChangeLog
vendored
File diff suppressed because it is too large
Load Diff
2
gnu/dist/gcc4/gcc/version.c
vendored
2
gnu/dist/gcc4/gcc/version.c
vendored
@ -8,7 +8,7 @@
|
||||
in parentheses. You may also wish to include a number indicating
|
||||
the revision of your modified compiler. */
|
||||
|
||||
#define VERSUFFIX " (NetBSD nb2 20060711)"
|
||||
#define VERSUFFIX " (NetBSD nb1 20061021)"
|
||||
|
||||
/* This is the location of the online document giving instructions for
|
||||
reporting bugs. If you distribute a modified version of GCC,
|
||||
|
2
gnu/dist/gcc4/libstdc++-v3/configure
vendored
2
gnu/dist/gcc4/libstdc++-v3/configure
vendored
@ -88372,7 +88372,7 @@ fi;
|
||||
# Turn a 'yes' into a suitable default.
|
||||
if test x$enable_symvers = xyes ; then
|
||||
if test $enable_shared = no ||
|
||||
test "x$LD" = x ; then
|
||||
test "x$LD" = x || test x$gcc_no_link = xyes; then
|
||||
enable_symvers=no
|
||||
elif test $with_gnu_ld = yes ; then
|
||||
enable_symvers=gnu
|
||||
|
Loading…
Reference in New Issue
Block a user