aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.c
AgeCommit message (Collapse)AuthorFilesLines
2002-08-04Index: ChangeLogGeoffrey Keating1-3/+0
2002-08-04 Geoffrey Keating <geoffk@redhat.com> * Makefile.in (sdbout.o): Doesn't need $(OBSTACK_H). * collect2.h (permanent_obstack): Delete declaration. * collect2.c (permanent_obstack): Delete definition. (main): Don't initialise permanent_obstack. Use xstrdup instead. * expr.c: Don't include obstack.h. (permanent_obstack): Delete declaration. * function.c: Don't include obstack.h. (permanent_obstack): Delete declaration. * integrate.c: Don't include obstack.h. (function_maybepermanent_obstack): Delete declaration. * print-tree.c (debug_tree): Use x*alloc not permalloc. * sdbout.c (gen_fake_label): Use x*alloc not permalloc. * tlink.c (pfgets): Use xstrdup not permanent_obstack. * toplev.c (lang_independent_init): Rename init_obstacks to init_ttree. * tree.h: Rename init_obstacks to init_ttree. Remove declarations of permalloc, expralloc, perm_calloc. * tree.c (permanent_obstack): Delete definition. (init_ttree): Rename from init_obstacks. (permalloc): Delete. (perm_calloc): Delete. (dump_tree_statistics): Don't print information about permanent_obstack. * varasm.c (assemble_start_function): Use xstrdup instead of permalloc/strcpy. (assemble_variable): Likewise. * config/alpha/alpha.c (unicosmk_need_dex): Use xmalloc instead of permalloc. (unicosmk_add_extern): Likewise. * config/c4x/c4x.c (c4x_external_ref): Likewise. (c4x_global_label): Likewise. * config/frv/frv.c (frv_encode_section_info): Likewise. * config/i386/winnt.c (i386_pe_record_external_function): Likewise. (i386_pe_record_exported_symbol): Likewise. * config/mips/mips.c (mips_output_external): Likewise. (mips_output_external_libcall): Likewise. * config/pa/pa.c: (permanent_obstack): Delete declaration. (output_call): Use ggc_strdup instead of allocating on permanent_obstack. * config/romp/romp.c: Include ggc.h. (get_symref): Don't declare permanent_obstack, use ggc_strdup intead of permanent_obstack. * config/rs6000/aix31.h (ASM_OUTPUT_EXTERNAL): Use concat instead of permalloc. * config/rs6000/rs6000.c (rs6000_gen_section_name): Use xmalloc instead of permalloc * config/rs6000/xcoff.h (ASM_OUTPUT_EXTERNAL): Use concat instead of permalloc. * config/vax/vax.c (vms_check_external): Use xmalloc instead of permalloc. Index: cp/ChangeLog 2002-08-04 Geoffrey Keating <geoffk@redhat.com> * cvt.c (ocp_convert): Delete obsolete code. * parse.y (permanent_obstack): Delete declaration. * pt.c (permanent_obstack): Delete declaration. * repo.c (permanent_obstack): Delete declaration. (open_repo_file): Use xmalloc instead of permanent_obstack. (init_repo): Use xstrdup instead of permanent_obstack. Index: java/ChangeLog 2002-08-04 Geoffrey Keating <geoffk@redhat.com> * class.c: (permanent_obstack): Delete declaration. * constants.c: (permanent_obstack): Delete declaration. * except.c: (permanent_obstack): Delete declaration. * expr.c: (permanent_obstack): Delete declaration. * jcf-parse.c: (permanent_obstack): Delete declaration. (saveable_obstack): Delete declaration. * parse.h: (permanent_obstack): Delete declaration. * typeck.c: (permanent_obstack): Delete declaration. From-SVN: r56035
2002-08-03explow.c (int_expr_size): New fn.Jason Merrill1-1/+1
* explow.c (int_expr_size): New fn. * expr.c (expand_expr) [CONSTRUCTOR]: Use it. * expr.h: Declare it. From-SVN: r56009
2002-08-02langhooks-def.h (LANG_HOOKS_EXPR_SIZE): New macro.Jason Merrill1-2/+3
* langhooks-def.h (LANG_HOOKS_EXPR_SIZE): New macro. * langhooks.c (lhd_expr_size): Define default. * langhooks.h (struct lang_hooks): Add expr_size. * explow.c (expr_size): Call it. * expr.c (store_expr): Don't copy an expression of size zero. (expand_expr) [CONSTRUCTOR]: Use expr_size to calculate how much to store. * Makefile.in (builtins.o): Depend on langhooks.h. * cp-lang.c (LANG_HOOKS_EXPR_SIZE): Define. (cp_expr_size): New fn. * call.c (build_over_call): Lose empty class hackery. (convert_arg_to_ellipsis): Promote non-POD warning to error. * typeck.c (build_modify_expr): Don't use save_expr on an lvalue. From-SVN: r55983
2002-08-01* expr.c (expand_assignment): Delete unused variable.Kaveh R. Ghazi1-2/+0
From-SVN: r55933
2002-07-29emit-rtl.c (set_mem_attributes_minus_bitpos): Rename from set_mem_attributes ↵Richard Henderson1-11/+1
and add BITPOS argument. * emit-rtl.c (set_mem_attributes_minus_bitpos): Rename from set_mem_attributes and add BITPOS argument. Subtract it from OFFSET when same is adjusted. (set_mem_attributes): New wrapper function. * expr.c (expand_assignment): Use set_mem_attributes_minus_bitpos; remove offset adjustment hack. * expr.h (set_mem_attributes_minus_bitpos): Declare. From-SVN: r55846
2002-07-24expr.c (expand_expr): Use GOTO_SUBROUTINE_EXPR form when not optimizing.Richard Henderson1-1/+7
* expr.c (expand_expr) [TRY_FINALLY_EXPR]: Use GOTO_SUBROUTINE_EXPR form when not optimizing. From-SVN: r55723
2002-07-21expr.c (expand_expr): Don't use GOTO_SUBROUTINE_EXPR when finally_block can ↵Richard Henderson1-19/+39
be re-expanded. * expr.c (expand_expr) [TRY_FINALLY_EXPR]: Don't use GOTO_SUBROUTINE_EXPR when finally_block can be re-expanded. * lang.c (java_unsafe_for_reeval): New. (LANG_HOOKS_UNSAFE_FOR_REEVAL): New. From-SVN: r55636
2002-07-16expr.c (emit_move_insn_1): Handle arbitrary moves that are the same size as ↵J"orn Rennecke1-3/+3
a word. * expr.c (emit_move_insn_1): Handle arbitrary moves that are the same size as a word. * regrename.c (find_oldest_value_reg): Take WORDS_BIG_ENDIAN / BYTES_BIG_ENDIAN into account. From-SVN: r55482
2002-07-13expr.c [...]: New macro defining the maximum number of move instructions to ↵Roger Sayle1-1/+20
use when... * expr.c [CLEAR_RATIO]: New macro defining the maximum number of move instructions to use when clearing memory, c.f. MOVE_RATIO. [CLEAR_BY_PIECES]: New macro, using CLEAR_RATIO, to determine whether clear_by_pieces should be used to clear storage. (clear_storage): Use CLEAR_BY_PIECES instead of MOVE_BY_PIECES. * doc/tm.texi: Document these two new target macros. From-SVN: r55429
2002-06-18simd-1.c: New.Aldy Hernandez1-0/+30
2002-06-16 Aldy Hernandez <aldyh@redhat.com> * gcc.c-torture/execute/simd-1.c: New. * gcc.dg/simd-1.c: New. * doc/extend.texi (Vector Extensions): Document that we can specify simd types not specifically supported by the hardware. Document that simd types can be used as function arguments. Document that signness does make a difference in SIMD types. Misc cleanups and revisions to the "vector extensions" section. * simplify-rtx.c (simplify_subreg): Simplify subregs of vector constants. * expr.c (vector_mode_valid_p): New. * expr.h: Add vector_mode_valid_p. * defaults.h (VECTOR_MODE_SUPPORTED_P): Set default. * emit-rtl.c (immed_double_const): Do not abort on vectors. * c-common.c (type_for_mode): Always build vector nodes regardless of VECTOR_MODE_SUPPORTED_P. (handle_mode_attribute): Error if we can't emulate a nonexisting vector mode. (handle_vector_size_attribute): Same. * optabs.c (expand_binop): Open-code vector operations. (expand_unop): Open-code vector unops. (expand_vector_binop): New. (expand_vector_unop): New. * c-typeck.c (build_binary_op): Allow vectors in binops. Allow vectors in conditional operatiors. (build_unary_op): Allow vectors in unary minus. * config/rs6000/rs6000.h (ALTIVEC_VECTOR_MODE): Conditionalize on TARGET_ALTIVEC. From-SVN: r54727
2002-06-15expr.c (compare_from_rtx): Call simplify_relational_operation on all ↵Roger Sayle1-4/+6
comparisons... * expr.c (compare_from_rtx): Call simplify_relational_operation on all comparisons, not just those between integer constants, with the correct (possibly unsigned) comparison code. (do_compare_rtx_and_jump): Likewise. From-SVN: r54657
2002-06-11Delete SEQUENCE rtl usage outside of reorg and ssa passes.David S. Miller1-10/+26
2002-06-05 David S. Miller <davem@redhat.com> Delete SEQUENCE rtl usage outside of reorg and ssa passes. * rtl.h (gen_sequence, emit_insns, emit_insns_before, emit_insns_before_scope, emit_insns_after, emit_insns_after_scope): Delete declaration. * ada/misc.c (insert_code_for): Use emit_insn* instead of emit_insns_foo. * config/alpha/alpha.c (alpha_set_memflags_1): Abort on SEQUENCE. (alpha_set_memflags): Fix comment. (set_frame_related_p): Use get_insns instead of gen_sequence. * config/alpha/alpha.md (setjmp receiver splitter): Avoid emitting no insns. * config/arm/arm.c (arm_finalize_pic): Use get_insns instead of gen_sequence. (arm_gen_load_multiple, arm_gen_store_multiple): Likewise. * config/fr30/fr30.c (fr30_move_double): Likewise. * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_movstr): Likewise. * config/ia64/ia64.c (spill_restore_mem): Likewise. * config/ia64/ia64.md (conditional move spliiter): Avoid emitting no insns. * config/m32r/m32r.c (gen_split_move_double): Use get_insns instead of gen_sequence. * config/mips/mips.c (embedded_pic_fnaddr_reg): Likewise. (mips_expand_prologue, mips16_gp_pseudo_reg): Likewise. * config/sh/sh.c (sh_need_epilogue): Likewise. * config/sparc/sparc.md (current_function_calls_alloca, flat): New attributes. (setjmp pattern and split): Use them to avoid splitter which emits no RTL. * genattrtab.c (main): Emit include of function.h * config/stormy16/stormy16.c (xstormy16_split_cbranch): Use get_insns instead of gen_sequence. * config/cris/cris.c (cris_split_movdx): Likewise. * emit-rtl.c (emit_insns*): Kill. (try_split): Expect insn list instead of SEQUENCE. (make_jump_insn_raw, make_call_insn_raw): Fix comments. (emit_*insn*): Reimplement to work with INSN lists and PATTERNs. Make them abort if a SEQUENCE is given and RTL checking is enabled. (emit_*_scope): Don't forget to set scope on final insn. (gen_sequence): Move from here... * ssa.c (gen_sequence): To here as private function. * builtins.c (expand_builtin_apply_args): Use emit_insn_foo, fix comments. (expand_builtin_return, expand_builtin_mathfn): Likewise. (expand_builtin_strlen): Use get_insns instead of gen_sequence. (expand_builtin_saveregs): Use emit_insn_foo, fix comments. (expand_builtin_expect_jump): Use get_insns and fix comments. * calls.c (try_to_integrate): Use emit_insn_foo. (expand_call, emit_library_call_value_1): Likewise. * expr.c (emit_queue): Handle insn lists instead of SEQUENCE. (emit_move_insn_1): Use get_insns instead of gen_sequence. (expand_expr): Use emit_insn_foo. * cfgrtl.c (commit_one_edge_insertion): Use emit_insn_foo. * except.c (build_post_landing_pads): Likewise. * flow.c (attempt_auto_inc): Likewise. * stmt.c (expand_fixup, fixup_gotos, expand_nl_handler_label, expand_nl_goto_receivers, expand_decl_cleanup): Likewise. * function.c (fixup_var_refs_insn): Use get_insns instead of gen_sequence. (fixup_var_refs_1): Likewise and expect insn list from gen_foo. (fixup_memory_subreg): Use get_insns instead of gen_sequence. (fixup_stack_1, purge_addressof_1, expand_main_function, get_arg_pointer_save_area): Likewise. (optimize_bit_field, instantiate_virtual_regs_1, assign_parms, expand_function_end): Use emit_insn_foo. (record_insns, keep_stack_depressed): Work with insn list instead of SEQUENCE, fix comments. * ifcvt.c (noce_emit_store_flag, noce_try_store_flag, noce_try_store_flag_constants, noce_try_store_flag_inc, noce_try_store_flag_mask, noce_emit_cmove, noce_try_cmove_arith, noce_try_minmax, noce_try_abs): Use emit_insn_foo. (noce_process_if_block): Use get_insns instead of gen_sequence. * optabs.c (add_equal_note): Work with insn list, fix comments. (expand_binop): Expect insn list from GEN_FCN(), use emit_insn_foo. (expand_unop, expand_complex_abs, expand_unop_insn, expand_no_conflict_block): Likewise. (gen_move_insn): Use get_insns instead of gen_sequence. (gen_cond_trap): Likewise. * integrate.c (copy_rtx_and_substitute): Likewise. (emit_initial_value_sets): Use emit_insn_foo. * reload1.c (emit_output_reload_insns, emit_reload_insns): Likewise. (fixup_abnormal_edges): Avoid losing REG_NOTES more intelligently now that RTL generators give insn lists. * sibcall.c (replace_call_placeholder): Use emit_insn_foo. * doloop.c (doloop_modify, doloop_modify_runtime): Use get_insns instead of gen_sequence. (doloop_optimize): Work with insn lists instead of SEQUENCE rtl. * explow.c (emit_stack_save, emit_stack_restore): Use get_insns instead of gen_sequence. * loop.c (move_movables, emit_prefetch_instructions, gen_add_mult, check_dbra_loop, gen_load_of_final_value): Likewise. (loop_regs_update): Work with insn list instead of SEQUENCE rtl. (product_cheap_p): Likewise, and add commentary about RTL wastage here. * lcm.c (optimize_mode_switching): Use get_insns instead of gen_sequence. * profile.c (gen_edge_profiler): Likewise. * regmove.c (copy_src_to_dest): Likewise. * reg-stack.c (compensate_edge): Likewise and fix comment. * gcse.c (process_insert_insn): Likewise. (insert_insn_end_bb): Work with insn list instead of SEQUENCE rtl. * jump.c (delete_prior_computation): Update comment. * genemit.c (gen_expand, gen_split, main): Use get_insns instead of gen_sequence, update comments to match. * recog.c (peephole2_optimize): Work with insn lists instead of SEQUENCE rtl. * sched-vis.c (print_pattern): Abort on SEQUENCE. * unroll.c (unroll_loop, find_splittable_givs, final_giv_value): Use get_insns instead of gen_sequence. (copy_loop_body): Likewise and don't emit dummy NOTE. * genrecog.c: Don't mention SEQUENCE rtl in comments. * combine.c (try_combine): Expect insn lists from split generator. * reorg.c (relax_delay_slots): Emit SEQUENCE into insn list by hand. From-SVN: r54497
2002-06-10alias.c (static_reg_base_value): New to hold RTL for items allocated once ↵Jeff Law1-2/+7
per function for the aliasing code. * alias.c (static_reg_base_value): New to hold RTL for items allocated once per function for the aliasing code. (init_alias_once_per_function): Initialize static_reg_base_value. (init_alias_analysis): Avoid throw-away allocations of RTL by using pre-computed values in static_reg_base_value. * function.c (prepare_function_start): Call init_alias_once_per_function appropriately. * rtl.h (init_alias_once_per_function): Declare. * caller-save (init_caller_save): Restructure slightly to avoid lots of silly RTL generation. * expr.c (init_expr_once): Likewise. * reload1.c (reload_cse_regs_1): Allocate throw-away register RTL object here. Pass it into children. (reload_cse_simplify_operands): Use passed-in register RTL object. (reload_cse_simplify): Pass through throw-away register RTL object. From-SVN: r54442
2002-06-07emit-rtl.c (init_emit): Add hard registers to regno_reg_rtx.Jeff Law1-1/+1
* emit-rtl.c (init_emit): Add hard registers to regno_reg_rtx. * combine.c (move_deaths): Use regno_reg_rtx for hard regs rather than creating a new register. (distribute_notes): Likewise. * df.c (df_reg_use_gen): Likewise. (df_reg_clobber_gen): Likewise. (df_ref_record): Likewise. * expr.c (use_regs): Likewise. * flow.c (propagate_one_insn): Likewise. (mark_set_1): Likewise. (mark_used_reg): Likewise. * reload.c (emit_reload_insns): Likewise. From-SVN: r54358
2002-06-04Merge from pch-branch up to tag pch-commit-20020603.Geoffrey Keating1-47/+31
From-SVN: r54232
2002-06-03emit-rtl.c: Likewise.Kazu Hirata1-44/+44
* emit-rtl.c: Likewise. * errors.h: Likewise. * except.c: Likewise. * explow.c: Likewise. * expmed.c: Likewise. * expr.c: Likewise. * expr.h: Likewise. From-SVN: r54197
2002-05-31expr.c (compare_from_rtx): Generate comparison between op0 and op1 rather ↵Igor Shevlyakov1-0/+4
than cc0 and 0 in a case when... * expr.c (compare_from_rtx): Generate comparison between op0 and op1 rather than cc0 and 0 in a case when HAVE_cc0 is not defined. From-SVN: r54122
2002-05-31expr.c (expand_expr): Output partially zeroed out vectors with ↵Aldy Hernandez1-2/+10
output_constant_def. 2002-05-31 Aldy Hernandez <aldyh@redhat.com> * expr.c (expand_expr): Output partially zeroed out vectors with output_constant_def. From-SVN: r54080
2002-05-28tree.h: Forward-declare struct realvaluetype.Zack Weinberg1-0/+1
* tree.h: Forward-declare struct realvaluetype. (struct tree_real_cst): Point to the REAL_VALUE_TYPE, do not contain it. (TREE_REAL_CST_PTR): New accessor. (TREE_REAL_CST): Update. * real.h: Include machmode.h. (realvaluetype): Make it struct realvaluetype, not a typedef. (build_real): Prototype here. * tree.c: Include real.h. (build_real): Allocate the REAL_VALUE_TYPE as a separate object in GC memory, set TREE_REAL_CST_PTR to point to it. (build_real_from_int_cst): Use build_real. * ggc-common.c (ggc_mark_trees): Mark TREE_REAL_CST_PTR of a REAL_CST. * builtins.c, c-common.c, c-lex.c, dwarf2out.c, expr.c, fold-const.c, print-tree.c, real.c, cp/mangle.c, cp/tree.c, f/bld.c, f/com.c, f/expr.c, f/target.c, java/decl.c, java/jcf-parse.c, java/parse.y, java/typeck.c: Include real.h. * Makefile.in, cp/Make-lang.in, f/Make-lang.in, java/Make-lang.in: Update dependency lists. From-SVN: r53959
2002-05-21re PR middle-end/6600 (i960 toolchain hits abort in c_readstr)Roger Sayle1-2/+15
PR middle-end/6600 * expr.c (STORE_MAX_PIECES): New macro to avoid immediate constants larger than INTEGER_CST. (store_by_pieces_1): Use it here... (can_store_by_pieces): ... and here to limit the largest mode used. Add a comment to document this function. From-SVN: r53706
2002-05-17expr.c (init_expr_once): Don't use start/end_sequence.Richard Henderson1-6/+3
* expr.c (init_expr_once): Don't use start/end_sequence. Use rtx_alloc instead of emit_insn. * toplev.c (lang_dependent_init): Run init_expr_once here ... (lang_independent_init): ... not here. From-SVN: r53572
2002-05-17* expr.c (force_operand): Fix reversed move.Richard Sandiford1-1/+1
From-SVN: r53556
2002-05-13emit-rtl.c (global_rtl): Update comment.Zack Weinberg1-1/+2
* emit-rtl.c (global_rtl): Update comment. (const_double_htab, const_double_htab_hash, const_double_htab_hash, lookup_const_double): New. (const_int_htab_hash, const_int_htab_eq): Remove const qualifiers, which cause tons of warnings with RTL checking on. (gen_rtx_CONST_DOUBLE): Deleted. (const_double_from_real_value): New function - bears some resemblance to the former immed_real_const_1. (immed_double_const): Moved here from varasm.c and simplified. (gen_rtx_REG): Make REGNO unsigned to squelch warnings. (gen_rtx_SUBREG): Use gen_rtx_raw_SUBREG. (gen_rtx): Use immed_double_const. (init_emit_once): Initialize the const_double_htab. Use REAL_VALUE_FROM_INT where possible. Can now use CONST_DOUBLE_FROM_REAL_VALUE when setting up const_tiny_rtx. * varasm.c (struct varasm_status): Remove x_const_double_chain. (const_double_chain, immed_real_const, clear_const_double_mem): Delete. (immed_double_const, immed_real_const_1): Moved to emit-rtl.c. (init_varasm_status, mark_varasm_status): Don't touch x_const_double_chain. * output.h: Delete prototype for clear_const_double_mem. * real.h: Make REAL_VALUE_TYPE a macro again. Remove leading '0' slot from all CONST_DOUBLE_FORMAT definitions. Prototype const_double_from_real_value, not immed_real_const_1, and use it to define CONST_DOUBLE_FROM_REAL_VALUE. Define new macro CONST_DOUBLE_ATOF. * rtl.h (CONST_DOUBLE_CHAIN): Kill. (CONST_DOUBLE_LOW, CONST_DOUBLE_HIGH): Adjust. (gen_rtx_CONST_DOUBLE, immed_real_const): Delete prototypes. (gen_rtx_REG): Second arg is unsigned. * gengenrtl.c (special_rtx): Take out CONST_DOUBLE. (excluded_rtx): New, return true for CONST_DOUBLE. (genmacro): Write nothing for excluded codes. * combine.c (combine_simplify_rtx): Use CONST_DOUBLE_FROM_REAL_VALUE. * expr.c (expand_expr): Likewise. * ggc-common.c (ggc_mark_rtx_children_1): Don't mark the CONST_DOUBLE_CHAIN. * toplev.c (rest_of_compilation): Don't call clear_const_double_mem. * config/rs6000/rs6000.c (rs6000_float_const): Delete. (rs6000_hash_constant): Remove CONST_DOUBLE special case. (toc_hash_eq): Remove CONST_DOUBLE and LABEL_REF special cases. * config/rs6000/rs6000-protos.h: Don't prototype rs6000_float_const. * config/c4x/c4x.md, config/rs6000/rs6000.md: Use CONST_DOUBLE_ATOF. * config/dsp16xx/dsp16xx.md, config/mips/mips.md, config/pa/pa.md: Use CONST_DOUBLE_FROM_REAL_VALUE. * config/sparc/sparc.md, config/sparc/sparc.c: Use immed_double_const. From-SVN: r53409
2002-05-12expr.c (compress_float_constant): New.Richard Henderson1-3/+96
* expr.c (compress_float_constant): New. (emit_move_insn): Use it. (float_extend_from_mem): New. (init_expr_once): Initialize it. * real.c (exact_real_truncate): New. * config/i386/i386.h (CONST_COSTS): Assume CONST_DOUBLE gets dropped into memory; penalize for size. (RTX_COSTS): FLOAT_EXTEND is free. * config/i386/i386.md (extendsfdf2, extendsfxf2, extendsftf2, extenddfxf2, extenddftf2): Accept constants and drop them to memory. From-SVN: r53401
2002-05-06re PR c++/6212 (g++ testsuite EH regressions for irix6 -mabi=64)Richard Henderson1-1/+18
PR c++/6212 * expr.c (highest_pow2_factor_for_type): New. (expand_assignment): Use it. From-SVN: r53249
2002-05-04expr.c (force_operand): Use expand_simple_* to handle more cases.Jan Hubicka1-43/+68
* expr.c (force_operand): Use expand_simple_* to handle more cases. From-SVN: r53154
2002-05-02combine.c: Fix comment formatting.Kazu Hirata1-1/+1
* combine.c: Fix comment formatting. * expr.c: Likewise. * genautomata.c: Likewise. * stmt.c: Likewise. * tree.h: Likewise. From-SVN: r53044
2002-04-16re PR middle-end/6279 (gcc-3.1 miscompiles qmake on IA-64)Jakub Jelinek1-2/+7
PR middle-end/6279 * expr.c (store_expr): Don't copy if DECL_RTL (exp) == target. * expr.c (safe_from_p): Cleanup: use DECL_RTL_IF_SET. From-SVN: r52356
2002-04-12expr.c (expand_assigment): Remove duplicate conversions #ifdef ↵Richard Kenner1-10/+10
POINTERS_EXTEND_UNSIGNED. * expr.c (expand_assigment): Remove duplicate conversions #ifdef POINTERS_EXTEND_UNSIGNED. (store_constructor, expand_expr, case COMPONENT_REF): Likewise. (store_expr): Use TYPE_MODE (sizetype), not ptr_mode. From-SVN: r52223
2002-04-11re PR rtl-optimization/6177 (ia64 ICE with single-element complex array in ↵Jakub Jelinek1-0/+10
LAPACK) PR optimization/6177 * expr.c (expand_expr) [COMPONENT_REF]: Handle op0 CONCAT if bitpos is 0 and bitsize CONCAT size. * gcc.c-torture/execute/20020411-1.c: New test. From-SVN: r52178
2002-04-10expr.c (expand_expr): Don't force into registers if EXPAND_INITIALIZER.Richard Henderson1-1/+2
* expr.c (expand_expr) [INTEGER_CST]: Don't force into registers if EXPAND_INITIALIZER. From-SVN: r52118
2002-04-09expr.c (expand_expr): Force overflows into registers.Richard Henderson1-1/+11
* expr.c (expand_expr) [INTEGER_CST]: Force overflows into registers. * gcc.c-torture/compile/20020409-1.c: New. From-SVN: r52104
2002-04-09expr.c (is_aligning_offset): New function.Richard Kenner1-0/+57
* expr.c (is_aligning_offset): New function. (expand_expr, case COMPONENT_EXPR): Call it. From-SVN: r52077
2002-04-03re PR c++/5636 (gcc-3.0.3, memory leakage: function that take a string as ↵Jason Merrill1-2/+3
parameter will not call local variable destructors if exception is thrown.) PR c++/5636 * tree.h (CLEANUP_EH_ONLY): New macro. * stmt.c (expand_decl_cleanup_eh): New fn. (expand_cleanups): Check CLEANUP_EH_ONLY. * c-semantics.c (genrtl_decl_cleanup): Just take the CLEANUP_STMT. Use expand_decl_cleanup_eh. (expand_stmt): Adjust. * c-common.h: Adjust prototype. * cp/semantics.c (nullify_returns_r): Just set CLEANUP_EH_ONLY on cleanup for nrv. * except.c (struct eh_status): Remove protect_list. (begin_protect_partials, end_protect_partials): Remove. (add_partial_entry): Remove. * except.h: Remove prototypes. * expr.c (expand_expr) [WITH_CLEANUP_EXPR, TARGET_EXPR]: Use expand_decl_cleanup_eh. cp/: * semantics.c (finish_eh_cleanup): New fn. * cp-tree.h: Add prototype. * init.c (perform_member_init, expand_cleanup_for_base): Use finish_eh_cleanup. * cp-tree.def (SUBOBJECT, CTOR_STMT): Remove. * cp-tree.h: Remove references. * decl.c (begin_constructor_body, end_constructor_body): Likewise. * dump.c (cp_dump_tree): Likewise. * pt.c (tsubst_expr): Likewise. * semantics.c (genrtl_ctor_stmt, genrtl_subobject): Remove. (cp_expand_stmt): Remove handling of CTOR_STMT and SUBOBJECT. * tree.c (cp_statement_code_p): Likewise. * init.c (build_new_1): Set CLEANUP_EH_ONLY on deleting cleanup. From-SVN: r51827
2002-04-01c-decl.c (grokdeclarator): Update.Neil Booth1-1/+1
* c-decl.c (grokdeclarator): Update. * c-lang.c (LANG_HOOKS_MARK_ADDRESSABLE): Redefine. * c-tree.h (c_mark_addressable): New. * c-typeck.c (default_function_array_conversion, build_unary_op, build_array_ref, convert_for_assignment): Update. (mark_addressable): Rename. * calls.c (try_to_integrate, expand_call): Use langhook. * expr.c (expand_expr): Use langhook. * langhooks-def.h (LANG_HOOKS_INITIALIZER): Update. * langhooks.h (struct lang_hooks): New hook. * stmt.c (expand_asm_operands): Use langhook. * tree.h (mark_addressable): Remove. ada: * decl.c (gnat_to_gnu_entity): Update. * gigi.h (mark_addressable): Rename. * misc.c (LANG_HOOKS_MARK_ADDRESSABLE): Redefine. * trans.c (tree_transform): Update. * utils.c (create_var_decl): Update. * util2.c (build_binary_op, build_unary_op, fill_vms_descriptor): Update. (mark_addressable): Rename, update. cp: * call.c (build_addr_func): Update. * class.c (resolve_address_of_overloaded_function): Update. * cp-lang.c (LANG_HOOKS_MARK_ADDRESSABLE): Redefine. * cp-tree.h (cxx_mark_addressable): New. * decl.c (register_dtor_fn, cxx_maybe_build_cleanup): Update. * decl2.c (build_cleanup): Update. * except.c (build_throw): Update. * init.c (resolve_offset_ref): Update. * pt.c (convert_nontype_argument): Update. * semantics.c (finish_asm_stmt, simplify_affr_init_exprs_r): Update. * typeck.c (decay_conversion, build_array_ref, build_unary_op, unary_complex_lvalue): Update. (mark_addressable): Rename. f: * com.c (LANG_HOOKS_MARK_ADDRESSABLE): Redefine. (mark_addressable): Rename. (ffecom_arrayref_, ffecom_1): Update. java: * java-tree.h (java_mark_addressable): New. * lang.c (LANG_HOOKS_MARK_ADDRESSABLE): Redefine. * typeck.c (mark_addressable): Rename, update. objc: * objc-lang.c (LANG_HOOKS_MARK_ADDRESSABLE): Redefine. From-SVN: r51705
2002-04-01c-common.c (unsigned_conversion_warning, [...]): Use new hooks.Neil Booth1-5/+3
* c-common.c (unsigned_conversion_warning, convert_and_check, unsigned_type, signed_type, shorten_compare, c_common_get_alias_set, c_common_nodes_and_builtins): Use new hooks. (unsigned_type, signed_type, signed_or_unsigned_type): Rename. * c-common.h (unsigned_type, signed_type, signed_or_unsigned_type): New. * c-decl.c (grokdeclarator): Update. * c-format.c (check_format_types): Update. * c-lang.c (LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE, LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): New. * c-typeck.c (build_binary_op, convert_for_assignment): Update. * convert.c (convert_to_integer): Use new hooks. * expmed.c (make_tree): Use new hooks. * expr.c (store_expr): Use new hooks. * fold-const.c (operand_equal_for_comparison_p, build_range_check, all_ones_mask_p, unextend, fold): Use new hooks. * langhooks.h (struct lang_hooks_for_types): New hooks. * tree.h (signed_or_unsigned_type, signed_type, unsigned_type): Remove. ada: * gigi.h (unsigned_type, signed_type, signed_or_unsigned_type): Rename. * misc.c (LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE, LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): New. * trans.c (tree_transform, convert_with_check): Update. * utils.c (unsigned_type, signed_type, signed_or_unsigned_type): Rename. cp: * cp-lang.c (LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE, LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): New. * decl.c (grokdeclarator): Update. * mangle.c (write_integer_cst): Update. * typeck.c (build_binary_op): Update. f: * com.c (LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE, LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): New. (unsigned_type, signed_type, signed_or_unsigned_type): Rename. java: * expr.c (build_java_binop): Update. * java-tree.h (java_signed_type, java_unsigned_type, java_signed_or_unsigned_type): Update. * lang.c (LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE, LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): New. * parse.y (patch_binop): Update. * typeck.c (signed_or_unsigned_type, unsigned_type, signed_type): Update. objc: * objc-lang.c (LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE, LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): New. From-SVN: r51684
2002-03-29re PR target/5672 ([mn10200] Compiler segmentation fault in static initialiser.)Richard Henderson1-1/+2
PR target/5672 * expr.c (expand_expr): Pass along EXPAND_INITIALIZER one more place. From-SVN: r51593
2002-03-29Makefile.in (convert.o, [...]): Update.Neil Booth1-9/+13
* Makefile.in (convert.o, calls.o, expmed.o): Update. * attribs.c (handle_mode_attribute, handle_vector_size_attribute): Use new hooks. * builtin-types.def (BT_PTRMODE): Update. * c-common.c (type_for_size): Rename c_common_type_for_size. (type_for_mode): Similarly. (shorten_compare, pointer_int_sum, c_common_nodes_and_builtins): Use new hook. * c-bommon.h (c_common_type_for_size, c_common_type_for_mode): New. * c-decl.c (finish_enum, build_enumerator): Use new hooks. * c-lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIZE): Redefine. * c-typeck.c (common_type, comptypes, default_conversion): Use new hooks. * calls.c: Include langhooks.h. (emit_library_call_value_1): Use new hooks. Avoid redundant calls. * convert.c: Include langhooks.h (convert_to_pointer, convert_to_integer): Use new hooks. * except.c (init_eh): Similarly. * expmed.c: Include langhooks.h. (expand_mult_add): Use new hooks. * expr.c (store_expr, store_constructor, expand_expr, do_jump, try_casesi): Similarly. * fold-const.c (optimize_bit_field_compare, make_range, decode_field_reference, fold_truthop, fold): Similarly. * function.c (assign_stack_local_1, assign_stack_temp_for_type, put_var_into_stack): Similarly. * langhooks-def.h (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIZE): New. (LANG_HOOKS_TYPES_INITIALIZER): Update. * langhooks.h (lang_hooks_for_types): New hooks. * stmt.c (expand_decl_cleanup, emit_case_nodes): Use new hooks. * tree.c (get_unwidened, get_narrower): Similarly. * tree.h (type_for_mode, type_for_size): Remove. * varasm.c (force_const_mem): Use new hooks. ada: * gigi.h (type_for_size, type_for_mode): Rename. * misc.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIZE): Redefine. * trans.c (tree_transform): Update. * utils.c (gnat_init_decl_processing, init_gigi_decls, builtin_function, float_type_for_size, signed_or_unsigned_type, build_vms_descriptor, unchecked_convert): Update. (type_for_mode, type_for_size): Rename. * utils2.c (nonbinary_modular_operation): Update. cp: * cp-lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIZE): Redefine. * cvt.c (cp_convert_to_pointer, type_promotes_to): Use new hooks. * decl.c (finish_enum): Similarly. * error.c (dump_type): Similarly. * lex.c (cxx_init): Similarly. * mangle.c (write_builtin_type): Similarly. * typeck.c (comptypes): Similarly. f: * com.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIZE): Redefine. (type_for_mode, type_for_size): Rename. (signed_or_unsigned_type, signed_type, truthvalue_conversion, unsigned_type): Use new hooks. java: * Make-lang.in (builtins.o): Update. * boehm.c (get_boehm_type_descriptor): Update. * builtins.c: Include langhooks.h. * decl.c (java_init_decl_processing): Update. * java-tree.h (java_type_for_mode, java_type_for_size): New. * lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIaZE): Redefine. * typeck.c (type_for_mode, type_for_size): Update. objc: * objc-act.c (handle_impent): Update. * objc-lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIaZE): Redefine. From-SVN: r51571
2002-03-27c-common.c (c_expand_expr): Fix prototype.Neil Booth1-2/+3
* c-common.c (c_expand_expr): Fix prototype. * c-common.h (c_expand_expr): Always declare, update. * c-lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine. * c-objc-common.c (c_objc_common_init): No global hook. * expr.c (expand_expr): Use langhook. * expr.h (enum expand_modifier): Conditionally declare. * langhooks-def.h (lhd_expand_expr, LANG_HOOKS_EXPAND_EXPR): New. (LANG_HOOKS_INITIALIZER): Update. * langhooks.c (lhd_expand_expr): New. * langhooks.h (struct lang_hooks): New hook. * toplev.c (lang_expand_expr_t, lang_expand_expr): Delete. (lang_independent_init): Don't default hook. ada: * misc.c (LANG_HOOKS_EXPAND_EXPR): Redefine. (gnat_init): Don't set hook. (gnat_expand_expr): Fix prototype. cp: * cp-lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine. * cp-tree.h (init_cplus_expand): Remove. (cxx_expand_expr): New. * expr.c (cplus_expand_expr): Rename cxx_expand_expr, fix prototype. (init_cplus_expand): Remove. * lex.c (cxx_init): Don't call init_cplus_expand. java: * expr.c (java_lang_expand_expr): Rename java_expand_expr, fix prototype. * java-tree.h (java_lang_expand_expr): Similarly. * lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine. (java_init): Don't set hook. objc: * objc-lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine. From-SVN: r51462
2002-03-25c-decl.c (maybe_build_cleanup): Remove.Neil Booth1-1/+2
* c-decl.c (maybe_build_cleanup): Remove. * expr.c (expand_expr): Use langhook. * langhooks-def.h (lhd_return_null_tree, LANG_HOOKS_MAYBE_BUILD_CLEANUP): New. (LANGHOOKS_INITIALIZER): Update. * langhooks.c (lhd_return_null_tree): New. * langhooks.h (struct lang_hooks): New hook. * tree-inline.c (initialize_inlined_parameters): Use langhook. * tree.h (maybe_build_cleanup): Remove. ada: * misc.c (maybe_build_cleanup): Remove. cp: * cp-tree.h (cxx_maybe_build_cleanup): New. * decl.c (destroy_local_var, hack_incomplete_structures): Update. (maybe_build_cleanup): Rename cxx_maybe_build_cleanup. * tree.c (build_target_expr): Update. f: * com.c (maybe_build_cleanup): Remove. java: * decl.c (maybe_build_cleanup): Remove. From-SVN: r51324
2002-03-25re PR target/6043 (IICE on ia64 for Blitz config test for C++ complex math)Jakub Jelinek1-4/+18
PR target/6043 * expr.c (emit_group_store): Handle storing into CONCAT. * g++.dg/opt/conj2.C: New test. From-SVN: r51311
2002-03-22fix g++ testcase crash namedret1.c on sparcv9 and s390Andrew MacLeod1-1/+2
2002-03-22 Andrew MacLeod <amacleod@redhat.com> * expr.c (expand_expr): A RESULT_DECL is part of a call. From-SVN: r51177
2002-03-21Makefile.in (fold-const.o, [...]): Update.Neil Booth1-1/+1
* Makefile.in (fold-const.o, stor-layout.o, stmt.o, sdbout.o, profile.o): Update. * c-common.c (c_common_nodes_and_builtins): Use pushdecl langhook. * c-common.h (gettags): Move here from tree.h. * c-tree.h (pushdecl, pushlevel, poplevel, set_block, insert_block, getdecls, kept_level_p, global_bindings_p): New. * dbxout.c (dbxout_init): Use getdecls langhook. * expr.c (expand_expr): Use insert_block langhook. * fold-const.c: Include langhooks.h. (fold_range_test, fold_binary_op_with_conditional_arg, fold): Use global_bindings_p langhook. * integrate.c (expand_inline_function): Use insert_block langhook. * langhooks-def.h (LANG_HOOKS_DECLS, LANG_HOOKS_PUSHLEVEL, LANG_HOOKS_POPLEVEL, LANG_HOOKS_GLOBAL_BINDINGS_P, LANG_HOOKS_INSERT_BLOCK, LANG_HOOKS_SET_BLOCK, LANG_HOOKS_PUSHDECL, LANG_HOOKS_GETDECLS): New. (LANG_HOOKS_INITIALIZER): Update. * langhooks.c (lhd_clear_binding_stack): Use global_bindings_p langhook. * langhooks.h (struct lang_hooks_for_decls): New. (struct lang_hooks): Update. * profile.c: Include langhooks.h. (output_func_start_profiler): Use new langhooks. * sdbout.c: Include langhooks.h. (sdbout_init, sdbout_finish): Use getdecls langhook. * stmt.c: Include langhooks.h. (expand_fixup, fixup_gotos): Use new langhooks. * stor-layout.c: Include langhooks.h. (variable_size): Use global_bindings_p langhook. * toplev.c (compile_file): Use getdecls langhook. * tree-inline.c (remap_block): Use insert_block langhook. * tree.h (pushdecl, pushlevel, poplevel, set_block, gettags, insert_block, getdecls, kept_level_p, global_bindings_p): Remove. cp: * cp-tree.h (pushdecl, pushlevel, poplevel, set_block, insert_block, getdecls, global_bindings_p): New. java: * cp-tree.h (pushdecl, pushlevel, poplevel, set_block, insert_block, getdecls, kept_level_p, global_bindings_p): New. f: * cp-tree.h (pushdecl, pushlevel, poplevel, set_block, insert_block, getdecls, global_bindings_p): New. From-SVN: r51136
2002-03-21* expr.c (emit_group_store): Don't copy const0_rtx to a CONCAT.Richard Kenner1-1/+1
From-SVN: r51123
2002-03-20PR optimization/5999, middle-end/5731Dale Johannesen1-0/+1
PR optimization/5999, middle-end/5731 * expr.c (expand_expr) [RDIV_EXPR]: Only convert real divisions into multiplications by reciprocals. * gcc.c-torture/compile/20020319-1.c: New test. From-SVN: r51071
2002-03-19expr.c (expand_expr): Sign-extend CONST_INT generated from TREE_STRING_POINTER.David Edelsohn1-7/+6
* expr.c (expand_expr): Sign-extend CONST_INT generated from TREE_STRING_POINTER. From-SVN: r51033
2002-03-19emit-rtl.c (gen_int_mode): New function.Lars Brinkhoff1-3/+2
* emit-rtl.c (gen_int_mode): New function. * rtl.h: Prototype for it. * combine.c (make_extraction, simplify_comparison), expmed.c (store_bit_field, expand_mult_highpart, expand_divmod), expr.c (convert_modes, store_field), optabs.c (expand_fix), simplify-rtx.c (neg_const_int, simplify_unary_real), * config/rs6000/rs6000.c, config/rs6000/rs6000.md: Use it instead of GEN_INT (trunc_int_for_mode (...)). From-SVN: r51030
2002-03-18re PR target/5740 (sparcv9 ICE on complex_value.cc in libstdc++ test suite)Jakub Jelinek1-6/+11
PR target/5740 * expr.c (emit_group_load): Use extract_bit_field if needed for CONCAT arguments. * g++.dg/opt/conj1.C: New test. From-SVN: r50975
2002-03-13expr.c (expand_expr, [...]): Do not call copy_to_reg with VOIDmode operand.Ulrich Weigand1-1/+18
* expr.c (expand_expr, case NE_EXPR): Do not call copy_to_reg with VOIDmode operand. Add compile-time optimization for constant results. From-SVN: r50734
2002-03-09re PR middle-end/5877 (negative offset to array index leads to inefficient code)Jakub Jelinek1-11/+12
PR middle-end/5877 * expr.c (highest_pow2_factor): Check TREE_INT_CST_LOW even for non-representable constants. From-SVN: r50495