2006-12-16 Simon Martin <simartin@users.sourceforge.net>
PR c++/29475
* cp-tree.h (struct deferred_access_check): New structure to represent a
deferred access check. It replaces the previous representation as a tree.
(get_deferred_access_checks): Return a vector of struct
deferred_access_check instead of a tree list.
(perform_access_checks): Take a vector of struct deferred_access_check
instead of a tree list.
* semantics.c (struct deferred_access): Store the deferred access checks
as a vector of struct deferred_access_check instead of a tree list.
(push_deferring_access_checks): Handle the change in struct
deferred_access.
(get_deferred_access_checks): Likewise.
(pop_to_parent_deferring_access_checks): Likewise.
(perform_or_defer_access_check): Likewise.
(perform_access_checks): Take a vector of struct deferred_access_check
instead of a tree list.
* parser.c (struct tree_check): New structure to store various data
associated with a CPP_NESTED_NAME_SPECIFIER or CPP_TEMPLATE_ID token.
(struct cp_token): Changed the value field to be a union with a pointer to
a struct tree_check for CPP_NESTED_NAME_SPECIFIER or CPP_TEMPLATE_ID
tokens and a tree field for all other tokens.
(eof_token): Adjusted due to the change in struct cp_token.
(cp_lexer_get_preprocessor_token): Likewise.
(cp_lexer_purge_token): Likewise.
(cp_lexer_purge_tokens_after): Likewise.
(cp_lexer_print_token): Likewise.
(cp_parser_error): Likewise.
(cp_parser_identifier): Likewise.
(cp_parser_string_literal): Likewise.
(cp_parser_primary_expression): Likewise.
(cp_parser_unqualified_id): Likewise.
(cp_parser_parenthesized_expression_list): Likewise.
(cp_parser_storage_class_specifier_opt): Likewise.
(cp_parser_function_specifier_opt): Likewise.
(cp_parser_type_specifier): Likewise.
(cp_parser_simple_type_specifier): Likewise.
(cp_parser_initializer_list): Likewise.
(cp_parser_member_specification_opt): Likewise.
(cp_parser_attribute_list): Likewise.
(cp_parser_objc_expression): Likewise.
(cp_parser_objc_protocol_qualifiers): Likewise.
(cp_parser_objc_selector): Likewise.
(cp_parser_objc_declaration): Likewise.
(cp_parser_objc_statement): Likewise.
(cp_parser_omp_clause_name): Likewise.
(cp_parser_omp_clause_default): Likewise.
(cp_parser_omp_clause_schedule): Likewise.
(cp_parser_omp_parallel): Likewise.
(cp_parser_initial_pragma): Likewise.
(pragma_lex): Likewise.
(cp_parser_pre_parsed_nested_name_specifier): Likewise.
(cp_parser_nested_name_specifier_opt): Likewise.
Use cp_token::u::tree_check_value to save the token's value, the
associated deferred checks and its qualifying scope.
(cp_parser_template_id): Likewise.
(cp_parser_template_declaration_after_export): Adjusted the call to
get_deferred_access_checks.
(cp_parser_init_declarator): Take the access checks as a vector of struct
deferred_access_check instead of a tree list.
(cp_parser_single_declaration): Likewise.
(cp_parser_perform_template_parameter_access_checks): Likewise.
(cp_parser_simple_declaration): Adjusted the call to
cp_parser_init_declarator.
(cp_parser_explicit_specialization): Adjusted the call to
cp_parser_single_declaration.
From-SVN: r119961
2006-12-15 Andrew Pinski <pinski@gmail.com>
PR tree-opt/30140
* tree-inline.c (setup_one_parameter): Gimplify the statement if
the variable is not a gimple register variable.
From-SVN: r119883
2006-12-14 Richard Guenther <rguenther@suse.de>
PR tree-optimization/30197
* builtins.c (fold_builtin_cexp): New function to fold cexp
to cexpi and exp parts.
* tree-ssa-pre.c (try_combine_conversion): Also handle
REALPART_EXPR and IMAGPART_EXPR.
* gcc.c-torture/execute/complex-1.c: Fix function name.
* gcc.dg/builtins-61.c: New testcase.
From-SVN: r119860
2006-12-14 Richard Guenther <rguenther@suse.de>
PR tree-optimization/30198
* fold-const.c (fold_unary): Fold REALPART_EXPR of cexpi to cos.
Fold IMAGPART_EXPR of cexpi to sin.
* gcc.dg/builtins-60.c: New testcase.
From-SVN: r119858
2006-12-14 Andreas Tobler <a.tobler@schweiz.org>
* configure.ac: Add TARGET for x86_64-*-darwin*.
* Makefile.am (nodist_libffi_la_SOURCES): Add rules for 64-bit sources
for X86_DARWIN.
* src/x86/ffitarget.h: Set trampoline size for x86_64-*-darwin*.
* src/x86/darwin64.S: New file for x86_64-*-darwin* support.
* configure: Regenerate.
* Makefile.in: Regenerate.
* include/Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.
* testsuite/libffi.special/unwindtest_ffi_call.cc: New test case for
ffi_call only.
From-SVN: r119856
* tree-ssa-loop-ivopts.c: Include tree-affine.h.
(divide): Removed.
(constant_multiple_of): Fix order of operators for division.
(aff_combination_const, aff_combination_elt, aff_combination_scale,
aff_combination_add_elt, aff_combination_add, aff_combination_convert,
tree_to_aff_combination, add_elt_to_tree, unshare_aff_combination,
aff_combination_to_tree): Moved to tree-affine.c and made to work with
double_int coefficients.
(get_computation_aff, get_computation_at): Work with double_int
coefficients.
(get_computation_cost_at): Do not use divide.
(rewrite_use_nonlinear_expr, rewrite_use_address, rewrite_use_compare):
Assert that expressing the computation did not fail.
* tree-ssa-address.c: Include tree-affine.h.
(add_to_parts, most_expensive_mult_to_index, addr_to_parts,
create_mem_ref): Work with double_int coefficients.
* tree-affine.c: New file.
* tree-affine.h: New file.
* tree-flow.h (struct affine_tree_combination): Removed.
* Makefile.in (tree-affine.o): Add.
(tree-ssa-address.o, tree-ssa-loop-ivopts.o): Add tree-affine.h
dependency.
From-SVN: r119854
gcc/
* config/arm/arm.c (arm_output_fldmx): Output FLDMD instead of
FLDMX. Rename function to...
(vfp_output_fldmd): ...this.
(vfp_output_fstmx): Output FSTMD instead of FSTMX. Rename
function to...
(vfp_output_fstmd): ...this.
(vfp_emit_fstmx): Don't leave space in the frame layout for the
FSTMX format word. Rename function to...
(vfp_emit_fstmd): ...this.
(arm_get_vfp_saved_size): Don't add in space for the FSTMX format
word.
(arm_output_epilogue): Adjust comment to reflect use of FSTMD.
(arm_unwind_emit_sequence): Don't compensate for the FSTMX format
word. Also emit "vsave" assembler directives in such cases rather
than "save".
* config/arm/libunwind.S (gnu_Unwind_Restore_VFP,
gnu_Unwind_Save_VFP): Adjust comments.
(gnu_Unwind_Restore_VFP_D, gnu_Unwind_Save_VFP_D): New functions
for saving and restoring using FSTMD and FLDMD rather than
FSTMX and FLDMX.
(gnu_Unwind_Restore_VFP_D_16_to_31, gnu_Unwind_Restore_VFP_D_16_to_31):
New functions for saving and restoring the VFPv3 registers 16 .. 31.
* config/arm/pr-support.c (gnu_unwind_execute): Add conditional
compilation case to correctly handle unwind opcode 0xc8 when using
VFP.
* config/arm/unwind-arm.c (struct vfpv3_regs): New.
(DEMAND_SAVE_VFP_D, DEMAND_SAVE_VFP_V3): New flags.
(__gnu_Unwind_Save_VFP_D, __gnu_Unwind_Restore_VFP_D,
__gnu_Unwind_Save_VFP_D_16_to_31, __gnu_Unwind_Restore_VFP_D_16_to_31):
Declare.
(restore_non_core_regs): Restore registers using FLDMD rather than
FLDMX if required. Also handle restoration of VFPv3 registers.
(_Unwind_VRS_Pop): Handle saving and restoring of registers using
FSTMD and FLDMD if required; also handle VFPv3 registers 16 .. 31,
including cases where the caller specifies a range of registers
that overlaps the d15/d16 boundary.
From-SVN: r119838
2006-12-13 Jakub Jelinek <jakub@redhat.com>
* g++.dg/debug/vartrack1.C: New test.
* g++.dg/opt/ifcvt1.C: New test.
* gcc.dg/tls/opt-13.c: New test.
* gcc.dg/20060425-2.c: New test.
* g++.dg/opt/pr15054-2.C: New test.
* gcc.c-torture/execute/20060420-1.c: New test.
* gcc.c-torture/execute/20060412-1.c: New test.
* objc/compile/20060406-1.m: New test.
2006-12-08 Alexandre Oliva <aoliva@redhat.com>
* g++.dg/template/array17.C: New test.
2006-02-25 Alexandre Oliva <aoliva@redhat.com>
* gcc.target/powerpc/altivec-23.c: New test.
From-SVN: r119837
2006-12-13 Richard Guenther <rguenther@suse.de>
PR tree-optimization/17687
* builtins.def (BUILT_IN_CEXPI, BUILT_IN_CEXPIF, BUILT_IN_CEXPIL):
New builtins for imaginary argument cexp.
* builtin-types.def (BT_FN_COMPLEX_FLOAT_FLOAT,
BT_FN_COMPLEX_DOUBLE_DOUBLE, BT_FN_COMPLEX_LONGDOUBLE_LONGDOUBLE):
New required builtin types.
* builtins.c (expand_builtin_cexpi): Declare.
(mathfn_built_in): Handle BUILT_IN_CEXPI.
(expand_builtin_cexpi): New static helper.
(expand_builtin): Call it.
(do_mpfr_sincos): Adjust for CEXPI evaluation.
(fold_builtin_sincos): New function to fold sincos to cepxi.
* gcc.dg/builtins-59.c: New testcase.
From-SVN: r119824
2006-12-12 Andrew Pinski <pinskia@gmail.com>
* tree-vect-transform.c (vect_permute_load_chain):
Set DECL_GIMPLE_REG_P to true for the vect_perm_*
temp variables.
From-SVN: r119818