alpha.md, [...]: Always use set_unique_reg_note to add REG_EQUAL notes.
* config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
Always use set_unique_reg_note to add REG_EQUAL notes.
From-SVN: r120353
2007-01-02 19:50:33 +01:00
|
|
|
2007-01-02 Steven Bosscher <steven@gcc.gnu.org>
|
|
|
|
|
|
|
|
* config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
|
|
|
|
m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
|
|
|
|
rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
|
|
|
|
Always use set_unique_reg_note to add REG_EQUAL notes.
|
|
|
|
|
2007-01-02 19:06:37 +01:00
|
|
|
2007-01-02 Kazu Hirata <kazu@codesourcery.com>
|
|
|
|
|
|
|
|
Revert:
|
|
|
|
2007-01-02 Kazu Hirata <kazu@codesourcery.com>
|
|
|
|
|
|
|
|
* alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
|
|
|
|
* cfgbuild.c (find_basic_blocks): Likewise.
|
|
|
|
* cfgrtl.c (rtl_create_basic_block): Likewise.
|
|
|
|
* function.c (temp_slots_at_level): Likewise.
|
|
|
|
* reg-stack.c (stack_regs_mentioned): Likewise.
|
|
|
|
* regclass.c (allocate_reg_info): Likewise.
|
|
|
|
* tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
|
|
|
|
set_bb_for_stmt, move_block_to_fn): Likewise.
|
|
|
|
* tree-complex.c (tree_lower_complex): Likewise.
|
|
|
|
* vec.h (VEC_safe_grow_cleared): New.
|
|
|
|
|
|
|
|
2007-01-02 Ian Lance Taylor <iant@google.com>
|
2007-01-02 18:49:07 +01:00
|
|
|
|
|
|
|
* c-common.c (c_common_truthvalue_conversion): When warning about
|
|
|
|
using an assignment as a truth value, set TREE_NO_WARNING.
|
|
|
|
|
2007-01-02 18:33:25 +01:00
|
|
|
2007-01-02 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
|
|
|
|
|
|
|
|
PR middle-end/7651
|
|
|
|
* c.opt (Wold-style-declaration): New.
|
|
|
|
* doc/invoke.texi (C-only Warning Options): New.
|
|
|
|
(Wold-style-declaration): Document it.
|
|
|
|
(Wextra): Enabled by -Wextra.
|
|
|
|
* c-opts.c (c_common_post_options): Enabled by -Wextra.
|
|
|
|
* c-decl.c (declspecs_add_scspec): Replace -Wextra with
|
|
|
|
-Wold-style-declaration.
|
|
|
|
|
2007-01-02 18:03:22 +01:00
|
|
|
2007-01-02 Kazu Hirata <kazu@codesourcery.com>
|
|
|
|
|
|
|
|
* alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
|
|
|
|
* cfgbuild.c (find_basic_blocks): Likewise.
|
|
|
|
* cfgrtl.c (rtl_create_basic_block): Likewise.
|
|
|
|
* function.c (temp_slots_at_level): Likewise.
|
|
|
|
* reg-stack.c (stack_regs_mentioned): Likewise.
|
|
|
|
* regclass.c (allocate_reg_info): Likewise.
|
|
|
|
* tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
|
|
|
|
set_bb_for_stmt, move_block_to_fn): Likewise.
|
|
|
|
* tree-complex.c (tree_lower_complex): Likewise.
|
|
|
|
* vec.h (VEC_safe_grow_cleared): New.
|
|
|
|
|
c-common.c (c_common_nodes_and_builtins): Since variants of void_type_node get built before it is given a name...
2007-01-02 Douglas Gregor <doug.gregor@gmail.com>
* c-common.c(c_common_nodes_and_builtins): Since variants of
void_type_node get built before it is given a name, we need to
give those variants the name, too.
(complete_array_type): We need to work with the canonical main
type of the array, from which we will build the qualified version.
* params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
* print-tree.c (print_node): Display canonical type information
for each type.
* stor-layout.c (layout_type): When we don't know the
alignment of a type for which we're building an array, we end up
guessing wrong, so make the type require structural equality.
* tree.c (make_node_stat): When we build a new type, it is its
own canonical type.
(build_type_attribute_qual_variant): When building an attribute
variant, its canonical type is the non-attribute variant. However,
if the attributes are target-dependent and they differ, we need to
use structural equality checks for this type.
(build_qualified_type): A qualified type is not equivalent to its
unqualified variant; set the canonical type appropriately.
(build_distinct_type_copy): When building a distinct type from
another type, the new type is its own canonical type.
(build_variant_type_copy): When building a new type variant, we
assume that it is equivalent to the original type.
(build_pointer_type_for_mode): When building a pointer type, also
build a canonical type pointer.
(build_reference_type_for_mode): When building a reference type,
also build a canonical type reference.
(build_index_type): When we can't hash an index type (e.g.,
because its maximum value is negative), the index type requires
structural equality tests.
(build_array_type): Build the canonical form of an array type.
(build_function_type): Function types require structural equality,
because they contain default arguments, attributes, etc.
(build_method_type_directly): Ditto for method types.
(build_offset_type): Build the canonical offset type.
(build_complex_type): Build the canonical vector type.
(make_vector_type): Build the canonical vector type.
* tree.h (TYPE_CANONICAL): New.
(TYPE_STRUCTURAL_EQUALITY_P): New.
(SET_TYPE_STRUCTURAL_EQUALITY): New.
(struct tree_type): Added "canonical" field.
* params.h (VERIFY_CANONICAL_TYPES): New.
* doc/c-tree.texi (TYPE_CANONICAL): Document.
(TYPE_STRUCTURAL_EQUALITY_P): Document.
(SET_TYPE_STRUCTURAL_EQUALITY): Document.
* doc/invoke.texi (verify-canonical-types): Document --param
parameter for verifying canonical types.
2007-01-02 Douglas Gregor <doug.gregor@gmail.com>
* typeck.c (structural_comptypes): Renamed from "comptypes".
(comptypes): Use canonical type information to perform fast type
comparison. When VERIFY_CANONICAL_TYPES, verify that the
canonical type comparison returns the same results as we would see
from the current, structural check. Support COMPARE_STRUCTURAL
when we need structural checks.
* decl.c (typename_compare): Fix comment.
(build_typename_type): TYPENAME_TYPE nodes require structural
equality checks, because they resolve different based on the
current class type.
(make_unbound_class_template): UNBOUND_CLASS_TEMPLATE nodes
require structural equality checks (for now).
(build_ptrmemfunc_type): Build the canonical pointer to member
function type.
(compute_array_index_type): Whenever we build a new index type
to represent the size of an array in a template, we need to mark
this index type as requiring structural equality. This goes for
arrays with value-dependent sizes with the current ABI, or all
arrays with ABI-1.
* tree.c (cplus_array_hash): New.
(struct cplus_array_info): New.
(cplus_array_compare): New.
(cplus_array_htab): New.
(build_cplus_array_type_1): Use a hash table to cache the array
types we build. Build the canonical array type for each array
type.
(cp_build_qualified_type_real): When building a cv-qualified array
type, use the hash table of array types and build canonical array
types as necessary.
(bind_template_template_parm): BOUND_TEMPLATE_TEMPLATE_PARM nodes
use structural equality (for now).
* cp-tree.h (COMPARE_STRUCTURAL): New.
* pt.c (canonical_template_parms): New.
(canonical_type_parameter): New.
(process_template_parm): Find the canonical type parameter.
(lookup_template_class): When we have named the primary template
type, set the canonical type for our template class to the primary
template type. If any of the template arguments need structural
equality checks, the template class needs structural equality
checks.
(tsubst): When reducing the level of a template template
parameter, we require structural equality tests for the resulting
parameter because its template parameters have not had their types
canonicalized. When reducing a template type parameter, find the
canonical reduced type parameter.
(any_template_arguments_need_structural_equality_p): New.
2007-01-02 Douglas Gregor <doug.gregor@gmail.com>
* objc-act.c (objc_build_volatilized_type): Keep track of
canonical types.
(objc_get_protocol_qualified_type): Ditto.
From-SVN: r120341
2007-01-02 15:23:26 +01:00
|
|
|
2007-01-02 Douglas Gregor <doug.gregor@gmail.com>
|
|
|
|
|
|
|
|
* c-common.c(c_common_nodes_and_builtins): Since variants of
|
|
|
|
void_type_node get built before it is given a name, we need to
|
|
|
|
give those variants the name, too.
|
|
|
|
(complete_array_type): We need to work with the canonical main
|
|
|
|
type of the array, from which we will build the qualified version.
|
|
|
|
* params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
|
|
|
|
* print-tree.c (print_node): Display canonical type information
|
|
|
|
for each type.
|
|
|
|
* stor-layout.c (layout_type): When we don't know the
|
|
|
|
alignment of a type for which we're building an array, we end up
|
|
|
|
guessing wrong, so make the type require structural equality.
|
|
|
|
* tree.c (make_node_stat): When we build a new type, it is its
|
|
|
|
own canonical type.
|
|
|
|
(build_type_attribute_qual_variant): When building an attribute
|
|
|
|
variant, its canonical type is the non-attribute variant. However,
|
|
|
|
if the attributes are target-dependent and they differ, we need to
|
|
|
|
use structural equality checks for this type.
|
|
|
|
(build_qualified_type): A qualified type is not equivalent to its
|
|
|
|
unqualified variant; set the canonical type appropriately.
|
|
|
|
(build_distinct_type_copy): When building a distinct type from
|
|
|
|
another type, the new type is its own canonical type.
|
|
|
|
(build_variant_type_copy): When building a new type variant, we
|
|
|
|
assume that it is equivalent to the original type.
|
|
|
|
(build_pointer_type_for_mode): When building a pointer type, also
|
|
|
|
build a canonical type pointer.
|
|
|
|
(build_reference_type_for_mode): When building a reference type,
|
|
|
|
also build a canonical type reference.
|
|
|
|
(build_index_type): When we can't hash an index type (e.g.,
|
|
|
|
because its maximum value is negative), the index type requires
|
|
|
|
structural equality tests.
|
|
|
|
(build_array_type): Build the canonical form of an array type.
|
|
|
|
(build_function_type): Function types require structural equality,
|
|
|
|
because they contain default arguments, attributes, etc.
|
|
|
|
(build_method_type_directly): Ditto for method types.
|
|
|
|
(build_offset_type): Build the canonical offset type.
|
|
|
|
(build_complex_type): Build the canonical vector type.
|
|
|
|
(make_vector_type): Build the canonical vector type.
|
|
|
|
* tree.h (TYPE_CANONICAL): New.
|
|
|
|
(TYPE_STRUCTURAL_EQUALITY_P): New.
|
|
|
|
(SET_TYPE_STRUCTURAL_EQUALITY): New.
|
|
|
|
(struct tree_type): Added "canonical" field.
|
|
|
|
* params.h (VERIFY_CANONICAL_TYPES): New.
|
|
|
|
* doc/c-tree.texi (TYPE_CANONICAL): Document.
|
|
|
|
(TYPE_STRUCTURAL_EQUALITY_P): Document.
|
|
|
|
(SET_TYPE_STRUCTURAL_EQUALITY): Document.
|
|
|
|
* doc/invoke.texi (verify-canonical-types): Document --param
|
|
|
|
parameter for verifying canonical types.
|
|
|
|
|
config.gcc (powerpc-*-eabispe*, [...]): Add rs6000/e500.h to tm_file.
* config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
tm_file.
* config/rs6000/e500.h: New.
* config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
Remove.
* config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
TARGET_E500_DOUBLE): Remove.
* config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
* config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
* config/rs6000/rs6000.c (rs6000_override_options): Use
CHECK_E500_OPTIONS.
From-SVN: r120340
2007-01-02 14:08:01 +01:00
|
|
|
2007-01-02 Joseph Myers <joseph@codesourcery.com>
|
|
|
|
|
|
|
|
* config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
|
|
|
|
powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
|
|
|
|
powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
|
|
|
|
powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
|
|
|
|
tm_file.
|
|
|
|
* config/rs6000/e500.h: New.
|
|
|
|
* config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
|
|
|
|
TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
|
|
|
|
Remove.
|
|
|
|
* config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
|
|
|
|
TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
|
|
|
|
TARGET_E500_DOUBLE): Remove.
|
|
|
|
* config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
|
|
|
|
TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
|
|
|
|
* config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
|
|
|
|
* config/rs6000/rs6000.c (rs6000_override_options): Use
|
|
|
|
CHECK_E500_OPTIONS.
|
|
|
|
|
rs6000.c (print_operand): Check (TARGET_SPE || TARGET_E500_DOUBLE), not TARGET_E500, for %y.
* config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
TARGET_E500_DOUBLE), not TARGET_E500, for %y.
(rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
rs6000_emit_cmove): Don't check TARGET_E500.
* config/rs6000/rs6000.md (bunordered, bordered, sunordered,
sordered): Don't check TARGET_E500.
From-SVN: r120339
2007-01-02 14:03:59 +01:00
|
|
|
2007-01-02 Joseph Myers <joseph@codesourcery.com>
|
|
|
|
|
|
|
|
* config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
|
|
|
|
TARGET_E500_DOUBLE), not TARGET_E500, for %y.
|
|
|
|
(rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
|
|
|
|
rs6000_emit_cmove): Don't check TARGET_E500.
|
|
|
|
* config/rs6000/rs6000.md (bunordered, bordered, sunordered,
|
|
|
|
sordered): Don't check TARGET_E500.
|
|
|
|
|
2007-01-02 07:34:09 +01:00
|
|
|
2007-01-01 Eric Christopher <echristo@apple.com>
|
|
|
|
|
|
|
|
* config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
|
|
|
|
HARD_REGISTER_NUM_P.
|
|
|
|
|
2007-01-02 05:32:07 +01:00
|
|
|
2007-01-01 Roger Sayle <roger@eyesopen.com>
|
|
|
|
|
|
|
|
* fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
|
|
|
|
"X eq/ne (C1^C2)". Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
|
|
|
|
has no side-effects. Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
|
|
|
|
eq/ne Y".
|
|
|
|
|
2007-01-02 04:35:17 +01:00
|
|
|
2007-01-01 Mike Stump <mrs@apple.com>
|
|
|
|
|
|
|
|
* configure.ac: Remove support for building with Apple's gcc-3.1.
|
|
|
|
|
2007-01-02 01:38:21 +01:00
|
|
|
2007-01-02 Joseph Myers <joseph@codesourcery.com>
|
|
|
|
|
|
|
|
PR middle-end/30311
|
|
|
|
* caller-save.c (add_stored_regs): Only handle SUBREGs if inner
|
|
|
|
REG is a hard register. Do not modify REG before calling
|
|
|
|
subreg_nregs.
|
|
|
|
* rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
|
|
|
|
multiple of the size of YMODE for certain lowpart cases.
|
|
|
|
|
2007-01-01 23:19:58 +01:00
|
|
|
2007-01-01 Andrew Pinski <pinskia@gmail.com>
|
|
|
|
|
|
|
|
PR middle-end/30253
|
|
|
|
* gimplify (voidify_wrapper_expr): Update for
|
2007-01-01 23:27:27 +01:00
|
|
|
GIMPLE_MODIFY_STMT.
|
2007-01-01 23:19:58 +01:00
|
|
|
|
2007-01-01 23:03:23 +01:00
|
|
|
2007-01-01 Andreas Schwab <schwab@suse.de>
|
|
|
|
|
|
|
|
PR target/29166
|
|
|
|
* config/ia64/ia64.c (ia64_compute_frame_size): Account space for
|
|
|
|
save of BR0 in extra_spill_size instead of spill_size.
|
|
|
|
(ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
|
|
|
|
area.
|
|
|
|
(ia64_expand_epilogue): Restore BR0 from its new location.
|
|
|
|
|
2007-01-01 23:01:59 +01:00
|
|
|
2007-01-01 Andrew Pinski <pinskia@gmail.com>
|
|
|
|
|
|
|
|
* gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
|
|
|
|
Use a temporary variable if the left hand side is not a gimple
|
|
|
|
register.
|
|
|
|
|
2007-01-01 22:58:19 +01:00
|
|
|
2007-01-01 Andrew Pinski <pinskia@gmail.com>
|
|
|
|
|
|
|
|
* gimplify.c (gimplify_return_expr): Make the temporary variable
|
|
|
|
for the return expression, a gimple register variable.
|
|
|
|
|
2007-01-01 22:53:31 +01:00
|
|
|
2007-01-01 Jan Hubicka <jh@suse.cz>
|
|
|
|
|
|
|
|
* emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
|
|
|
|
INSN_LIST.
|
|
|
|
|
2007-01-01 21:58:38 +01:00
|
|
|
2007-01-01 Mike Stump <mrs@apple.com>
|
|
|
|
|
|
|
|
* configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
|
|
|
|
.literal16.
|
|
|
|
* config/darwin.c (machopic_select_rtx_section): Use
|
|
|
|
HAVE_GAS_LITERAL16.
|
|
|
|
(darwin_mergeable_constant_section): Likewise.
|
|
|
|
* configure: Regenerate.
|
|
|
|
* config.in: Regenerate.
|
|
|
|
|
2007-01-01 21:11:09 +01:00
|
|
|
2007-01-01 Jan Hubicka <jh@suse.cz>
|
|
|
|
Andrew Pinski <pinskia@gmail.com>
|
|
|
|
|
|
|
|
* cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
|
|
|
|
before starting IPA passes.
|