convert.c (convert_to_integer): Use fold_convert instead of fold_build1 (NOP_EXPR, ...).
2005-12-02 Richard Guenther <rguenther@suse.de>
* convert.c (convert_to_integer): Use fold_convert instead
of fold_build1 (NOP_EXPR, ...). Use tree_int_cst_sgn < 0
instead of comparing against 0. Use build_int_cst instead
of converting integer_zero_node.
Roger Sayle [Fri, 2 Dec 2005 04:40:05 +0000 (04:40 +0000)]
tree.h (TREE_OVERFLOW): Make this flag/predicate specific to constant nodes, i.e.
* tree.h (TREE_OVERFLOW): Make this flag/predicate specific to
constant nodes, i.e. INTEGER_CST, REAL_CST, etc...
* tree-vrp.c (compare_values): Only check TREE_OVERFLOW for
integer constant comparisons.
ada/
* utils.c (max_size): Only test for TREE_OVERFLOW on INTEGER_CST
nodes.
Jon Grimm [Fri, 2 Dec 2005 02:30:42 +0000 (02:30 +0000)]
dfp.h, dfp.c: New files.
2005-12-02 Jon Grimm <jgrimm2@us.ibm.com>
Janis Johnson <janis187@us.ibm.com>
David Edelsohn <dje@watson.ibm.com>
Ben Elliston <bje@au.ibm.com>
* dfp.h, dfp.c: New files.
* Makefile.in (DECNUM, DECNUMINC, LIBDECNUMBER): New variables.
(DECNUM_H): Likewise.
(LIBDEPS, LIBS, BACKEND): Append $(LIBDECNUMBER).
(INCLUDES): Append $(DECNUMINC).
(OBJS-common): Add dfp.o.
(dfp.o): New rule.
* real.h (EXP_BITS): Pinch one bit to ..
(struct real_value): Add decimal field.
(real_format): Change table size, update documentation.
(REAL_MODE_FORMAT): Update for to handle float, decimal float.
(real_from_string3): Declare.
(decimal_single_format): Declare.
(decimal_double_format): Declare.
(decimal_quad_format): Declare.
(REAL_VALUE_TO_TARGET_DECIMAL32): New.
(REAL_VALUE_TO_TARGET_DECIMAL64): New.
(REAL_VALUE_TO_TARGET_DECIMAL128): New.
* real.c: Include dfp.h.
(normalize): Early return for decimal floats.
(do_add): Zero decimal field.
(do_compare): Call do_decimal_compare for decimal floats.
(do_fix_trunc): Likewise, call decimal_do_fix_trunc.
(real_arithmetic): Call decimal_real_arithmetic for decimal
floating point operands.
(real_identical): If a and b are of differing radix, return false.
(real_to_integer): Call decimal_real_to_integer if the value is a
decimal float.
(real_to_integer2): Likewise, call decimal_real_to_integer2.
(real_to_decimal): Likewise, call decimal_real_to_decimal.
(real_to_hexadecimal): Place "N/A" in the return string for
decimal float.
(real_from_string3): New variant, given a mode.
(real_maxval): Use decimal_real_maxval for decimal floats.
(round_for_format): Use decimal_round_for_format for decimals.
(real_convert): Use decimal_real_convert where appropriate.
(significand_size): Handle base 10.
(encode_decimal_single, decode_decimal_single,
encode_decimal_double, decode_decimal_double, encode_decimal_quad,
decode_decimal_quad): New functions.
(decimal_single_format): New.
(decimal_double_format): New.
(decimal_quad_format): New.
* machmode.def: Add SD, DD and TD decimal floating point modes.
* machmode.h (FLOAT_MODE_P, SCALAR_FLOAT_MODE_P, MODES_WIDEN_P):
Include MODE_DECIMAL_FLOAT.
(DECIMAL_FLOAT_MODE_P): New.
* mode-classes.def (MODE_DECIMAL_FLOAT): New mode class.
* genmodes.c (struct mode_data): Add counter field.
(struct mode_data): Update comment for format.
(blank_mode): Initialise counter field.
(new_mode): Increment counter field for each mode defined.
(complete_mode): Handle MODE_DECIMAL_FLOAT, update check for mode
using a format.
(make_complex_modes): Handle modes containing `D'.
(DECIMAL_FLOAT_MODE, FRACTIONAL_DECIMAL_FLOAT_MODE): New.
(make_decimal_float_mode): New.
(reset_float_format): Handle MODE_DECIMAL_FLOAT.
(cmp_modes): Compare counter field if other characteristics
similar.
(emit_real_format_for_mode): Support formats for decimal floats.
* doc/rtl.texi (Machine Modes): Document SD, DD and TDmodes.
Document MODE_DECIMAL_FLOAT.
Co-Authored-By: Ben Elliston <bje@au.ibm.com> Co-Authored-By: David Edelsohn <dje@watson.ibm.com> Co-Authored-By: Janis Johnson <janis187@us.ibm.com>
From-SVN: r107861
parser.c (cp_parser_make_typename_type): Call make_typename_type with tf_none instead of magic value 0.
* parser.c (cp_parser_make_typename_type): Call make_typename_type
with tf_none instead of magic value 0.
(cp_parser_explicit_instantiation): Call do_type_instantiation
with tf_error instead of magic value 1.
(cp_parser_elaborated_type_specifier): Call make_typename_type
with tf_error instead of magic value 1.
(cp_parser_class_name): Likewise.
(cp_parser_lookup_name): Likewise.
Anthony Green [Thu, 1 Dec 2005 19:33:42 +0000 (19:33 +0000)]
re PR bootstrap/25207 (bootstrap fails on libjava if alsa headers present but no -lasound.)
2005-12-01 Anthony Green <green@redhat.com>
PR bootstrap/25207
* configure.ac: Make sure we have an alsa library in addition to
the headers. This extra test is required for systems with
multilibs.
* configure: Rebuilt.
Paul Thomas [Thu, 1 Dec 2005 06:58:04 +0000 (06:58 +0000)]
re PR fortran/24789 ([gfortran] ICE when assigning to array of strings)
2005-12-01 Paul Thomas <pault@gcc.gnu.org>
PR fortran/24789
* trans-decl.c (gfc_get_symbol_decl): Move the expression for
unit size of automatic character length, dummy pointer array
elements down a few lines from the version that fixed PR15809.
2005-12-01 Paul Thomas <pault@gcc.gnu.org>
PR fortran/24789
* gfortran.dg/auto_char_dummy_array_2.f90: New test.
20041106-1.c, [...]: Match "attribute ignored" warnings when "packing" is the same as the ABI layout.
* gcc.dg/20041106-1.c, gcc.dg/20030321-1.c, gcc.dg/pr17112-1.c,
gcc.dg/pr17112-1.c, g++.dg/other/packed1.C,
g++.dg/other/crash-4.C, g++.dg/ext/packed8.C: Match "attribute
ignored" warnings when "packing" is the same as the ABI layout.
Bernhard Fischer [Wed, 30 Nov 2005 23:57:44 +0000 (00:57 +0100)]
re PR fortran/21302 (Max line length in free form mode)
2005-11-30 Bernhard Fischer <rep.nop@aon.at>
PR fortran/21302
* lang.opt: New options -ffree-line-length- and -ffree-line-length-none.
* gfortran.h: Add free_line_length and add description of
free_line_length and fixed_line_length.
* options.c (gfc_init_options, gfc_handle_option): Initialize
and set free_line_length and fixed_line_length.
* scanner.c (load_line): Set free_line_length to 132 and
fixed_line_length to 72 or user requested values.
* scanner.c: Typo in comment.
* invoke.texi: Document -ffree-line-length- and
-ffree-line-length-none
gfortran.dg/line_length_1.f: New test:
gfortran.dg/line_length_2.f90: Ditto.
Richard Guenther [Wed, 30 Nov 2005 20:55:41 +0000 (20:55 +0000)]
re PR tree-optimization/22501 ([meta-bug] tramp3d-v4 missed optimizations)
2005-11-30 Richard Guenther <rguenther@suse.de>
PR tree-optimization/22501
* tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
function split out from ...
(forward_propagate_addr_expr): ... here. Use it to propagate
ADDR_EXPRs to all uses.
Paul Thomas [Wed, 30 Nov 2005 17:26:40 +0000 (17:26 +0000)]
[multiple changes]
2005-11-30 Paul Thomas <pault@gcc.gnu.org>
PR fortran/15809
* trans-decl.c (gfc_get_symbol_decl): In the case of automatic
character length, dummy pointer arrays, build an expression for
unit size of the array elements, to be picked up and used in the
descriptor dtype.
* trans-io.c (gfc_trans_transfer): Modify the detection of
components of derived type arrays to use the gfc_expr references
instead of the array descriptor dtype. This allows the latter
to contain expressions.
2005-11-30 Erik Edelmann <erik.edelmann@iki.fi>
PR fortran/15809
* trans-array.c (gfc_trans_deferred_array): Allow PARM_DECLs past
in addition to VAR_DECLs.
2005-11-30 Paul Thomas <pault@gcc.gnu.org>
PR fortran/15809
* gfortran.dg/auto_char_dummy_array.f90: New test.
Paolo Bonzini [Wed, 30 Nov 2005 08:20:23 +0000 (08:20 +0000)]
simplify-rtx.c (simplify_plus_minus): Remove final parameter.
2005-11-30 Paolo Bonzini <bonzini@gnu.org>
* simplify-rtx.c (simplify_plus_minus): Remove final parameter.
Always produce an output if we can remove NEGs or canonicalize
(minus (minus ...)) expressions. Provide a fast path for the
two-operand case.
(simplify_gen_binary): Do not call simplify_plus_minus.
(simplify_binary_operation_1): Reassociate at the end of the
function.
Roger Sayle [Tue, 29 Nov 2005 03:06:14 +0000 (03:06 +0000)]
expmed.c (div_cost): Replace with...
* expmed.c (div_cost): Replace with...
(sdiv_cost, udiv_cost): New.
(init_expmed): Initialize sdiv_cost and udiv_cost, not div_cost.
Rename the div and mod fields, used to initialize sdiv_pow2_cheap
and smod_pow2_cheap, to sdiv_32 and smod_32 to avoid confusion.
(expand_divmod): Replace use of div_cost with either sdiv_cost
or udiv_cost depending upon the signedness of the operation.
libfortran/24991
* acinclude.m4 (LIBGFOR_CHECK_PRAGMA_WEAK): Rename to...
(LIBGFOR_GTHREAD_WEAK): ... this. Define SUPPORTS_WEAK rather
than HAVE_PRAGMA_WEAK. Define GTHREAD_USE_WEAK to 0 on hosts
that shouldn't use weak in gthr.h.
* configure.ac: Use LIBGFOR_GTHREAD_WEAK instead of
LIBGFOR_CHECK_PRAGMA_WEAK.
* config.h.in: Regenerated.
* configure: Regenerated.
* io/io.h (SUPPORTS_WEAK): Don't define here.
Kean Johnston [Mon, 28 Nov 2005 18:01:50 +0000 (18:01 +0000)]
re PR testsuite/19231 (Execute failure in gcc.c-torture/execute/builtins/strlen-3.c with -fpic/-fPIC)
* g++.dg/opt/range-test-1.C: Prevent re-inclusion of system
headers.
* g++.old-deja/g++.law/profile1.C: No longer expect fail on OSR5.
* gcc.c-torture/compile/20000804-1.c: Skip if using -fPIC on X86.
* gcc.target/i386/asm-3.c: Ditto.
* gcc.target/i386/clobbers.c: Ditto.
* gcc.dg/tree-ssa/ssa-dce-2.c: Make t() static and prototype it.
* gcc.target/i386/cmov1.c: Make magic* static so it matches the
test regexp.
* gcc.target/i386/mul.c: Ditto.
* gcc.target/i386/ssetype-1.c: Ditto.
* gcc.dg/20040813-1.c: Skip on SVR5 systems.
* gcc.c-torture/execute/builtins/strlen-3.c: Declare variables as
static so the test works with -fPIC mode too. Based on comment in
PR19231 by Pinski.
* gcc.dg/nest.c: No longer fail on SCO systems as it has -pg again.
Bernd Schmidt [Mon, 28 Nov 2005 12:59:34 +0000 (12:59 +0000)]
bfin.c (bfin_secondary_reload): Renamed from secondary_input_reload_class, made static.
* config/bfin/bfin.c (bfin_secondary_reload): Renamed from
secondary_input_reload_class, made static. Adapt to new
infrastructure.
(secondary_output_reload_class): Delete.
(TARGET_SECONDARY_RELOAD): New macro.
* config/bfin/bfin.h (SECONDARY_INPUT_RELOAD_CLASS,
SECONDARY_OUTPUT_RELOAD_CLASS): Delete.
Nathan Sidwell [Mon, 28 Nov 2005 10:34:30 +0000 (10:34 +0000)]
re PR c++/21166 (g++ gives error on reference to packed structure elements)
.: PR c++/21166
* c-decl.c (finish_struct): Only set DECL_PACKED on a field
when its natural alignment is > BITS_PER_UNIT.
* stor-layout.c (finalize_type_size): Revert my patch of 2005-08-08.
* c-common.c (handle_packed_attribute): Ignore packing on a field
whose type is naturally char aligned.
cp:
PR c++/21166
* class.c (check_field_decls): Only set DECL_PACKED on a field
when its natural alignment is > BITS_PER_UNIT.
Roger Sayle [Mon, 28 Nov 2005 07:29:43 +0000 (07:29 +0000)]
re PR middle-end/20219 (Missed optimisation sin / tan --> cos)
PR middle-end/20219
* fold-const.c (fold binary) <RDIV_EXPR>: Optimize
sin(x)/tan(x) as cos(x) and tan(x)/sin(x) as 1.0/cos(x)
when flag_unsafe_math_optimizations is set and
we don't care about NaNs or Infinities.
Move x/expN(y) and x/pow(y,z) transformation into common
flag_unsafe_math_optimizations section.
testsuite/
* gcc.dg/builtins-20.c: Add checks for sin(x)/tan(x) and
tan(x)/sin(x) transformations.
Alan Modra [Mon, 28 Nov 2005 03:57:05 +0000 (03:57 +0000)]
invoke.texi (powerpc msdata-data): Static data doesn't go in small data sections.
* doc/invoke.texi (powerpc msdata-data): Static data doesn't go in
small data sections.
* config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Make global.
* config/rs6000/rs6000-protos.h: (rs6000_elf_in_small_data_p): Declare.
* config/rs6000/sysv4.h (ASM_OUTPUT_ALIGNED_LOCAL): Rename to..
(ASM_OUTPUT_ALIGNED_DECL_LOCAL): ..this, adding extra parm. Don't
output locals to sbss if !rs6000_elf_in_small_data_p.
(ASM_OUTPUT_ALIGNED_BSS): Adjust for above.
Alan Modra [Mon, 28 Nov 2005 03:52:01 +0000 (03:52 +0000)]
re PR target/24997 (ICE with -ftree-vectorize)
PR target/24997
* config/rs6000/rs6000.c (legitimate_indexed_address_p): Allow pattern
generated by reload.
* config/rs6000/predicates.md (indexed_or_indirect_operand): Use
indexed_or_indirect_address.
(indexed_or_indirect_address): Don't test for base reg. Call
address_operand last. Make it a special predicate.