aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/trans.c
AgeCommit message (Collapse)AuthorFilesLines
2008-07-29Moved to gcc-interface.Arnaud Charlet1-7091/+0
From-SVN: r138260
2008-07-29trans.c (process_inlined_subprograms): Remove tree_really_inline check.Jan Hubicka1-2/+2
* trans.c (process_inlined_subprograms): Remove tree_really_inline check. From-SVN: r138254
2008-07-28backport: ChangeLog.tuples: ChangeLog from gimple-tuples-branch.Richard Biener1-32/+17
2008-07-28 Richard Guenther <rguenther@suse.de> Merge from gimple-tuples-branch. * ChangeLog.tuples: ChangeLog from gimple-tuples-branch. * gimple.def: New file. * gsstruct.def: Likewise. * gimple-iterator.c: Likewise. * gimple-pretty-print.c: Likewise. * tree-gimple.c: Removed. Merged into ... * gimple.c: ... here. New file. * tree-gimple.h: Removed. Merged into ... * gimple.h: ... here. New file. * Makefile.in: Add dependencies on GIMPLE_H and tree-iterator.h. * configure.ac: Added support for ENABLE_GIMPLE_CHECKING and the --enable-checking=gimple flag. * config.in: Likewise. * configure: Regenerated. * tree-ssa-operands.h: Tuplified. * tree-vrp.c: Likewise. * tree-loop-linear.c: Likewise. * tree-into-ssa.c: Likewise. * tree-ssa-loop-im.c: Likewise. * tree-dump.c: Likewise. * tree-complex.c: Likewise. * cgraphbuild.c: Likewise. * tree-ssa-threadupdate.c: Likewise. * tree-ssa-loop-niter.c: Likewise. * tree-pretty-print.c: Likewise. * tracer.c: Likewise. * gengtype.c: Likewise. * tree-loop-distribution.c: Likewise. * tree-ssa-loop-unswitch.c: Likewise. * cgraph.c: Likewise. * cgraph.h: Likewise. * tree-ssa-loop-manip.c: Likewise. * value-prof.c: Likewise. * tree-ssa-loop-ch.c: Likewise. * tree-tailcall.c: Likewise. * value-prof.h: Likewise. * tree.c: Likewise. * tree.h: Likewise. * tree-pass.h: Likewise. * ipa-cp.c: Likewise. * tree-scalar-evolution.c: Likewise. * tree-scalar-evolution.h: Likewise. * target.h: Likewise. * lambda-mat.c: Likewise. * tree-phinodes.c: Likewise. * diagnostic.h: Likewise. * builtins.c: Likewise. * tree-ssa-alias-warnings.c: Likewise. * cfghooks.c: Likewise. * fold-const.c: Likewise. * cfghooks.h: Likewise. * omp-low.c: Likewise. * tree-ssa-dse.c: Likewise. * ipa-reference.c: Likewise. * tree-ssa-uncprop.c: Likewise. * toplev.c: Likewise. * tree-gimple.c: Likewise. * tree-gimple.h: Likewise. * tree-chrec.c: Likewise. * tree-chrec.h: Likewise. * tree-ssa-sccvn.c: Likewise. * tree-ssa-sccvn.h: Likewise. * cgraphunit.c: Likewise. * tree-ssa-copyrename.c: Likewise. * tree-ssa-ccp.c: Likewise. * tree-ssa-loop-ivopts.c: Likewise. * tree-nomudflap.c: Likewise. * tree-call-cdce.c: Likewise. * ipa-pure-const.c: Likewise. * c-format.c: Likewise. * tree-stdarg.c: Likewise. * tree-ssa-math-opts.c: Likewise. * tree-ssa-dom.c: Likewise. * tree-nrv.c: Likewise. * tree-ssa-propagate.c: Likewise. * ipa-utils.c: Likewise. * tree-ssa-propagate.h: Likewise. * tree-ssa-alias.c: Likewise. * gimple-low.c: Likewise. * tree-ssa-sink.c: Likewise. * ipa-inline.c: Likewise. * c-semantics.c: Likewise. * dwarf2out.c: Likewise. * expr.c: Likewise. * tree-ssa-loop-ivcanon.c: Likewise. * predict.c: Likewise. * tree-ssa-loop.c: Likewise. * tree-parloops.c: Likewise. * tree-ssa-address.c: Likewise. * tree-ssa-ifcombine.c: Likewise. * matrix-reorg.c: Likewise. * c-decl.c: Likewise. * tree-eh.c: Likewise. * c-pretty-print.c: Likewise. * lambda-trans.c: Likewise. * function.c: Likewise. * langhooks.c: Likewise. * ebitmap.h: Likewise. * tree-vectorizer.c: Likewise. * function.h: Likewise. * langhooks.h: Likewise. * tree-vectorizer.h: Likewise. * ipa-type-escape.c: Likewise. * ipa-type-escape.h: Likewise. * domwalk.c: Likewise. * tree-if-conv.c: Likewise. * profile.c: Likewise. * domwalk.h: Likewise. * tree-data-ref.c: Likewise. * tree-data-ref.h: Likewise. * tree-flow-inline.h: Likewise. * tree-affine.c: Likewise. * tree-vect-analyze.c: Likewise. * c-typeck.c: Likewise. * gimplify.c: Likewise. * coretypes.h: Likewise. * tree-ssa-phiopt.c: Likewise. * calls.c: Likewise. * tree-ssa-coalesce.c: Likewise. * tree.def: Likewise. * tree-dfa.c: Likewise. * except.c: Likewise. * except.h: Likewise. * cfgexpand.c: Likewise. * tree-cfgcleanup.c: Likewise. * tree-ssa-pre.c: Likewise. * tree-ssa-live.c: Likewise. * tree-sra.c: Likewise. * tree-ssa-live.h: Likewise. * tree-predcom.c: Likewise. * lambda.h: Likewise. * tree-mudflap.c: Likewise. * ipa-prop.c: Likewise. * print-tree.c: Likewise. * tree-ssa-copy.c: Likewise. * ipa-prop.h: Likewise. * tree-ssa-forwprop.c: Likewise. * ggc-page.c: Likewise. * c-omp.c: Likewise. * tree-ssa-dce.c: Likewise. * tree-vect-patterns.c: Likewise. * tree-ssa-ter.c: Likewise. * tree-nested.c: Likewise. * tree-ssa.c: Likewise. * lambda-code.c: Likewise. * tree-ssa-loop-prefetch.c: Likewise. * tree-inline.c: Likewise. * tree-inline.h: Likewise. * tree-iterator.c: Likewise. * tree-optimize.c: Likewise. * tree-ssa-phiprop.c: Likewise. * tree-vect-transform.c: Likewise. * tree-object-size.c: Likewise. * tree-outof-ssa.c: Likewise. * cfgloop.c: Likewise. * system.h: Likewise. * tree-profile.c: Likewise. * cfgloop.h: Likewise. * c-gimplify.c: Likewise. * c-common.c: Likewise. * tree-vect-generic.c: Likewise. * tree-flow.h: Likewise. * c-common.h: Likewise. * basic-block.h: Likewise. * tree-ssa-structalias.c: Likewise. * tree-switch-conversion.c: Likewise. * tree-ssa-structalias.h: Likewise. * tree-cfg.c: Likewise. * passes.c: Likewise. * ipa-struct-reorg.c: Likewise. * ipa-struct-reorg.h: Likewise. * tree-ssa-reassoc.c: Likewise. * cfgrtl.c: Likewise. * varpool.c: Likewise. * stmt.c: Likewise. * tree-ssanames.c: Likewise. * tree-ssa-threadedge.c: Likewise. * langhooks-def.h: Likewise. * tree-ssa-operands.c: Likewise. * config/alpha/alpha.c: Likewise. * config/frv/frv.c: Likewise. * config/s390/s390.c: Likewise. * config/m32c/m32c.c: Likewise. * config/m32c/m32c-protos.h: Likewise. * config/spu/spu.c: Likewise. * config/sparc/sparc.c: Likewise. * config/i386/i386.c: Likewise. * config/sh/sh.c: Likewise. * config/xtensa/xtensa.c: Likewise. * config/stormy16/stormy16.c: Likewise. * config/ia64/ia64.c: Likewise. * config/rs6000/rs6000.c: Likewise. * config/pa/pa.c: Likewise. * config/mips/mips.c: Likewise. From-SVN: r138207
2008-06-27ada-tree.h (SET_TYPE_LANG_SPECIFIC, [...]): Fix -Wc++-compat warnings.Kaveh R. Ghazi1-4/+4
* ada-tree.h (SET_TYPE_LANG_SPECIFIC, SET_DECL_LANG_SPECIFIC): Fix -Wc++-compat warnings. * adaint.c (__gnat_locate_regular_file, __gnat_locate_exec, __gnat_locate_exec_on_path): Likewise. * decl.c (annotate_value): Likewise. * misc.c (gnat_handle_option): Likewise. * trans.c (gnat_to_gnu, extract_encoding, decode_name, post_error_ne_tree): Likewise. From-SVN: r137192
2008-06-06ada-tree.h (DECL_PARALLEL_TYPE): New language specific attribute...Nicolas Setton1-0/+46
2008-06-06 Nicolas Setton <setton@adacore.com> Olivier Hainque <hainque@adacore.com> * ada-tree.h (DECL_PARALLEL_TYPE): New language specific attribute, parallel descriptive type attached to another type for debug info generation purposes. * utils.c (add_parallel_type): New function, register parallel type to be attached to a type. (get_parallel_type): New function, fetch a registered parallel type, if any. (rest_of_record_type_compilation): Register the parallel type we make for variable size records. * gigi.h (add_parallel_type, get_parallel_type): Declare. * decl.c (gnat_to_gnu_entity, maybe_pad_type): Register the parallel debug types we make. * trans.c (extract_encoding, decode_name): New functions. (gigi): If the DWARF attribute extensions are available, setup to use them. * lang.opt: Register language specific processing request for -gdwarf+. * misc.c (gnat_dwarf_extensions): New global variable. How much do we want of our DWARF extensions. 0 by default. (gnat_handle_option) <OPT_gdwarf_>: Increment gnat_dwarf_extensions. (gnat_post_options): Map gnat_dwarf_extensions to the common use_gnu_debug_info_extensions for later processing. Co-Authored-By: Olivier Hainque <hainque@adacore.com> From-SVN: r136506
2008-05-26gigi.h (gigi): Remove bogus ATTRIBUTE_UNUSED marker.Eric Botcazou1-2/+2
* gigi.h (gigi): Remove bogus ATTRIBUTE_UNUSED marker. (builtin_decl_for): Likewise. * trans.c (gigi): Likewise. * utils.c (def_builtin_1): Fix formatting. From-SVN: r135911
2008-05-25tree-nested.c (convert_tramp_reference): Do not build a trampoline if we ↵Eric Botcazou1-1/+1
don't want one. * tree-nested.c (convert_tramp_reference) <ADDR_EXPR>: Do not build a trampoline if we don't want one. * varasm.c (initializer_constant_valid_p) <ADDR_EXPR>: Do not return zero for nested functions if we don't want a trampoline. ada/ * trans.c (Attribute_to_gnu) <Code_Address>: Set TREE_NO_TRAMPOLINE instead of TREE_STATIC on the ADDR_EXPR. From-SVN: r135884
2008-05-24trans.c (gnat_to_gnu): Do not set source location info on NOP_EXPRs.Eric Botcazou1-2/+6
* trans.c (gnat_to_gnu): Do not set source location info on NOP_EXPRs. (Sloc_to_locus): Do not overwrite known GCC locations when translating GNAT standard locations. From-SVN: r135847
2008-05-23gigi.h (mark_visited): Declare.Eric Botcazou1-11/+17
* gigi.h (mark_visited): Declare. * decl.c (gnat_to_gnu_entity): Use mark_visited instead of marking only the topmost node of expressions. (elaborate_expression_1): Look deeper for read-only variable. * trans.c (add_decl_expr): Use mark_visited instead of marking by hand. (mark_visited): Move logic to mark_visited_r. Invoke walk_tree. (mark_visited_r): New function. From-SVN: r135819
2008-05-17trans.c (gnat_to_gnu): Account for dummy types pointed to by the converted ↵Eric Botcazou1-29/+55
pointer types. * trans.c (gnat_to_gnu) <N_Validate_Unchecked_Conversion>: Account for dummy types pointed to by the converted pointer types. From-SVN: r135464
2008-05-15trans.c (add_decl_expr): At toplevel, mark the TYPE_ADA_SIZE field of ↵Eric Botcazou1-27/+34
records and unions. * trans.c (add_decl_expr): At toplevel, mark the TYPE_ADA_SIZE field of records and unions. (gnat_to_gnu) <N_Validate_Unchecked_Conversion>: Fix formatting. From-SVN: r135333
2008-05-12* utils2.c (known_alignment, contains_save_expr_p)Tomas Bily1-7/+4
(gnat_mark_addressable): Use CASE_CONVERT. * decl.c (annotate_value): Likewise. * trans.c (maybe_stabilize_reference): Likewise. * utils2.c (build_binary_op): Use CONVERT_EXPR_P. * utils.c (rest_of_record_type_compilation): Likewise. * trans.c (protect_multiple_eval, Attribute_to_gnu) (protect_multiple_eval): Likewise. From-SVN: r135215
2008-05-03decl.c (maybe_pad_type): Try to get a form of the type with integral mode ↵Eric Botcazou1-22/+28
even if... * decl.c (maybe_pad_type): Try to get a form of the type with integral mode even if the alignment is not a factor of the original size. But make sure to create the inner field with the original size. Reorder. * trans.c (addressable_p) <COMPONENT_REF>: Treat the field of a padding record as always addressable. * utils.c (convert): Deal specially with conversions between original and packable versions of a record type. * utils2.c (build_binary_op) <MODIFY_EXPR>: Be more restrictive when recognizing an assignment between padded objects. From-SVN: r134916
2008-05-01decl.c (make_packable_type): Resize the last component to its RM size only ↵Eric Botcazou1-2/+2
if it is of an aggregate type. * decl.c (make_packable_type): Resize the last component to its RM size only if it is of an aggregate type. * trans.c (call_to_gnu): Fix nit in comment. (gnat_to_gnu): Likewise. From-SVN: r134848
2008-04-24trans.c (Attribute_to_gnu): LengthOlivier Hainque1-11/+10
2008-04-24 Olivier Hainque <hainque@adacore.com> ada/ * trans.c (Attribute_to_gnu) <case Attr_Length>: Length * computation doesn't require signed arithmetic anymore. testsuite/ * gnat.dg/concat_length.adb: New test. From-SVN: r134627
2008-04-23tree-cfg.c (verify_expr): Check with is_gimple_address.Paolo Bonzini1-3/+0
2008-04-23 Paolo Bonzini <bonzini@gnu.org> * tree-cfg.c (verify_expr): Check with is_gimple_address. Don't check TREE_INVARIANT. * tree-gimple.c (is_gimple_address): New. (is_gimple_invariant_address): Simplify using decl_address_invariant_p. * tree-gimple.h (is_gimple_address): New. * tree.h (decl_address_invariant_p): New. * tree.c (make_node_stat): Don't set TREE_INVARIANT. (build_string): Likewise. (decl_address_invariant_p): New, from is_gimple_invariant_address. (tree_invariant_p_1): Likewise. (save_expr): Use it. (tree_invariant_p): New. (skip_simple_arithmetic): Use it. (stabilize_reference_1): Use it. (recompute_tree_invariant_for_addr_expr): Don't update TREE_INVARIANT, simplify. (build1_stat): Drop code to compute TREE_INVARIANT. (build2_stat): Drop code to compute TREE_INVARIANT. (build3_stat): Drop code to compute TREE_INVARIANT. (build4_stat): Drop code to compute TREE_INVARIANT. (build5_stat): Drop code to compute TREE_INVARIANT. (build7_stat): Drop code to compute TREE_INVARIANT. (merge_dllimport_decl_attributes): Don't mention TREE_INVARIANT. * tree.h (struct tree_base): Remove invariant_flag. (TREE_INVARIANT): Remove. * builtins.c (build_string_literal): Don't set TREE_INVARIANT. (fold_builtin_expect): Check TREE_CONSTANT. * tree-ssa-ccp.c (fold_stmt_r): Adjust comment. * c-tree.h (c_expr_to_decl): Drop third parameter. * c-typeck.c (build_external_ref): Don't set TREE_INVARIANT. (build_c_cast): Don't set TREE_INVARIANT. (pop_init_level): Don't set TREE_INVARIANT. (c_objc_common_truthvalue_conversion): Don't set TREE_INVARIANT. * gimplify.c (gimplify_init_ctor_preeval): Add assertion, test TREE_CONSTANT. (gimplify_init_constructor): Don't set TREE_INVARIANT. (gimplify_addr_expr): Adjust comment. * tree-mudflap.c (mf_build_string): * print-tree.c (print_node): Don't print TREE_INVARIANT. * tree-nested.c (convert_nonlocal_reference): Adjust comment. * c-common.c (fix_string_type): Don't set TREE_INVARIANT. * langhooks-def.h (lhd_expr_to_decl): Drop third parameter. * langhooks.c (lhd_expr_to_decl): Drop third parameter. * langhooks.h (struct lang_hooks): Drop third parameter from expr_to_decl. java: 2008-04-23 Paolo Bonzini <bonzini@gnu.org> * class.c (build_utf8_ref): Don't set TREE_INVARIANT. (build_classdollar_field): Don't set TREE_INVARIANT. (get_dispatch_table): Don't set TREE_INVARIANT. (make_class_data): Don't set TREE_INVARIANT. (build_symbol_entry): Don't set TREE_INVARIANT. (emit_symbol_table): Don't set TREE_INVARIANT. * constants.c (build_constant_data_ref): Don't set TREE_INVARIANT. (build_ref_from_constant_pool): Don't set TREE_INVARIANT. * resource.c (compile_resource_data): Don't set TREE_INVARIANT. * expr.c (cache_cpool_data_ref): Don't set TREE_INVARIANT. objc: 2008-04-23 Paolo Bonzini <bonzini@gnu.org> * objc-act.c (objc_build_string_object): Don't set TREE_INVARIANT. cp: 2008-04-23 Paolo Bonzini <bonzini@gnu.org> * typeck.c (get_member_function_from_ptrfunc): Don't set TREE_INVARIANT. (build_ptrmemfunc1): Don't set TREE_INVARIANT. * init.c (build_zero_init): Don't set TREE_INVARIANT. * class.c (build_base_path): Don't set TREE_INVARIANT. (build_vtbl_ref_1): Don't set TREE_INVARIANT. (build_vtbl_initializer): Don't set TREE_INVARIANT. * decl.c (build_enumerator): Don't set TREE_INVARIANT. * rtti.c (tinfo_base_init): Don't set TREE_INVARIANT. (generic_initializer): Don't set TREE_INVARIANT. (ptr_initializer): Don't set TREE_INVARIANT. (ptm_initializer): Don't set TREE_INVARIANT. (class_initializer): Don't set TREE_INVARIANT. * typeck2.c (process_init_constructor): Don't set TREE_INVARIANT. * pt.c (push_inline_template_parms_recursive): Don't set TREE_INVARIANT. (build_template_parm_index): Don't set TREE_INVARIANT. (reduce_template_parm_level): Don't set TREE_INVARIANT. (process_template_parm): Don't set TREE_INVARIANT. ada: 2008-04-23 Paolo Bonzini <bonzini@gnu.org> * trans.c (Attribute_to_gnu): Don't set TREE_INVARIANT. (call_to_gnu): Don't set TREE_INVARIANT. * utils2.c (gnat_build_constructor): Don't set TREE_INVARIANT. fortran: 2008-04-23 Paolo Bonzini <bonzini@gnu.org> * trans-expr.c (gfc_conv_structure): Don't set TREE_INVARIANT. * trans-array.c (gfc_build_null_descriptor): Don't set TREE_INVARIANT. (gfc_trans_array_constructor_value): Don't set TREE_INVARIANT. (gfc_build_constant_array_constructor): Don't set TREE_INVARIANT. (gfc_conv_array_initializer): Don't set TREE_INVARIANT. * trans-common.c (get_init_field): Don't set TREE_INVARIANT. (create_common): Don't set TREE_INVARIANT. * trans-stmt.c (gfc_trans_character_select): Don't set TREE_INVARIANT. * trans-decl.c (gfc_generate_function_code): Don't set TREE_INVARIANT. From-SVN: r134599
2008-04-20decl.c (gnat_to_gnu_entity): Also promote the alignment of constant objects, ↵Eric Botcazou1-1/+1
but not exceptions. * decl.c (gnat_to_gnu_entity) <object>: Also promote the alignment of constant objects, but not exceptions. * trans.c (add_decl_expr): Use gnat_types_compatible_p for type compatibility test. * utils.c (create_var_decl_1): Likewise. * utils2.c (build_binary_op) <MODIFY_EXPR>: Also use the padded view of the type when copying to padded object and the source is a constructor. From-SVN: r134483
2008-04-15ada-tree.h (DECL_BY_COMPONENT_PTR_P): Use DECL_LANG_FLAG_3.Eric Botcazou1-3/+2
* ada-tree.h (DECL_BY_COMPONENT_PTR_P): Use DECL_LANG_FLAG_3. * decl.c (gnat_to_gnu_entity) <object>: Call maybe_pad_type only if a size or alignment is specified. Do not take into account alignment promotions for the computation of the object's size. <type>: Call maybe_pad_type only if a size or alignment is specified. (maybe_pad_type): Really reuse the RM_Size of the original type if requested. * trans.c (Attribute_to_gnu): Fix a couple of nits. * utils2.c (build_binary_op) <MODIFY_EXPR>: Merge related conditional statements. Use the padded view of the type when copying between padded objects of the same underlying type. From-SVN: r134310
2008-04-13sfn_scan.adb, [...]: Fix comment typos.Ralf Wildenhues1-7/+7
gcc/ada/ * sfn_scan.adb, sfn_scan.ads, sinfo.ads, sinput-d.ads, sinput-l.adb, sinput-l.ads, sinput.ads, snames.ads, sprint.adb, stand.ads, stringt.ads, styleg.adb, styleg.ads, stylesw.adb, stylesw.ads, switch.ads, sysdep.c, table.adb, table.ads, targparm.ads, tb-gcc.c, tbuild.ads, tracebak.c, trans.c, tree_io.adb, treepr.adb, types.adb, types.ads, uintp.adb, uintp.ads, utils.c, utils2.c, validsw.ads, vms_conv.adb, vms_conv.ads, vms_data.ads, widechar.adb, widechar.ads, xeinfo.adb, xgnatugn.adb, xr_tabls.adb, xr_tabls.ads, xref_lib.adb, xref_lib.ads, xsinfo.adb: Fix comment typos. From-SVN: r134243
2008-04-08gigi.h (standard_datatypes): Add ADT_fdesc_type and ADT_null_fdesc.Eric Botcazou1-1/+60
* gigi.h (standard_datatypes): Add ADT_fdesc_type and ADT_null_fdesc. (fdesc_type_node): Define. (null_fdesc_node): Likewise. * decl.c (gnat_to_gnu_entity) <E_Access_Subprogram_Type>: If the target uses descriptors for vtables and the type comes from a dispatch table, return the descriptor type. * trans.c (Attribute_to_gnu) <Attr_Unrestricted_Access>: If the target uses descriptors for vtables and the type comes from a dispatch table, build a descriptor in the static case and copy the existing one in the non-static case. (gnat_to_gnu) <N_Null>: If the target uses descriptors for vtables and the type is a pointer-to-subprogram coming from a dispatch table, return the null descriptor. <N_Unchecked_Type_Conversion>: If the target uses descriptors for vtables, the source type is the descriptor type and the target type is a pointer type, first build the pointer. * utils.c (init_gigi_decls): If the target uses descriptors for vtables build the descriptor type and the null descriptor. From-SVN: r134101
2008-04-08decl.c (prepend_attributes): Fix typo.Eric Botcazou1-2/+1
* decl.c (prepend_attributes): Fix typo. * trans.c (Pragma_to_gnu): Likewise. * utils.c (gnat_genericize): Likewise. From-SVN: r134094
2008-04-08ada-tree.h (TYPE_PACKED_ARRAY_TYPE_P): Only set it when bit-packed.Eric Botcazou1-6/+5
* ada-tree.h (TYPE_PACKED_ARRAY_TYPE_P): Only set it when bit-packed. * decl.c (gnat_to_gnu_entity): Adjust for above change. <E_Record_Type>: Try to get a better form of the component for packing, even if it has an integral mode. <E_Record_Subtype>: Likewise. * trans.c (gnat_to_gnu): Do not require BLKmode for the special exception suppressing the final conversion between record types. Co-Authored-By: Richard Kenner <kenner@adacore.com> From-SVN: r134093
2008-04-08decl.c (gnat_to_gnu_entity): If -gnatd.a and not optimizing alignment for ↵Eric Botcazou1-33/+38
space... * decl.c (gnat_to_gnu_entity) <object>: If -gnatd.a and not optimizing alignment for space, promote the alignment of non-scalar variables with no size and alignment. * gigi.h (gnat_types_compatible_p): Declare. * misc.c (LANG_HOOKS_TYPES_COMPATIBLE_P): Set to above predicate. * trans.c (gnat_to_gnu): Revert revision 129339 change. Minor cleanup. * utils.c (gnat_types_compatible_p) : New predicate. (convert): Use it throughout to test for cases where a mere view conversion is sufficient. * utils2.c (build_binary_op): Minor tweaks. (build_unary_op): Likewise. From-SVN: r134092
2008-04-07Removal of Return with Depressed Stack Pointer supportEric Botcazou1-20/+7
Removal of Return with Depressed Stack Pointer support * tree.h (TYPE_RETURNS_STACK_DEPRESSED): Delete. (ECF_SP_DEPRESSED): Likewise. (ECF_LIBCALL_BLOCK, ECF_NOVOPS): Adjust. * calls.c (emit_call_1): Do not test ECF_SP_DEPRESSED. (flags_from_decl_or_type): Do not test TYPE_RETURNS_STACK_DEPRESSED. (expand_call): Do not test ECF_SP_DEPRESSED. * dse.c (dse_step0): Do not test TYPE_RETURNS_STACK_DEPRESSED. * function.c (keep_stack_depressed): Delete. (handle_epilogue_set): Likewise. (update_epilogue_consts): Likewise. (emit_equiv_load): Likewise. (thread_prologue_and_epilogue_insns): Remove support for Return with Depressed Stack Pointer. * print-tree.c (print_node): Do not test TYPE_RETURNS_STACK_DEPRESSED. ada/ * gigi.h (create_subprog_type): Remove returns_with_dsp parameter. * decl.c (gnat_to_gnu_entity): Adjust for above new prototype. * utils.c (create_subprog_type): Remove returns_with_dsp parameter. * trans.c (gnat_to_gnu) <N_Return_Statement>: Remove code dealing with Return by Depressed Stack Pointer. From-SVN: r133976
2008-03-26tbuild.ads, [...] (N_Pragma): Chars field removed, use Chars ↵Robert Dewar1-2/+3
(Pragma_Identifier (.. 2008-03-26 Robert Dewar <dewar@adacore.com> * tbuild.ads, tbuild.adb, trans.c, sprint.adb, exp_prag.adb, decl.c, par-ch2.adb, sem_elab.adb, sem_util.ads (N_Pragma): Chars field removed, use Chars (Pragma_Identifier (.. instead, adjustments throughout to accomodate this change. * s-pooglo.ads, s-pooloc.ads: Minor comment updates * exp_dbug.adb: Use Sem_Util.Set_Debug_Info_Needed (not Einfo.Set_Needs_Debug_Info) From-SVN: r133587
2008-03-21trans.c (Attribute_to_gnu): Compute as (hb < lb) ? 0 : hb - lb + 1 instead ↵Olivier Hainque1-21/+30
of max (hb - lb + 1, 0). 2008-03-21 Olivier Hainque <hainque@adacore.com> ada/ * trans.c (Attribute_to_gnu) <'length>: Compute as (hb < lb) ? 0 : hb - lb + 1 instead of max (hb - lb + 1, 0). testsuite/ * gnat.dg/empty_vector_length.adb: New testcase. From-SVN: r133423
2008-03-21trans.c (addressable_p): Add notes on addressability issues.Eric Botcazou1-2/+55
* trans.c (addressable_p): Add notes on addressability issues. From-SVN: r133421
2008-03-21trans.c (addressable_p): Accept COND_EXPR when both arms are addressable.Olivier Hainque1-1/+14
2008-03-21 Olivier Hainque <hainque@adacore.com> Ed Schonberg <schonberg@adacore.com> * trans.c (addressable_p): Accept COND_EXPR when both arms are addressable. (gnat_gimplify_expr): Let the gimplifier handle &COND_EXPR. (call_to_gnu): Do not use name reference in the error message for a misaligned by_reference_parameter. The actual may be a general expression. From-SVN: r133418
2008-03-10trans.c (emit_range_check): Do not emit the check if the base type of the ↵Eric Botcazou1-0/+5
expression is the type against... * trans.c (emit_range_check): Do not emit the check if the base type of the expression is the type against which its range must be checked. From-SVN: r133083
2008-03-08lang.opt (nostdlib): Move around.Eric Botcazou1-27/+25
* lang.opt (nostdlib): Move around. * misc.c (gnat_handle_option): Fix formatting. (gnat_dwarf_name): Move around. * trans.c (Case_Statement_to_gnu): Fix formatting. (gnat_to_gnu): Likewise. * utils.c (aggregate_type_contains_array_p): Likewise. (create_subprog_decl): Likewise. From-SVN: r133035
2008-03-08trans.c (Loop_Statement_to_gnu): Set the SLOC of the loop label from that of ↵Eric Botcazou1-3/+7
the front-end's end label. * trans.c (Loop_Statement_to_gnu): Set the SLOC of the loop label from that of the front-end's end label. (gnat_gimplify_stmt) <LOOP_STMT>: Set the SLOC of the backward goto from that of the loop label. From-SVN: r133026
2008-03-07decl.c (MAX_FIXED_MODE_SIZE): Define if not already defined.Eric Botcazou1-29/+64
* decl.c (MAX_FIXED_MODE_SIZE): Define if not already defined. (gnat_to_gnu_entity) <E_Record_Type>: Try to get a smaller form of the component for packing, if possible, as well as if a component size clause is specified. <E_Record_Subtype>: For an array type used to implement a packed array, get the component type from the original array type. Try to get a smaller form of the component for packing, if possible, as well as if a component size clause is specified. (round_up_to_align): New function. (make_packable_type): Add in_record parameter. For a padding record, preserve the size. If not in_record and the size is too large for an integral mode, attempt to shrink the size by lowering the alignment. Ditch the padding bits of the last component. Compute sizes and mode manually, and propagate the RM size. Return a BLKmode record type if its size has shrunk. (maybe_pad_type): Use MAX_FIXED_MODE_SIZE instead of BIGGEST_ALIGNMENT. Use Original_Array_Type to retrieve the type in case of an error. Adjust call to make_packable_type. (gnat_to_gnu_field): Likewise. (concat_id_with_name): Minor tweak. * trans.c (larger_record_type_p): New predicate. (call_to_gnu): Compute the nominal type of the object only if the parameter is by-reference. Do the conversion actual type -> nominal type if the nominal type is a larger record. (gnat_to_gnu): Do not require integral modes on the source type to avoid the conversion for types with identical names. (addressable_p): Add gnu_type parameter. If it is specified, do not return true if the expression is not addressable in gnu_type. Adjust recursive calls. * utils.c (finish_record_type): Remove dead code. From-SVN: r133011
2008-02-26system.h (USE_MAPPED_LOCATION): Poison.Tom Tromey1-19/+0
gcc * system.h (USE_MAPPED_LOCATION): Poison. * Makefile.in (GTFILES): Put CPP_ID_DATA_H first. * tree-cfg.c (make_cond_expr_edges): Remove old location code. (make_goto_expr_edges): Likewise. (remove_bb): Likewise. (execute_warn_function_return): Likewise. * basic-block.h (struct edge_def) <goto_locus>: Change type to location_t. * c-common.c (fname_decl): Remove old location code. * tree-vect-transform.c (vect_finish_stmt_generation): Remove old location code. * rtl.h (ASM_OPERANDS_SOURCE_LOCATION): Remove old-location variant. (ASM_INPUT_SOURCE_LOCATION): Likewise. (gen_rtx_ASM_INPUT): Likewise. (gen_rtx_ASM_INPUT_loc): Likewise. (get_rtx_asm_OPERANDS): Remove. * cfglayout.c (insn_locators_alloc): Remove old location code. (set_curr_insn_source_location): Likewise. (curr_insn_locator): Likewise. * print-tree.c (print_node): Remove old location code. * tree-mudflap.c (mf_varname_tree): Remove old location code. (mf_file_function_line_tree): Remove test of USE_MAPPED_LOCATION. * cfgexpand.c (expand_gimple_cond_expr): Don't use location_from_locus. (construct_exit_block): Remove old location code. * emit-rtl.c (force_next_line_note): Remove old location code. * profile.c (branch_prob): Remove old location code. * tree-vectorizer.h (LOC, UNKNOWN_LOC, EXPR_LOC, LOC_FILE, LOC_LINE): Remove old-location variants. * langhooks.c (lhd_print_error_function): Remove old location code. * configure, config.in: Rebuilt. * configure.ac (--enable-mapped-location): Remove. * c-decl.c (c_init_decl_processing): Remove old location code. (finish_function): Likewise. * recog.c (decode_asm_operands): Remove old location code. * c-pch.c (c_common_read_pch): Remove old location code. * rtl.def (ASM_INPUT, ASM_OPERANDS): Remove old location variants. * gimple-low.c (lower_function_body): Remove old location code. * toplev.c (unknown_location): Remove. (push_srcloc): Remove old-location variant. (process_options): Remove old location code. (lang_dependent_init): Likewise. * input.h (UNKNOWN_LOCATION): Move definition. (location_t): Undeprecate. (source_locus): Remove. (location_from_locus): Remove. (struct location_s): Remove. Remove all old-location code. (input_line, input_filename): Remove. * final.c (final_scan_insn): Remove old location code. * diagnostic.c (diagnostic_build_prefix): Remove USE_MAPPED_LOCATION test. * tree.h (gimple_stmt) <locus>: Now a location_t. (tree_exp) <locus>: Likewise. (DECL_IS_BUILTIN): Remove old-location variant. (annotate_with_file_line, annotate_with_locus): Likewise. (expr_locus, set_expr_locus): Update. * tree.c (build1_stat): Remove old location code. (last_annotated_node): Remove. (annotate_with_file_line): Remove old-location variant. (annotate_with_locus): Likewise. (expr_location): Remove old location code. (set_expr_location): Likewise. (expr_has_location): Likewise. (expr_locus): Likewise. (set_expr_locus): Likewise. (expr_filename): Don't use location_from_locus. (expr_lineno): Likewise. * rtl-error.c (location_for_asm): Remove old location code. * c-lex.c (cb_line_change): Remove old location code. (fe_file_change): Likewise. (cb_def_pragma): Likewise. (c_lex_with_flags): Likewise. * gengtype.c (do_typedef): Don't special-case location types. (define_location_structures): Remove. (main): Don't call define_location_structures. * tree-pretty-print.c (dump_implicit_edges): Remove old location code. gcc/ada * misc.c (internal_error_function): Remove test of USE_MAPPED_LOCATION. * trans.c (gigi): Remove test of USE_MAPPED_LOCATION. (Sloc_to_locus): Remove old location code. gcc/cp * parser.c (eof_token): Remove old location code. (check_empty_body): Remove test of USE_MAPPED_LOCATION. * decl2.c (generate_ctor_or_dtor_function): Remove old location code. (cp_write_global_declarations): Likewise. * lex.c (cxx_init): Remove old location code. (handle_pragma_implementation): Remove test of USE_MAPPED_LOCATION. * pt.c (tsubst): Remove old location code. * error.c (cp_print_error_function): Remove test of USE_MAPPED_LOCATION. * decl.c (pop_label): Remove old location code. (finish_function): Likewise. gcc/fortran * trans-io.c (set_error_locus): Remove old location code. * trans-decl.c (gfc_set_decl_location): Remove old location code. * f95-lang.c (gfc_init): Remove test of USE_MAPPED_LOCATION. * scanner.c (gfc_gobble_whitespace): Remove old location code. (get_file): Likewise. (preprocessor_line): Likewise. (load_file): Likewise. (gfc_new_file): Likewise. * trans.c (gfc_trans_runtime_check): Remove old location code. (gfc_get_backend_locus): Likewise. (gfc_set_backend_locus): Likewise. * data.c (gfc_assign_data_value): Remove old location code. * error.c (show_locus): Remove old location code. * gfortran.h (gfc_linebuf): Remove old location code. (gfc_linebuf_linenum): Remove old-location variant. gcc/java * lang.c (java_post_options): Remove conditional. * expr.c (expand_byte_code): Remove old location code. * jcf-parse.c (set_source_filename): Remove old location code. (give_name_to_class): Likewise. (jcf_parse): Likewise. (duplicate_class_warning): Likewise. (parse_class_file): Likewise. (java_parse_file): Likewise. * decl.c (finish_method): Remove old location code. * class.c (push_class): Remove old location code. gcc/objc * objc-act.c (objc_init): Remove old location code. gcc/treelang * tree1.c (treelang_init): Remove old location code. (treelang_parse_file): Likewise. * lex.l (LINEMAP_POSITION_FOR_COLUMN): Remove. (update_lineno_charno): Remove old location code. From-SVN: r132679
2008-01-22decl.c (components_to_record): Do not reuse the empty union type if there is ↵Eric Botcazou1-0/+1
a representation clause on the record. * decl.c (components_to_record): Do not reuse the empty union type if there is a representation clause on the record. * trans.c (addressable_p): Return true for INTEGER_CST. From-SVN: r131733
2008-01-21trans.c (gnat_to_gnu): Use POINTER_PLUS_EXPR in pointer arithmetics.Eric Botcazou1-3/+2
* trans.c (gnat_to_gnu) <N_Free_Statement>: Use POINTER_PLUS_EXPR in pointer arithmetics. * utils2.c (build_allocator): Likewise. From-SVN: r131692
2008-01-14decl.c (gnat_to_gnu_entity): Process renamings before converting the ↵Eric Botcazou1-0/+22
expression to the type of the object. * decl.c (gnat_to_gnu_entity) <object>: Process renamings before converting the expression to the type of the object. * trans.c (maybe_stabilize_reference) <CONSTRUCTOR>: New case. Stabilize constructors for special wrapping types. From-SVN: r131531
2008-01-13* trans.c (call_to_gnu):Invoke the addressable_p predicate onlyEric Botcazou1-58/+73
when necessary.  Merge some conditional statements.  Update comments. Rename unchecked_convert_p local variable to suppress_type_conversion. Do not suppress conversions in the In case. (addressable_p) <VIEW_CONVERT_EXPR>: Do not take alignment issues into account on non strict-alignment platforms. From-SVN: r131510
2007-12-22trans.c (call_to_gnu): Make the temporary for non-addressable In parameters ↵Eric Botcazou1-88/+70
passed by reference. * trans.c (call_to_gnu): Make the temporary for non-addressable In parameters passed by reference. (addressable_p): Return true for STRING_CST and CALL_EXPR. From-SVN: r131140
2007-12-13(Attribute_to_gnu): Check for violations of the No_Implicit_Dynamic_Code ↵Bob Duff1-5/+28
restriction. (Attribute_to_gnu): Check for violations of the No_Implicit_Dynamic_Code restriction. This checking used to be done in the front end, but is moved here so we can make it more accurate. From-SVN: r130892
2007-12-05trans.c (lvalue_required_p): Take base node directly instead of its parent.Eric Botcazou1-51/+60
* trans.c (lvalue_required_p): Take base node directly instead of its parent. Rename second parameter to 'gnu_type'. <N_Indexed_Component>: Return 0 if the node isn't the prefix. <N_Slice>: Likewise. (Identifier_to_gnu): Rename parent_requires_lvalue to require_lvalue. Adjust calls to lvalue_required_p. From-SVN: r130626
2007-11-26PR 34081/C++Andreas Krebbel1-2/+2
2007-11-26 Andreas Krebbel <krebbel1@de.ibm.com> PR 34081/C++ * c-decl.c (store_parm_decls): Pass 'false' for the new allocate_struct_function parameter. * cgraphunit.c (cgraph_build_static_cdtor): Likewise. * tree-parloops.c (create_loop_fn): Likewise. * function.c (push_function_context_to, push_struct_function, init_function_start): Likewise. (allocate_struct_function): Add boolean parameter. * tree.h (allocate_struct_function): Add boolean parameter. * function.h (struct function): Move returns_struct and returns_pcc_struct to the end of the structure definiton. 2007-11-26 Andreas Krebbel <krebbel1@de.ibm.com> PR 34081/C++ * trans.c (Subprogram_Body_to_gnu, Compilation_Unit_to_gnu): Pass 'false' for the new allocate_struct_function parameter. * utils.c (build_function_stub): Likewise. 2007-11-26 Andreas Krebbel <krebbel1@de.ibm.com> PR 34081/C++ * decl.c (finish_method): Pass 'false' for the new allocate_struct_function parameter. 2007-11-26 Andreas Krebbel <krebbel1@de.ibm.com> PR 34081/C++ * treetree.c (tree_code_create_function_wrapup): Pass 'false' for the new allocate_struct_function parameter. 2007-11-26 Andreas Krebbel <krebbel1@de.ibm.com> PR 34081/C++ * decl.c (start_preparsed_function): Pass processing_template_decl for the new allocate_struct_function parameter. 2007-11-26 Andreas Krebbel <krebbel1@de.ibm.com> PR 34081/C++ * g++.dg/template/dependent-expr6.C: New testcase. From-SVN: r130441
2007-11-22trans.c (gnat_to_gnu): Reformat lines to fit in 80 columns.Olivier Hainque1-10/+14
2007-11-22 Olivier Hainque <hainque@adacore.com> * trans.c (gnat_to_gnu) <case N_Free_Statement>: Reformat lines to fit in 80 columns. From-SVN: r130343
2007-11-19re PR ada/34098 (xgcc: Internal error: Segmentation fault (program gnat1))Eric Botcazou1-15/+19
PR ada/34098 ada/ * misc.c (gnat_adjust_rli): Delete. (gnat_init): Do not initialize the translation code here. Do not call set_lang_adjust_rli. * trans.c (init_code_table): Make static. (gnat_init_stmt_group): Delete. (gigi): Initialize the translation code entirely here. Emit debug info for the common types here instead of... * utils.c (gnat_init_decl_processing): ...here. * gigi.h (init_code_table): Delete. (gnat_init_stmt_group): Likewise. * stor-layout.c (lang_adjust_rli): Delete. (set_lang_adjust_rli): Likewise. (layout_type): Do not call lang_adjust_rli hook. * tree.h (set_lang_adjust_rli): Delete. From-SVN: r130294
2007-11-16utils2.c (build_call_alloc_dealloc): Move the code retrieving an allocator ↵Olivier Hainque1-1/+32
return value from a super-aligned address... 2007-11-16 Olivier Hainque <hainque@adacore.com> ada/ * utils2.c (build_call_alloc_dealloc) <if gnu_obj>: Move the code retrieving an allocator return value from a super-aligned address from here to ... * trans.c (gnat_to_gnu) <case N_Free_Statement>: ... here, and don't expect a super-aligned address for a fat or thin pointer. testsuite/ * gnat.dg/release_unc_maxalign.adb: New test. From-SVN: r130221
2007-11-14trans.c (call_to_gnu): Always set the source location on the call expression.Eric Botcazou1-4/+3
* trans.c (call_to_gnu): Always set the source location on the call expression. If the function returns-by-target, also set it on the address expression. From-SVN: r130184
2007-10-15trans.c (gnat_to_gnu): Remove the padding structure more often.Tristan Gingold1-7/+8
2007-10-15 Tristan Gingold <gingold@adacore.com> * trans.c (gnat_to_gnu): Remove the padding structure more often. This optimize assignment to over-aligned record. From-SVN: r129339
2007-09-27Mapped location supportEric Botcazou1-31/+80
Mapped location support * back_end.adb (Call_Back_End): Pass information about source files instead of units to gigi. * gigi.h (struct File_Info_Type): New. (gigi): Rename and change type of number_units parameter, change type of file_info_ptr parameter. * trans.c (number_files): New global variable. (gigi): Rename and change type of number_units parameter, change type of file_info_ptr parameter. If mapped location support is enabled, create the isomorphic mapping between source files and line maps. (Sloc_to_locus): If mapped location support is enabled, translate source location into mapped location. (annotate_with_node): Rename into set_expr_location_from_node. Call set_expr_location instead of annotate_with_locus. (Pragma_to_gnu): Adjust for above change. (Loop_Statement_to_gnu): Likewise. (call_to_gnu): Likewise. (Handled_Sequence_Of_Statements_to_gnu): Likewise. (gnat_to_gnu): Likewise. (add_stmt_with_node): Likewise. (add_cleanup): Likewise. * utils.c (gnat_init_decl_processing): Do not set input_line. From-SVN: r128839
2007-09-26a-tags.adb:Javier Miranda1-1/+1
2007-09-26 Javier Miranda <miranda@adacore.com> Eric Botcazou <ebotcazou@adacore.com> * a-tags.adb: (Get_HT_Link/Set_HT_Link): Updated to handle the additional level of indirection added to the HT_Link component of the TSD. This is required to statically allocate the TSD. * a-tags.ads: Minor reordering of the declarations in the private part. Required to add a level of indirection to the contents of the TSD component HT_Link. This is required to statically allocate the TSD. * decl.c (gnat_to_gnu_entity) <object>: Do not exclude objects with Is_Statically_Allocated set from constant objects. Do not make exported constants created by the compiler volatile. (gnat_to_gnu_param): Do not treat an IN parameter whose address is taken as read-only. * trans.c (Identifier_to_gnu): For constants, unshare initializers before returning them. * exp_disp.ads, exp_disp.adb (Building_Static_DT): Spec moved to the public part of the package. (Make_DT): Move HT_Link component out of the TSD record. For this purpose Make_DT now declares a separate object that stores the HT_Link value, and initializes the TSD component with the address of this new object. The addition of this level of indirection is required to statically allocate the TSD because the TSD cannot have variable components. (Expand_Interface_Conversion): Improve the expanded code. (Expand_Interface_Thunk): Set Is_Thunk in the thunk entity. * sem_disp.adb (Check_Dispatching_Operation): In case of a body declaring a primitive operation ---allowed by RM 3.9.2 (13.e/2)---, if we are building static dispatch tables then we must not generate extra code to register the primitive because the dispatch table will be built at the end of the library package; otherwise we notify that we cannot build the static dispatch table. From-SVN: r128784
2007-09-25trans.c: Fix misplaced #define.Eric Botcazou1-5/+5
* trans.c: Fix misplaced #define. From-SVN: r128771
2007-09-08decl.c (gnat_to_gnu_entity): Simplify the condition under which a constant ↵Eric Botcazou1-6/+14
renaming is treated as a normal... * decl.c (gnat_to_gnu_entity) <Object>: Simplify the condition under which a constant renaming is treated as a normal object declaration. * trans.c (lvalue_required_p) <N_Slice>: New case, extracted from the N_Indexed_Component case. <N_Indexed_Component>: Fall through to above case. <N_Object_Renaming_Declaration>: Return true for all composite types. From-SVN: r128268