Commit Graph

285 Commits

Author SHA1 Message Date
Arnaud Charlet
015bee83fd [multiple changes]
2012-11-06  Robert Dewar  <dewar@adacore.com>

	* err_vars.ads, atree.ads: Minor reformatting.

2012-11-06  Arnaud Charlet  <charlet@adacore.com>

	* gcc-interface/Make-lang.in: Update dependencies.
	* gcc-interface/Makefile.in: Add runtime pairs for Android.
	Rework handling of s-oscons.ads.
	* s-osinte-android.ads, s-osinte-android.adb: New files.

2012-11-06  Tristan Gingold  <gingold@adacore.com>

	* gcc-interface/trans.c (gnat_to_gnu): For N_Real_Literal, create the
	binary representation of vax floats.

From-SVN: r193238
2012-11-06 12:56:42 +01:00
Eric Botcazou
00a22e5e4b trans.c (Loop_Statement_to_gnu): Use gnat_type_for_size directly to obtain an unsigned version of the base type.
* gcc-interface/trans.c (Loop_Statement_to_gnu): Use gnat_type_for_size
	directly to obtain an unsigned version of the base type.

From-SVN: r192669
2012-10-22 08:19:58 +00:00
Arnaud Charlet
7640ef8aba [multiple changes]
2012-10-02  Eric Botcazou  <ebotcazou@adacore.com>

	* types.h (N_Return_Statement): Delete.
	* gcc-interface/trans.c (gnat_to_gnu): Replace N_Return_Statement with
	N_Simple_Return_Statement.

2012-10-02  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Freeze_Entity): in a generic context, aspects must
	be analyzed because they may be queried subsequently within the
	generic unit, even if no other freezing actions are generated
	for an entity.
	* sem_ch13.adb (Analyze_Aspects_At_Freeze_Point): iterator
	aspects must be analyzed because they are delayed aspects and
	the corresponding attribute definition clause may not have been
	analyzed yet.

2012-10-02  Yannick Moy  <moy@adacore.com>

	* gnat_rm.texi: Minor editing.

From-SVN: r191975
2012-10-02 14:25:44 +02:00
Eric Botcazou
f563ce5585 decl.c (elaborate_expression_1): Use the variable for bounds of loop iteraration scheme only for locally defined...
* gcc-interfaces/decl.c (elaborate_expression_1): Use the variable for
	bounds of loop iteraration scheme only for locally defined subtypes.

	* gcc-interface/trans.c (gigi): Fix formatting.
	(build_return_expr): Apply the NRV optimization only for BLKmode.

From-SVN: r191971
2012-10-02 10:34:44 +00:00
Robert Dewar
9b16cb57de par_sco.adb, [...]: Change name Conditional_Expression to If_Expression.
2012-10-02  Robert Dewar  <dewar@adacore.com>

	* par_sco.adb, sem_ch3.adb, layout.adb, exp_ch7.adb, exp_imgv.adb,
	exp_util.adb, exp_util.ads, exp_attr.adb, sinfo.adb, sinfo.ads,
	exp_ch9.adb, style.ads, scos.ads, debug.adb, einfo.ads, scng.adb,
	checks.adb, checks.ads, sem.adb, par-ch4.adb, sem_util.adb, types.h,
	sem_res.adb, expander.adb, scans.ads, par.adb, exp_ch2.adb,
	gnat1drv.adb, stylesw.ads, sem_elab.adb, exp_ch4.adb, exp_ch4.ads,
	exp_ch6.adb, sem_ch4.adb, sem_ch4.ads, sem_ch6.adb,
	opt.ads, sem_eval.adb, sem_eval.ads, exp_intr.adb, sprint.adb,
	sprint.ads, styleg.ads: Change name Conditional_Expression to
	If_Expression.
	* gcc-interface/trans.c (gnat_to_gnu): Replace
	N_Conditional_Expression by N_If_Expression.
	* gcc-interface/Make-lang.in: Update dependencies.

From-SVN: r191967
2012-10-02 10:48:27 +02:00
Arnaud Charlet
fd96b9fccf trans.c (gigi): Adjust previous change to avoid a typecast that discards a const qualifier.
* gcc-interface/trans.c (gigi): Adjust previous change to avoid a
	typecast that discards a const qualifier.

From-SVN: r191907
2012-10-01 11:45:13 +02:00
Arnaud Charlet
cf427f02bb [multiple changes]
2012-10-01  Vincent Pucci  <pucci@adacore.com>

	* s-gearop.adb (Vector_Matrix_Product): Dimensions check fixed. Index
	of Left in S evaluation fixed.

2012-10-01  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.adb (Analyze_Declarations): Avoid
	premature freezing caused by the internally generated subprogram
	_postconditions.
	* checks.adb (Expr_Known_Valid): Float literals are assumed to be valid
	in VM targets.

2012-10-01  Thomas Quinot  <quinot@adacore.com>

	* sinput.ads, sinput.adb, sinput-l.adb sinput-c.adb (Sinput): New
	Instances table, tracking all generic instantiations. Source file
	attribute Instance replaces previous Instantiation attribute with an
	index into the Instances table.
	(Iterate_On_Instances): New generic procedure.
	(Create_Instantiation_Source): Record instantiations in Instances.
	(Tree_Read, Tree_Write): Read/write the instance table.
	* scils.ads, scos.adb (SCO_Instance_Table): New table, contains
	information copied from Sinput.Instance_Table, but self-contained
	within the SCO data structures.
	* par_sco.ads, par_sco.adb (To_Source_Location): Move to library level.
	(Record_Instance): New subprogram, used by...
	(Populate_SCO_Instance_Table): New subprogram to fill
	the SCO instance table from the Sinput one (called by SCO_Output).
	* opt.ads (Generate_SCO_Instance_Table): New option.
	* put_scos.adb (Write_Instance_Table): New subprogram, used by...
	(Put_SCOs): Dump the instance table at the end of SCO information
	if requested.
	* get_scos.adb (Get_SCOs): Read SCO_Instance_Table.
	* types.h: Add declaration for Instance_Id.
	* back_end.adb (Call_Back_End): Pass instance ids in source file
	information table.
	(Scan_Back_End_Switches): -fdebug-instances sets
	Opt.Generate_SCO_Instance_Table.
	* gcc-interface/gigi.h: File_Info_Type includes instance id.
	* gcc-interface/trans.c: Under -fdebug-instances, set instance
	id in line map from same in file info.

2012-10-01  Thomas Quinot  <quinot@adacore.com>

	* sem_elab.adb: Minor reformatting
	(Check_Elab_Call): Minor fix to debugging code
	(add special circuit for the valid case where a 'Access attribute
	reference is passed to Check_Elab_Call).

2012-10-01  Thomas Quinot  <quinot@adacore.com>

	* exp_ch3.adb: Minor reformatting.

From-SVN: r191904
2012-10-01 11:21:46 +02:00
Eric Botcazou
48d3d75d39 trans.c (Loop_Statement_to_gnu): Revert to using size_type_node instead of sizetype.
* gcc-interface/trans.c (Loop_Statement_to_gnu): Revert to using
	size_type_node instead of sizetype.

From-SVN: r191069
2012-09-07 11:55:06 +00:00
Diego Novillo
0823efedd0 backport: As described in http://gcc.gnu.org/ml/gcc/2012-08/msg00015.html...
Merge from cxx-conversion branch (http://gcc.gnu.org/wiki/cxx-conversion).

As described in http://gcc.gnu.org/ml/gcc/2012-08/msg00015.html, this patch
changes the default bootstrap process so that stage 1 always builds with a C++
compiler.

Other than the bootstrap change, the patch makes no functional changes to the
compiler.  Everything should build as it does now in trunk.  The main
changes in this patch are:

1- Configuration changes.
2- Re-write of VEC.
3- Re-write of gengtype to support C++ templates and
   user-provided marking functions.
4- New hash table class.
5- Re-write double_int.
6- Implement tree macros as inline functions so they can be
   called from gdb.

As discussed before, several of these changes do not fully change
the call sites to use the new APIs.

The bootstrap changes have already been tested on a wide range of
targets (http://gcc.gnu.org/wiki/CppBuildStatus).  Additionally,
I have tested the merged trunk on: x86_64-unknown-linux-gnu,
mips64el-unknown-linux-gnu, powerpc64-unknown-linux-gnu,
i686-pc-linux-gnu, and ia64-unknown-linux-gnu.

ChangeLog
2012-08-14   Diego Novillo  <dnovillo@google.com>

	Merge from cxx-conversion branch.

	* Makefile.tpl (STAGE[+id+]_CXXFLAGS): Remove
	POSTSTAGE1_CONFIGURE_FLAGS.
	* Makefile.in: Regenerate.
	* configure.ac (ENABLE_BUILD_WITH_CXX): Remove.  Update all users.
	Force C++ when bootstrapping.
	* configure: Regenerate.


libcpp/ChangeLog
2012-08-14   Diego Novillo  <dnovillo@google.com>

	Merge from cxx-conversion branch.  Configury.

	* Makefile.in: Remove all handlers of ENABLE_BUILD_WITH_CXX.
	* configure.ac: Likewise.
	* configure: Regenerate.

2012-08-14   Lawrence Crowl  <crowl@google.com>

	Merge from cxx-conversion branch.  New C++ hash table.

	* include/symtab.h (typedef struct ht hash_table): Change the typedef
	name to cpp_hash_table.  Update all users of the typedef.

gcc/ChangeLog
2012-08-14   Diego Novillo  <dnovillo@google.com>

	Merge from cxx-conversion branch.  Configury.

	* configure.ac (CXX_FOR_BUILD): Define and substitute.
	(BUILD_CXXFLAGS): Define.
	Remove all handlers of ENABLE_BUILD_WITH_CXX.
	Force all build to be with C++.
	* Makefile.in (BUILD_CXXFLAGS): Use it.
	Remove all handlers of ENABLE_BUILD_WITH_CXX.
	* configure: Regenerate.
	* config.in: Regenerate.
	* doc/install.texi: Remove documentation for --enable-build-with-cxx
	and --enable-build-poststage1-with-cxx.

2012-08-14   Diego Novillo  <dnovillo@google.com>

	Merge from cxx-conversion branch.  Re-implement VEC in C++.

	* vec.c (vec_heap_free): Convert into a template function.
	(vec_gc_o_reserve_1): Make extern.
	(vec_gc_p_reserve): Remove.
	(vec_gc_p_reserve_exact): Remove.
	(vec_gc_o_reserve): Remove.
	(vec_gc_o_reserve_exact): Remove.
	(vec_heap_o_reserve_1): Make extern.
	(vec_heap_p_reserve): Remove.
	(vec_heap_p_reserve_exact): Remove.
	(vec_heap_o_reserve): Remove.
	(vec_heap_o_reserve_exact): Remove.
	(vec_stack_p_reserve): Remove.
	(vec_stack_p_reserve_exact): Remove.
	* vec.h (VEC_CHECK_INFO, VEC_CHECK_DECL, VEC_CHECK_PASS,
	VEC_ASSERT, VEC_ASSERT_FAIL, vec_assert_fail): Move earlier
	in the file.
	(VEC): Define to vec_t<T>.
	(vec_allocation_t): Define.
	(struct vec_prefix): Move earlier in the file.
	(vec_t<T>): New template.
	(DEF_VEC_I, DEF_VECL_ALLOC_I, DEF_VEC_P, DEF_VEC_ALLOC_P,
	DEF_VEC_O, DEF_VEC_ALLOC_P, DEF_VEC_O, DEF_VEC_ALLOC_O,
	DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_O_STACK,
	DEF_VEC_ALLOC_I_STACK): Expand to 'struct vec_swallow_trailing_semi'.
	(DEF_VEC_A): Provide template instantiations for
	GC/PCH markers that do not traverse the vector.
	(vec_stack_p_reserve): Remove.
	(vec_stack_p_reserve_exact): Remove.
	(vec_stack_p_reserve_exact_1): Remove.
	(vec_stack_o_reserve): Remove.
	(vec_stack_o_reserve_exact): Remove.
	(vec_stack_free): Re-write as a template function.
	(vec_reserve): New template function.
	(vec_reserve_exact): New template function.
	(vec_heap_free): New template function if GATHER_STATISTICS is
	defined.  Otherwise, macro that expands to free().
	(VEC_length_1): New template function.
	(VEC_length): Call it.
	(VEC_empty_1): New template function.
	(VEC_empty): Call it.
	(VEC_address_1): New template function.
	(VEC_address): Call it.
	(VEC_last_1): New template function.
	(VEC_last): Call it.  Change return type to T&.
	Change all users that used VEC_Os.
	(VEC_index_1): New template function.
	(VEC_index): Call it.  Return a T& instead of a T*.
	Update all callers that were using VEC_O before.
	(VEC_iterate_1): New template function.
	(VEC_iterate): Call it.
	(VEC_embedded_size_1): New template function.
	(VEC_embedded_size): Call it.
	(VEC_embedded_init_1): New template function.
	(VEC_embedded_init): Call it.
	(VEC_alloc_1): New template function.
	(VEC_alloc): Call it.  If A is 'stack', call XALLOCAVAR to
	do the allocation.
	(VEC_free_1): New template function.
	(VEC_free): Call it.
	(VEC_copy_1): New template function.
	(VEC_copy): Call it.
	(VEC_space_1): New template function
	(VEC_space): Call it.
	(VEC_reserve_1): New template function.
	(VEC_reserve): Call it.
	(VEC_reserve_exact_1): New template function.
	(VEC_reserve_exact): Call it.
	(VEC_splice_1): New template function.
	(VEC_splice): Call it.
	(VEC_safe_splice_1): New template function.
	(VEC_safe_splice): Call it.
	(VEC_quick_push_1): New template function.  Create two overloads, one
	accepting T, the other accepting T *.  Update all callers
	where T and T * are ambiguous.
	(VEC_quick_push): Call it.
	(VEC_safe_push_1): New template function. Create two overloads, one
	accepting T, the other accepting T *.  Update all callers
	where T and T * are ambiguous.
	(VEC_safe_push): Call it.
	(VEC_pop_1): New template function.
	(VEC_pop): Call it.
	(VEC_truncate_1): New template function.
	(VEC_truncate): Call it.
	(VEC_safe_grow_1): New template function.
	(VEC_safe_grow): Call it.
	(VEC_safe_grow_cleared_1): New template function.
	(VEC_safe_grow_cleared): Call it.
	(VEC_replace_1): New template function.
	(VEC_replace): Call it.  Always accept T instead of T*.
	Update all callers that used VEC_Os.
	(VEC_quick_insert_1): New template function.
	(VEC_quick_insert): Call it.
	(VEC_safe_insert_1): New template function.
	(VEC_safe_insert): Call it.
	(VEC_ordered_remove_1): New template function.
	(VEC_ordered_remove): Call it.
	(VEC_unordered_remove_1): New template function.
	(VEC_unordered_remove): Call it.
	(VEC_block_remove_1): New template function.
	(VEC_block_remove): Call it.
	(VEC_lower_bound_1): New template function.
	(VEC_lower_bound): Call it.
	(VEC_OP): Remove.
	(DEF_VEC_FUNC_P): Remove.
	(DEF_VEC_ALLOC_FUNC_P): Remove.
	(DEF_VEC_NONALLOC_FUNCS_P): Remove.
	(DEF_VEC_FUNC_O): Remove.
	(DEF_VEC_ALLOC_FUNC_O): Remove.
	(DEF_VEC_NONALLOC_FUNCS_O): Remove.
	(DEF_VEC_ALLOC_FUNC_I): Remove.
	(DEF_VEC_NONALLOC_FUNCS_I): Remove.
	(DEF_VEC_ALLOC_FUNC_P_STACK): Remove.
	(DEF_VEC_ALLOC_FUNC_O_STACK): Remove.
	(DEF_VEC_ALLOC_FUNC_I_STACK): Remove.
	(vec_reserve_exact): New template function.

	* gengtype-lex.l (DEF_VEC_ALLOC_[IOP]/{EOID}): Remove.
	* gengtype-parse.c (token_names): Remove DEF_VEC_ALLOC_[IOP].
	(typedef_name): Emit vec_t<C1> instead of VEC_C1_C2.
	(def_vec_alloc): Remove.  Update all callers.
	* gengtype.c (filter_type_name): New.
	(output_mangled_typename): Call it.
	(write_func_for_structure): Likewise.
	(write_types): Likewise.
	(write_root): Likewise.
	(write_typed_alloc_def): Likewise.
	(note_def_vec): Emit vec_t<TYPE_NAME> instead of VEC_TYPE_NAME_base.
	(note_def_vec_alloc): Remove.
	* gengtype.h (note_def_vec_alloc): Remove.
	(DEFVEC_ALLOC): Remove token code.

	* df-scan.c (df_bb_verify): Remove call to df_free_collection_rec
	inside the insn traversal loop.
	* gimplify.c (gimplify_compound_lval): Rename STACK to EXPR_STACK.
	* ipa-inline.c (inline_small_functions): Rename HEAP to EDGE_HEAP.
	* reg-stack.c (stack): Rename to STACK_PTR.  Update all users.
	* tree-vrp.c (stack): Rename to EQUIV_STACK.  Update all users.

	* config/bfin/bfin.c (hwloop_optimize): Update some calls to
	VEC_* for vectors of non-pointers.
	* config/c6x/c6x.c (try_rename_operands): Likewise.
	(reshuffle_units): Likewise.
	* config/mips/mips.c (mips_multi_start): Likewise.
	(mips_multi_add): Likewise.
	(mips_multi_copy_insn): Likewise.
	(mips_multi_set_operand): Likewise.
	* hw-doloop.c (discover_loop): Likewise.
	(discover_loops): Likewise.
	(reorg_loops): Likewise.

2012-08-14   Diego Novillo  <dnovillo@google.com>

	Merge from cxx-conversion branch.  C++ support in gengtype.

	* coretypes.h (gt_pointer_operator): Move from ...
	* ggc.h: ... here.
	* doc/gty.texi: Document support for C++ templates and
	user-provided markers.
	* gcc/gengtype-lex.l: Update copyright year.
	Remove support for recognizing DEF_VEC_O, DEF_VEC_P and
	DEFVEC_I.
	* gengtype-parse.c: Update copyright year.
	(token_names): Remove DEF_VEC_O, DEF_VEC_P and DEF_VEC_I.
	(require_template_declaration): New.
	(typedef_name): Call it.
	(type): Replace IS_UNION with KIND. Replace all users.
	(def_vec): Remove.  Update all users.
	* gengtype-state.c (type_lineloc): Handle TYPE_USER_STRUCT.
	(write_state_user_struct_type): New.
	(write_state_type): Call it.
	(read_state_user_struct_type): New.
	(read_state_type): Call it.
	* gengtype.c: Update copyright year.
	(dump_pair): Move declaration to the top.
	(dump_type): Likewise.
	(dump_type_list): Likewise.
	(dbgprint_count_type_at): Handle TYPE_USER_STRUCT.
	(create_user_defined_type): New.
	(resolve_typedef): Call it.
	(new_structure): Replace argument ISUNION with KIND.
	Change users to refer to KIND directly.
	Update all callers.
	(find_structure): Likewise.
	(set_gc_used_type): Handle TYPE_USER_STRUCT.
	(create_file): Update HDR to include new copyright year.
	(struct walk_type_data): Add field IN_PTR_FIELD.
	(output_mangled_typename): Handle TYPE_USER_STRUCT.
	(walk_type): Set D->IN_PTR_FIELD when walking a TYPE_POINTER.
	Clear it afterwards.
	Handle TYPE_USER_STRUCT.
	(write_types_process_field): Handle TYPE_USER_STRUCT.
	(get_type_specifier): Move earlier in the file.
	(write_type_decl): New.
	(write_marker_function_name): New.
	(write_user_func_for_structure_ptr): New.
	(write_user_func_for_structure_body): New.
	(write_user_marking_functions): New.
	(write_func_for_structure): Call write_marker_function_name
	and write_type_decl.
	Do not call walk_type for TYPE_USER_STRUCT. Emit a call to the user
	function directly.
	Call write_user_marking_functions on TYPE_USER_STRUCTs.
	(write_types_local_user_process_field): New.
	(write_pch_user_walking_for_structure_body): New.
	(write_pch_user_walking_functions): New.
	(write_types_local_process_field): Handle TYPE_USER_STRUCT.
	(write_local_func_for_structure): Do not call walk_type for
	TYPE_USER_STRUCT. Instead, emit the call to gt_pch_nx directly.
	Call write_pch_user_walking_functions for TYPE_USER_STRUCTs.
	(write_root): Handle TYPE_USER_STRUCT.
	(vec_prefix_type): Remove.  Update all users.
	(note_def_vec): Remove.  Update all users.
	(dump_typekind): Handle TYPE_USER_STRUCT.
	(dump_type): Initialize SEEN_TYPES, if needed.
	Handle TYPE_USER_STRUCT.
	(dump_everything): Do not initialize SEEN_TYPES.
	* gengtype.h: Update copyright year.
	(enum typekind): Add TYPE_USER_STRUCT.
	(union_or_struct_p): Rename from UNION_OR_STRUCT_P.
	Convert into function.
	Add an overload taking const_type_p.
	Update all callers.
	(new_structure): Change second field to type enum typekind.
	Update all users.
	(find_structure): Likewise.
	(note_def_vec): Remove.
	(DEFVEC_OP): Remove.
	(DEFVEC_I): Remove.
	* ggc-page.c (gt_ggc_mx): Add entry points for marking
	'const char *&', 'unsigned char *&' and 'unsigned char&'.
	* ggc-zone.c (gt_ggc_mx): Add entry points for marking
	'const char *&' and 'unsigned char *&'.
	* stringpool.c (gt_pch_nx): Add entry points for marking
	'const char *&', 'unsigned char *&' and 'unsigned char&'.
	Add an entry point for the overload taking arguments 'unsigned char
	*', 'gt_pointer_operator' and 'void *'.
	* vec.h (struct vec_prefix): Remove GTY marker.
	(struct vec_t): Remove GTY((length)) attribute from field 'vec'.
	(gt_ggc_mx (vec_t<T> *)): New template function.
	(gt_pch_nx (vec_t<T> *)): New template function.
	(gt_pch_nx (vec_t<T *> *, gt_pointer_operator, void *)): New template
	function.
	(gt_pch_nx (vec_t<T> *, gt_pointer_operator, void *)): New template
	function.

	* basic-block.h (struct edge_def): Mark GTY((user)).
	Remove all GTY markers from fields.
	(gt_ggc_mx): Declare.
	(gt_pch_nx): Declare.
	* tree-cfg.c (gt_ggc_mx): New.
	(gt_pch_nx): New.

	* gengtype-lex.l (USER_GTY): Add pattern for "user".
	* gengtype-parse.c (option): Handle USER_GTY.
	(opts_have): New.
	(type): Call it.
	If the keyword 'user' is used, do not walk the fields
	of the structure.
	* gengtype.h (USER_GTY): Add.
	* doc/gty.texi: Update.

2012-08-14   Lawrence Crowl  <crowl@google.com>

	Merge cxx-conversion branch.  Implement C++ hash table.

	* hash-table.h: New. Implementation borrowed from libiberty/hashtab.c.
	* hash-table.c: Likewise.
	* tree-ssa-tail-merge.c: Include hash-table.h instead of hashtab.h.
	(static htab_t same_succ_htab): Change type to hash_table;
	move specification of helper functions from create call to declaration.
	Change users to invoke member functions.
	(same_succ_print_traverse): Make extern ssa_.... Change callers.
	Remove void* casting.
	(same_succ_hash): Likewise.
	(same_succ_equal): Likewise.
	(same_succ_delete): Likewise.
	* tree-ssa-threadupdate.c: Include hash-table.h.
	(struct local_info): Rename to ssa_local_info_t to avoid overloading
	the type name local_info with the variable name local_info.
	(static htab_t redirection_data): Change type to hash_table.
	Move specification of helper functions from create call to declaration.
	Change users to invoke member functions.
	(redirection_data_hash): Make extern ssa_.... Change callers.
	Remove void* casting.
	(redirection_data_eq): Likewise.
	(fix_duplicate_block_edges): Likewise.
	(create_duplicates): Likewise.
	(fixup_template_block): Likewise.
	(redirect_edges): Likewise.
	(lookup_redirection_data): Change types associated with the hash table
	from void* to their actual type. Remove unnecessary casts.
	* tree-ssa-ccp.c: Include hash-table.h.
	(typedef gimple_htab): New.  Uses hash_table.  Replace specific uses
	of htab_t with gimple_htab.  Change users to invoke member functions.
	Move specification of helper functions from create call to declaration.
	* tree-ssa-coalesce.c: Include hash-table.h instead of hashtab.h.
	(hash_ssa_name_by_var): Make extern. Remove void* casting.
	(eq_ssa_name_by_var): Likewise.
	(coalesce_ssa_name): Change type of local static htab_t ssa_name_hash
	to hash_table. Change users to invoke member functions.
	Move specification of helper functions from create call to declaration.
	* coverage.c: Include hash-table.h instead of hashtab.h.
	(static htab_t counts_hash): Change type to hash_table;
	move specification of helper functions from create call to declaration.
	Change users to invoke member functions.
	(htab_counts_entry_hash): Make extern. Rename with coverage_... instead
	of htab_... Remove void* casting.
	(htab_counts_entry_eq): Likewise.
	(htab_counts_entry_del): Likewise.
	* tree-ssa-pre.c: Include hash-table.h instead of hashtab.h.
	(static htab_t expression_to_id): Change type to hash_table.
	Move specification of helper functions from create call to declaration.
	Change users to invoke member functions.
	(static htab_t phi_translate_table): Likewise.
	(pre_expr_eq): Make extern ssa_.... Change callers.
	Remove void* casting.
	(pre_expr_hash): Likewise.
	(expr_pred_trans_hash): Likewise.
	(expr_pred_trans_eq): Likewise.
	(alloc_expression_id): Change types associated with the hash table
	from void* to their actual type. Remove unnecessary casts.
	(lookup_expression_id): Likewise.
	(phi_trans_lookup): Likewise.
	(phi_trans_add): Likewise.
	* stringpool.c: Rename uses of libcpp typedef hash_table to
	cpp_hash_table.
	* Makefile.in: Add hash-table.o to OBJS-libcommon-target.
	Add $(HASH_TABLE_H). Add new dependences on $(HASH_TABLE_H).

2012-08-14   Lawrence Crowl  <crowl@google.com>

	Merge from cxx-conversion branch.  Re-write double_int in C++.

	* hash-table.h
	(typedef double_int): Change to struct (POD).
	(double_int::make): New overloads for int to double-int conversion.
	(double_int::mask): New.
	(double_int::max_value): New.
	(double_int::min_value): New.
	(double_int::operator ++): New.
	(double_int::operator --): New.
	(double_int::operator *=): New.
	(double_int::operator +=): New.
	(double_int::operator -=): New.
	(double_int::to_signed): New.
	(double_int::to_unsigned): New.
	(double_int::fits_unsigned): New.
	(double_int::fits_signed): New.
	(double_int::fits): New.
	(double_int::trailing_zeros): New.
	(double_int::popcount): New.
	(double_int::multiple_of): New.
	(double_int::set_bit): New.
	(double_int::mul_with_sign): New.
	(double_int::operator * (binary)): New.
	(double_int::operator + (binary)): New.
	(double_int::operator - (binary)): New.
	(double_int::operator - (unary)): New.
	(double_int::operator ~ (unary)): New.
	(double_int::operator & (binary)): New.
	(double_int::operator | (binary)): New.
	(double_int::operator ^ (binary)): New.
	(double_int::and_not): New.
	(double_int::lshift): New.
	(double_int::rshift): New.
	(double_int::alshift): New.
	(double_int::arshift): New.
	(double_int::llshift): New.
	(double_int::lrshift): New.
	(double_int::lrotate): New.
	(double_int::rrotate): New.
	(double_int::div): New.
	(double_int::sdiv): New.
	(double_int::udiv): New.
	(double_int::mod): New.
	(double_int::smod): New.
	(double_int::umod): New.
	(double_int::divmod): New.
	(double_int::sdivmod): New.
	(double_int::udivmod): New.
	(double_int::ext): New.
	(double_int::zext): New.
	(double_int::sext): New.
	(double_int::is_zero): New.
	(double_int::is_one): New.
	(double_int::is_minus_one): New.
	(double_int::is_negative): New.
	(double_int::cmp): New.
	(double_int::ucmp): New.
	(double_int::scmp): New.
	(double_int::ult): New.
	(double_int::ugt): New.
	(double_int::slt): New.
	(double_int::sgt): New.
	(double_int::max): New.
	(double_int::smax): New.
	(double_int::umax): New.
	(double_int::min): New.
	(double_int::smin): New.
	(double_int::umin): New.
	(double_int::operator ==): New.
	(double_int::operator !=): New.
	(shwi_to_double_int): Change implementation to use member function.
	(double_int_minus_one): Likewise.
	(double_int_zero): Likewise.
	(double_int_one): Likewise.
	(double_int_two): Likewise.
	(double_int_ten): Likewise.
	(uhwi_to_double_int): Likewise.
	(double_int_to_shwi): Likewise.
	(double_int_to_uhwi): Likewise.
	(double_int_fits_in_uhwi_p): Likewise.
	(double_int_fits_in_shwi_p): Likewise.
	(double_int_fits_in_hwi_p): Likewise.
	(double_int_mul): Likewise.
	(double_int_mul_with_sign): Likewise.
	(double_int_add): Likewise.
	(double_int_sub): Likewise.
	(double_int_neg): Likewise.
	(double_int_div): Likewise.
	(double_int_sdiv): Likewise.
	(double_int_udiv): Likewise.
	(double_int_mod): Likewise.
	(double_int_smod): Likewise.
	(double_int_umod): Likewise.
	(double_int_divmod): Likewise.
	(double_int_sdivmod): Likewise.
	(double_int_udivmod): Likewise.
	(double_int_multiple_of): Likewise.
	(double_int_setbit): Likewise.
	(double_int_ctz): Likewise.
	(double_int_not): Likewise.
	(double_int_ior): Likewise.
	(double_int_and): Likewise.
	(double_int_and_not): Likewise.
	(double_int_xor): Likewise.
	(double_int_lshift): Likewise.
	(double_int_rshift): Likewise.
	(double_int_lrotate): Likewise.
	(double_int_rrotate): Likewise.
	(double_int_cmp): Likewise.
	(double_int_scmp): Likewise.
	(double_int_ucmp): Likewise.
	(double_int_max): Likewise.
	(double_int_smax): Likewise.
	(double_int_umax): Likewise.
	(double_int_min): Likewise.
	(double_int_smin): Likewise.
	(double_int_umin): Likewise.
	(double_int_ext): Likewise.
	(double_int_sext): Likewise.
	(double_int_zext): Likewise.
	(double_int_mask): Likewise.
	(double_int_max_value): Likewise.
	(double_int_min_value): Likewise.
	(double_int_zero_p): Likewise.
	(double_int_one_p): Likewise.
	(double_int_minus_one_p): Likewise.
	(double_int_equal_p): Likewise.
	(double_int_popcount): Likewise.
	* hash-table.c
	(double_int_mask): Reuse implementation for double_int::mask.
	(double_int_max_value): Likewise.
	(double_int_min_value): Likewise.
	(double_int_ext): Likewise.
	(double_int_zext): Likewise.
	(double_int_sext): Likewise.
	(double_int_mul_with_sign): Likewise.
	(double_int_divmod): Likewise.
	(double_int_sdivmod): Likewise.
	(double_int_udivmod): Likewise.
	(double_int_div): Likewise.
	(double_int_sdiv): Likewise.
	(double_int_udiv): Likewise.
	(double_int_mod): Likewise.
	(double_int_smod): Likewise.
	(double_int_umod): Likewise.
	(double_int_multiple_of): Likewise.
	(double_int_lshift): Likewise.
	(double_int_rshift): Likewise.
	(double_int_lrotate): Likewise.
	(double_int_rrotate): Likewise.
	(double_int_cmp): Likewise.
	(double_int_ucmp): Likewise.
	(double_int_scmp): Likewise.
	(double_int_max): Likewise.
	(double_int_smax): Likewise.
	(double_int_umax): Likewise.
	(double_int_min): Likewise.
	(double_int_smin): Likewise.
	(double_int_umin): Likewise.
	(double_int_min): Likewise.
	(double_int_min): Likewise.
	(double_int_min): Likewise.
	(double_int_min): Likewise.
	(double_int_min): Likewise.
	(double_int_min): Likewise.
	(double_int::alshift): New.
	(double_int::arshift): New.
	(double_int::llshift): New.
	(double_int::lrshift): New.
	(double_int::ult): New.
	(double_int::ugt): New.
	(double_int::slt): New.
	(double_int::sgt): New.
	(double_int_setbit): Reuse implementation for double_int::set_bit,
	which avoids a name conflict with a macro.
	(double_int_double_int_ctz): Reuse implementation for
	double_int::trailing_zeros.
	(double_int_fits_in_shwi_p): Reuse implementation for
	double_int::fits_signed.
	(double_int_fits_in_hwi_p): Reuse implementation for double_int::fits.
	(double_int_mul): Reuse implementation for binary
	double_int::operator *.
	(double_int_add): Likewise.
	(double_int_sub): Likewise.
	(double_int_neg): Reuse implementation for unary
	double_int::operator -.
	(double_int_max_value): Likewise.
	* fixed-value.c: Change to use member functions introduced above.

2012-08-14   Lawrence Crowl  <crowl@google.com>

	Merge cxx-conversion branch.  Support tree macro calling
	from gdb.

	* tree.h (tree_check): New.
	(TREE_CHECK): Use inline function above instead of __extension__.
	(tree_not_check): New.
	(TREE_NOT_CHECK): Use inline function above instead of __extension__.
	(tree_check2): New.
	(TREE_CHECK2): Use inline function above instead of __extension__.
	(tree_not_check2): New.
	(TREE_NOT_CHECK2): Use inline function above instead of __extension__.
	(tree_check3): New.
	(TREE_CHECK3): Use inline function above instead of __extension__.
	(tree_not_check3): New.
	(TREE_NOT_CHECK3): Use inline function above instead of __extension__.
	(tree_check4): New.
	(TREE_CHECK4): Use inline function above instead of __extension__.
	(tree_not_check4): New.
	(TREE_NOT_CHECK4): Use inline function above instead of __extension__.
	(tree_check5): New.
	(TREE_CHECK5): Use inline function above instead of __extension__.
	(tree_not_check5): New.
	(TREE_NOT_CHECK5): Use inline function above instead of __extension__.
	(contains_struct_check): New.
	(CONTAINS_STRUCT_CHECK): Use inline function above instead of
	__extension__.
	(tree_class_check): New.
	(TREE_CLASS_CHECK): Use inline function above instead of __extension__.
	(tree_range_check): New.
	(TREE_RANGE_CHECK): Use inline function above instead of __extension__.
	(omp_clause_subcode_check): New.
	(OMP_CLAUSE_SUBCODE_CHECK): Use inline function above instead of
	__extension__.
	(omp_clause_range_check): New.
	(OMP_CLAUSE_RANGE_CHECK): Use inline function above instead of
	__extension__.
	(expr_check): New.
	(EXPR_CHECK): Use inline function above instead of __extension__.
	(non_type_check): New.
	(NON_TYPE_CHECK): Use inline function above instead of __extension__.
	(tree_vec_elt_check): New.
	(TREE_VEC_ELT_CHECK): Use inline function above instead of
	__extension__.
	(omp_clause_elt_check): New.
	(OMP_CLAUSE_ELT_CHECK): Use inline function above instead of
	__extension__.
	(tree_operand_check): New.
	(TREE_OPERAND_CHECK): Use inline function above instead of
	__extension__.
	(tree_operand_check_code): New.
	(TREE_OPERAND_CHECK_CODE): Use inline function above instead of
	__extension__.
	(TREE_CHAIN): Simplify implementation.
	(TREE_TYPE): Simplify implementation.
	(tree_operand_length): Move for compilation dependences.
	* gdbinit.in: (macro define __FILE__): New.
	(macro define __LINE__): New.
	(skip "tree.h"): New.

gcc/cp/ChangeLog
2012-08-14   Diego Novillo  <dnovillo@google.com>

	Merge from cxx-conversion branch.  Re-write VEC in C++.

	* call.c (add_function_candidate): Remove const qualifier
	from call to VEC_index.

2012-08-14   Diego Novillo  <dnovillo@google.com>

	Merge from cxx-conversion branch.  Configury.

	* go-c.h: Remove all handlers of ENABLE_BUILD_WITH_CXX.
	* go-gcc.cc: Likewise.
	* go-system.h: Likewise.

From-SVN: r190402
2012-08-14 21:56:07 -04:00
Arnaud Charlet
678400b358 [multiple changes]
2012-07-23  Tristan Gingold  <gingold@adacore.com>
        
	* gcc-interface/trans.c (Handled_Sequence_Of_Statements_to_gnu): Use    
	End_Label sloc when possible for sloc of the TRY_CATCH_EXPR node.    

2012-07-23  Olivier Hainque  <hainque@adacore.com>

	* gcc-interface/Makefile.in: Adjust processing of Linker_Options for
	VxWorks.
	* gcc-interface/Make-lang.in: Update dependencies.

From-SVN: r189777
2012-07-23 10:41:08 +02:00
Tristan Gingold
63ed669feb trans.c: (Handled_Sequence_Of_Statements_to_gnu): Set location on TRY_CATCH_EXPR.
2012-07-23  Tristan Gingold  <gingold@adacore.com>

	* gcc-interface/trans.c: (Handled_Sequence_Of_Statements_to_gnu): Set   
	location on TRY_CATCH_EXPR.

From-SVN: r189769
2012-07-23 09:26:41 +02:00
Eric Botcazou
a712b009c5 trans.c (stmt_group_may_fallthru): New function.
* gcc-interface/trans.c (stmt_group_may_fallthru): New function.
	(gnat_to_gnu) <N_Block_Statement>: Use it to find out whether the
	block needs to be translated.

From-SVN: r189612
2012-07-18 12:20:06 +00:00
Eric Botcazou
b83053bf42 trans.c (Call_to_gnu): Robustify test for function case if the CICO mechanism is used.
* gcc-interface/trans.c (Call_to_gnu): Robustify test for function case
	if the CICO mechanism is used.

From-SVN: r189204
2012-07-03 09:06:08 +00:00
Eric Botcazou
28dd005525 exp_disp.adb (Expand_Dispatching_Call): Propagate the convention on the designated subprogram type and also set...
* exp_disp.adb (Expand_Dispatching_Call): Propagate the convention on
	the designated subprogram type and also set Is_Dispatch_Table_Entity.
	(Expand_Interface_Thunk): Propagate the convention on the thunk.
	(Set_CPP_Constructors_Old): Set Is_Constructor and Convention_CPP on
	the internal view of the constructors.
	(Set_CPP_Constructors): Likewise.
	* sem_prag.adb (Analyze_Pragma) <Pragma_CPP_Constructor>: Set the
	convention on the function.
	* gcc-interface/gigi.h (is_cplusplus_method): Declare.
	* gcc-interface/decl.c (Has_Thiscall_Convention): New macro.
	(gnat_to_gnu_entity) <E_Subprogram_Type>: Test it to set the `thiscall'
	calling convention
	(get_minimal_subprog_decl): Likewise.
	(is_cplusplus_method): New predicate.
	* gcc-interface/trans.c (Attribute_to_gnu) <Attr_Access>: Issue an
	error on access to C++ constructor or member function.

From-SVN: r189199
2012-07-03 08:28:34 +00:00
Steven Bosscher
a8781821e0 target.def (output_ident): New hook.
gcc/
	* target.def (output_ident): New hook.
	* targhooks.h (default_asm_output_ident_directive): Add prototype.
	* varasm.c (assemble_asm): Only prefix a tab if the string does not
	already start with one.
	(default_asm_output_ident_directive): New function to emit
	.ident as a top-level asm node while parsing, or directly to
	asm_out_file after parsing.
	* toplev.c (compile_file): Print a GCC .ident with
	targetm.asm_out.output_ident.
	* doc/tm.texi.in (ASM_OUTPUT_IDENT): Remove documentation for macro.
	(TARGET_ASM_OUTPUT_IDENT): Add @hook for this.
	* doc/tm.texi: Update.

	* config/elfos.h (ASM_OUTPUT_IDENT, IDENT_ASM_OP): Remove.
	(TARGET_ASM_OUTPUT_IDENT): Define.
	* config/i386/djgpp.h (IDENT_ASM_OP): Remove.
	* config/i386/gas.h (ASM_OUTPUT_IDENT): Remove.
	* config/arm/aout.h (ASM_OUTPUT_IDENT): Remove.
	* config/sparc/sparc.h (IDENT_ASM_OP): Remove.
	(TARGET_ASM_OUTPUT_IDENT): Define.
	* config/picochip/picochip.h (IDENT_ASM_OP): Remove.
	(TARGET_ASM_OUTPUT_IDENT): Define.

	* config/cris/cris-protos.h (cris_asm_output_ident): Add prototype.
	* config/cris/cris.c (cris_asm_output_ident): New function.
	* config/cris/cris.h (ASM_OUTPUT_IDENT, IDENT_ASM_OP): Remove.

	* config/microblaze/microblaze-protos.h (microblaze_asm_output_ident):
	Add prototype.
	* config/microblaze/microblaze.c: Include cgraph.h for add_asm_node.
	(microblaze_asm_output_ident): Rewrite to work similar to
	default_asm_output_ident_directive for front-end .idents.
	* config/microblaze/microblaze.h (ASM_OUTPUT_IDENT): Remove.
	(TARGET_ASM_OUTPUT_IDENT): Define.

	* config/mips/mips.h (ASM_OUTPUT_IDENT): Remove.
	* config/mips/sde.h (IDENT_ASM_OP, ASM_OUTPUT_IDENT): Remove.

	* config/rx/rx.c: Include cgraph.h for add_asm_node.
	(rx_asm_output_ident): New function, similar to
	default_asm_output_ident_directive, but handle AS100 syntax also, so
	that #ident also works for rx in AS100 syntax.
	(TARGET_ASM_OUTPUT_IDENT): Define.
	* config/rx/rx.h (IDENT_ASM_OP): Remove.

	* Makefile.in: Fix dependencies for c-family/c-lex.o.

c-family/
	* c-lex.c: Do not include output.h.
	(cb_ident): Try to put out .ident with targetm.asm_out.output_ident.
	Remove uses of ASM_OUTPUT_IDENT.

ada/
	* gcc-interface/trans.c: Include target.h.
	(gigi): Try to put out .ident with targetm.asm_out.output_ident.
	Remove uses of ASM_OUTPUT_IDENT.
	* gcc-interface/Make-lang.in: Fix dependencies.

From-SVN: r188791
2012-06-19 19:55:33 +00:00
Eric Botcazou
f71d5704ba re PR ada/53592 (ICE on assignment to component of vector_type)
PR ada/53592
	* gcc-interface/gigi.h (maybe_vector_array): Make static inline.
	* gcc-interface/utils.c (maybe_vector_array): Delete.
	* gcc-interface/trans.c (gnat_to_gnu) <N_Indexed_Component>: Mark the
	array object as addressable if it has vector type and is on the LHS.

From-SVN: r188653
2012-06-15 10:41:13 +00:00
Eric Botcazou
e4270465dd trans.c (Identifier_to_gnu): Test Is_Elementary_Type instead of Is_Scalar_Type for a constant with an...
* gcc-interface/trans.c (Identifier_to_gnu): Test Is_Elementary_Type
	instead of Is_Scalar_Type for a constant with an address clause.
	Do not return the underlying constant for a constant used by reference
	if it holds the address of a constant and an lvalue is required.

From-SVN: r188380
2012-06-11 08:54:32 +00:00
Tristan Gingold
0c644c99db fe.h (Get_RT_Exception_Name): Define.
2012-05-15  Tristan Gingold  <gingold@adacore.com>

	* fe.h (Get_RT_Exception_Name): Define.
	* types.ads (RT_Exception_Code): Update comment.
	* exp_ch11.adb, exp_ch11.ads (Get_RT_Exception_Name): New
	procedure to get the name of the rcheck subprograms.
	* a-except-2005.adb (Rcheck_xx): Rename.
	* a-except.adb Likewise, but also keep the old Rcheck_nn routines
	for bootstrap.
	* arith64.c (__gnat_mulv64): Use __gnat_rcheck_CE_Overflow_Check
	instead of __gnat_rcheck_10.
	* gcc-interface/trans.c (build_raise_check): Use Get_RT_Exception_Name
	to create the __gnat_rcheck routines name.
	* gcc-interface/Make-lang.in: Update dependencies.

From-SVN: r187517
2012-05-15 12:17:26 +02:00
Tristan Gingold
630dfc9c51 * gcc-interface/trans.c (gigi): Decorate reraise_zcx_decl.
From-SVN: r187210
2012-05-06 11:28:20 +00:00
Eric Botcazou
8009661301 trans.c (Loop_Statement_to_gnu): Also handle invariant conditions with only one bound.
* gcc-interface/trans.c (Loop_Statement_to_gnu): Also handle invariant
	conditions with only one bound.
	(Raise_Error_to_gnu): Likewise.  New function extracted from...
	(gnat_to_gnu) <N_Raise_Constraint_Error>: ...here.  Call above function
	in regular mode only.

From-SVN: r187208
2012-05-06 10:51:37 +00:00
Eric Botcazou
842d4ee2ad gigi.h (make_packable_type): Declare.
* gcc-interface/gigi.h (make_packable_type): Declare.
	(make_type_from_size): Likewise.
	(relate_alias_sets): Likewise.
	(maybe_pad_type): Adjust.
	(init_gnat_to_gnu): Delete.
	(destroy_gnat_to_gnu): Likewise.
	(init_dummy_type): Likewise.
	(destroy_dummy_type): Likewise.
	(init_gnat_utils): Declare.
	(destroy_gnat_utils): Likewise.
	(ceil_pow2): New inline function.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Use ceil_pow2.
	<object>: Pass True for the final processing of alignment and size.
	<E_Subprogram_Type>: Only create the TYPE_DECL for a padded return
	type if necessary.
	(round_up_to_align): Delete.
	(ceil_alignment): Likewise.
	(relate_alias_sets): Move to...
	(make_aligning_type): Likewise.
	(make_packable_type): Likewise.
	(maybe_pad_type): Likewise.
	(make_type_from_size): Likewise.
	* gcc-interface/utils.c (MAX_BITS_PER_WORD): Delete.
	(struct pad_type_hash): New type.
	(pad_type_hash_table): New static variable.
	(init_gnat_to_gnu): Merge into...
	(init_dummy_type): Likewise.
	(init_gnat_utils): ...this.  New function.
	(destroy_gnat_to_gnu): Merge into...
	(destroy_dummy_type): Likewise.
	(destroy_gnat_utils): ...this.  New function.
	(pad_type_hash_marked_p): New function.
	(pad_type_hash_hash): Likewise.
	(pad_type_hash_eq): Likewise.
	(relate_alias_sets): ...here.
	(make_aligning_type): Likewise.
	(make_packable_type): Likewise.
	(maybe_pad_type): Likewise.  Change same_rm_size parameter into
	set_rm_size; do not set TYPE_ADA_SIZE if it is false.  Do not set
	null as Ada size.  Do not set TYPE_VOLATILE on the padded type.  If it
	is complete and has constant size, canonicalize it.  Bail out earlier
	if a warning need not be issued.
	(make_type_from_size): Likewise.
	<INTEGER_TYPE>: Bail out if size is too large
	(gnat_types_compatible_p): Do not deal with padded types.
	(convert): Compare main variants for padded types.
	* gcc-interface/trans.c (gigi): Call {init|destroy}_gnat_utils.
	(gnat_to_gnu): Do not convert at the end for a call to a function that
	returns an unconstrained type with default discriminant.
	(Attribute_to_gnu) <Attr_Size>: Simplify handling of padded objects.
	* gcc-interface/utils2.c (build_binary_op) <MODIFY_EXPR>: Likewise.
	Do not use the padded type if it is BLKmode and the inner type is
	non-BLKmode.

From-SVN: r187206
2012-05-06 10:41:03 +00:00
Eric Botcazou
f04b8d6927 gigi.h (mark_out_of_scope): Delete.
* gcc-interface/gigi.h (mark_out_of_scope): Delete.
	(destroy_gnat_to_gnu): Declare.
	(destroy_dummy_type): Likewise.
	* gcc-interface/decl.c (mark_out_of_scope): Delete.
	* gcc-interface/utils.c (destroy_gnat_to_gnu): New function.
	(destroy_dummy_type): Likewise.
	* gcc-interface/trans.c (gnat_validate_uc_list): New variable.
	(gigi): Call validate_unchecked_conversion on gnat_validate_uc_list
	after the translation is completed.  Call destroy_gnat_to_gnu and
	destroy_dummy_type at the end.
	(Subprogram_Body_to_gnu): Do not call mark_out_of_scope.
	(gnat_to_gnu) <N_Block_Statement>: Likewise.
	<N_Validate_Unchecked_Conversion>: Do not process the node, only push
	it onto gnat_validate_uc_list.
	(validate_unchecked_conversion): New function.

From-SVN: r186956
2012-04-30 07:50:07 +00:00
Jan Hubicka
960bfb6929 cgraph.h: Update copyrights;
* cgraph.h: Update copyrights;
	(symtab_node): Turn to union typedef.
	(symtab_node_base): New structure.
	(symtab_type): Add SYMTAB_SYMBOL tag.
	* cgraph.c: Update references to fields
	(cgraph_hash, assembler_name_hash): Turn into symtab_node.
	(cgraph_local_info): Remove lto_file_data
	and externally_visible.
	(cgraph_node): Remove decl; same_comdat_group list;
	aux; ref_list; order; address_taken; reachable_from_other_parittion,
	in_other_partition; resolution.
	(varpool_node): Remove decl; same_comdat_group;
	ref_list; lto_file_data; aux; order; resolution; externally_visible;
	used_from_other_partition; in_other_partition.
	(symtab_node_def); New union.
	(cgraph, varpool): Update.
	(varpool_first_static_initializer, varpool_next_static_initializer,
	cgraph_only_called_directly_or_aliased_p,
	varpool_can_remove_if_no_refs, varpool_can_remove_if_no_refs,
	varpool_all_refs_explicit_p, cgraph_alias_aliased_node,
	varpool_alias_aliased_node, cgraph_edge_recursive_p): Update
	field references.
	* cgraph.c: Likewise.
	* cgraphbuild.c: Likewise.
	* lto-symtab.c: Likewise.
	* c-gimplify.c: Likewise.
	* value-prof.c: Likewise.
	* tree.c: Likewise.
	* ipa-cp.c: Likewise.
	* tree-emutls.c: Likewise.
	* ipa-inline-transform.c: Likwise.
	* ipa-reference.c: Likewise.
	* cgraphunit.c: Likewise.
	* ipa-ref.c: Likewise.
	* lto-cgraph.c: Likewise.
	* ipa-ref-inline.h: Likewise.
	* ipa-pure-const.c: Likewise.
	* lto-streamer-out.c: Likewise.
	* ipa-utils.c: Likewise.
	* ipa-inline.c: Likewise.
	* matrix-reorg.c: Likewise.
	* tree-eh.c: Likewise.
	* tree-vectorizer.c: Likewise.
	* ipa-split.c: Likewise.
	* ipa.c: Likewise.
	* trans-mem.c: Likewise.
	* ipa-inline-analysis.c: Likewise.
	* gimplify.c: Likewise.
	* cfgexpand.c: Likewise.
	* tree-sra.c: Likewise.
	* ipa-prop.c: Likewise.
	* varasm.c: Likewise.
	* tree-nested.c: Likewise.
	* tree-inline.c: Likewise.
	* tree-profile.c: Likewise.
	* tree-ssa-structalias.c: Likewise.
	* passes.c: Likewise.
	* varpool.c: Likewise.

	* tree.c: Update field referenced for new cgraph/varpool layout.
	* decl2.c: Likewise.

	* gcc-interface/trans.c (finalize_nrv): Update field referenced for new
	cgraph/varpool layout.

	* lto.c: Update field referenced for new cgraph/varpool layout.
	* lto-partition.c: Likewise.

From-SVN: r186450
2012-04-14 10:24:59 +00:00
Eric Botcazou
2b45154d20 gigi.h (shift_unc_components_for_thin_pointers): Kill.
* gcc-interface/gigi.h (shift_unc_components_for_thin_pointers): Kill.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Type>: Remove call
	to above function.
	* gcc-interface/trans.c (Attribute_to_gnu) <Attr_Pool_Address>: Adjust
	handling of thin pointers.
	<Attr_Descriptor_Size>: Likewise.
	(gnat_to_gnu) <N_Free_Statement>: Likewise.
	* gcc-interface/utils.c (shift_unc_components_for_thin_pointers): Kill.
	(convert_to_fat_pointer): Adjust handling of thin pointers.
	(convert) <POINTER_TYPE>: Likewise.
	* gcc-interface/utils2.c (build_unary_op) <INDIRECT_REF>: Likewise.

From-SVN: r185268
2012-03-12 20:00:32 +00:00
Eric Botcazou
0d7de0e10b ada-tree.h (TYPE_VAX_FLOATING_POINT_P): Move around.
* gcc-interface/ada-tree.h (TYPE_VAX_FLOATING_POINT_P): Move around.
	(TYPE_UNCONSTRAINED_ARRAY): Adjust comment.
	* gcc-interface/trans.c (Attribute_to_gnu) <Attr_Pool_Address>: Tidy
	up.  Add comment and use canonical predicate for thin pointers.
	(gnat_to_gnu) <N_Free_Statement>: Tidy up and reorder.  Add comment
	and use canonical predicate for thin pointers.
	* gcc-interface/utils.c (convert_to_fat_pointer): Remove superfluous
	'else' and use standard name.
	(convert_to_thin_pointer): Delete.
	(convert) <POINTER_TYPE>: Do the difference in sizetype directly and
	change obsolete idioms.  Do not call above function.
	(unchecked_convert): Fix formatting.
	* gcc-interface/utils2.c (build_unary_op) <INDIRECT_REF>: In the thin
	pointer case, use byte_position to get the field position.

From-SVN: r185132
2012-03-09 09:28:02 +00:00
Eric Botcazou
6ba4f08f34 trans.c (Identifier_to_gnu): Don't unshare initializer.
* gcc-interface/trans.c (Identifier_to_gnu): Don't unshare initializer.
	(add_decl_expr): Mark external DECLs as used.
	* gcc-interface/utils.c (convert) <CONSTRUCTOR>: Copy the vector.

From-SVN: r185072
2012-03-07 18:55:59 +00:00
Eric Botcazou
a0b8b1b736 ada-tree.h (TYPE_PACKED_ARRAY_TYPE_P): Add checking.
* gcc-interface/ada-tree.h (TYPE_PACKED_ARRAY_TYPE_P): Add checking.
	(TYPE_BY_REFERENCE_P): New flag.
	(TYPE_IS_BY_REFERENCE_P): New macro.
	(TYPE_DUMMY_P): Add checking and remove VOID_TYPE.
	(TYPE_IS_DUMMY_P): Adjust for above change.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Use TYPE_BY_REFERENCE_P
	and TYPE_IS_BY_REFERENCE_P instead of TREE_ADDRESSABLE.
	(gnat_to_gnu_param): Likewise.
	(maybe_pad_type): Likewise.
	(make_type_from_size): Use TYPE_IS_PACKED_ARRAY_TYPE_P.
	* gcc-interface/misc.c (must_pass_by_ref): Use TYPE_IS_BY_REFERENCE_P
	instead of TREE_ADDRESSABLE.
	* gcc-interface/trans.c (finalize_nrv): Likewise.
	(call_to_gnu): Likewise.  Do not create a temporary for return values
	with by-reference type here.
	(gnat_to_gnu): Test TYPE_IS_DUMMY_P instead of TYPE_DUMMY_P.
	(gnat_gimplify_expr) <ADDR_EXPR>: Don't do anything for non-constant
	CONSTRUCTORs and calls.
	* gcc-interface/utils.c (make_dummy_type): Get the equivalent type of
	the underlying type and use it throughout.  Use TYPE_IS_BY_REFERENCE_P
	instead of TREE_ADDRESSABLE.
	* gcc-interface/utils2.c (build_cond_expr): Deal with by-reference
	types explicitly.

From-SVN: r184594
2012-02-27 10:41:10 +00:00
Eric Botcazou
1c4ae4e587 trans.c (Identifier_to_gnu): Move block retrieving the type of the result to the end and execute it for a...
* gcc-interface/trans.c (Identifier_to_gnu): Move block retrieving the
	type of the result to the end and execute it for a deferred constant of
	a discriminated type whose full view can be elaborated statically.

From-SVN: r184259
2012-02-15 08:50:11 +00:00
Eric Botcazou
0029bafd89 trans.c (gnat_to_gnu): If the type is tagged, mark it as used for debugging purposes.
* gcc-interface/trans.c (gnat_to_gnu) <N_Qualified_Expression>: If the
	type is tagged, mark it as used for debugging purposes.
	<N_Allocator>: Likewise for a qualified expression.

From-SVN: r184258
2012-02-15 08:39:04 +00:00
Eric Botcazou
4a582c9fda volatile10.adb: New case.
* gnat.dg/volatile10.adb: New case.
	* gnat.dg/volatile10_pkg.ads: New helper.

From-SVN: r184257
2012-02-15 08:31:21 +00:00
Tristan Gingold
337c6e076c trans.c (Loop_Statement_to_gnu): Use sizetype instead of size_type_node.
2012-02-01  Tristan Gingold  <gingold@adacore.com>

	* gcc-interface/trans.c (Loop_Statement_to_gnu): Use sizetype
	instead of size_type_node.

From-SVN: r183793
2012-02-01 09:52:28 +00:00
Eric Botcazou
16934bbf73 trans.c (gnat_to_gnu): Avoid making a SAVE_EXPR for a call to a function that returns an unconstrained...
* gcc-interface/trans.c (gnat_to_gnu): Avoid making a SAVE_EXPR for
	a call to a function that returns an unconstrained type with default
	discriminant.  Similarly, avoid doing the conversion to the nominal

From-SVN: r183610
2012-01-27 09:44:27 +00:00
Eric Botcazou
1228a6a69b gigi.h (get_minimal_subprog_decl): Declare.
* gcc-interface/gigi.h (get_minimal_subprog_decl): Declare.
	* gcc-interface/decl.c (get_minimal_subprog_decl): New function.
	* gcc-interface/trans.c (Attribute_to_gnu): Use it for the prefix of an
	Access-like attribute in a dispatch table if the subprogram is public.

From-SVN: r183607
2012-01-27 09:22:36 +00:00
Eric Botcazou
88a94e2bba gigi.h (create_label_decl): Adjust.
* gcc-interface/gigi.h (create_label_decl): Adjust.
	* gcc-interface/utils.c (create_label_decl): Add GNAT_NODE parameter
	and invoke gnat_pushdecl on it.  Remove obsolete settings.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Label>: Adjust call to
	create_label_decl.
	* gcc-interface/trans.c (gnat_to_gnu) <N_Null): Likewise.  Ignore the
	label for debugging purposes.

From-SVN: r183606
2012-01-27 09:12:14 +00:00
Eric Botcazou
24e7a4a06e trans.c (call_to_gnu): Create the temporary for the return value in the variable-sized return type...
* gcc-interface/trans.c (call_to_gnu): Create the temporary for the
	return value in the variable-sized return type case if the target is
	an array with fixed size.  However, do not create it if this is the
	expression of an object declaration.

From-SVN: r183033
2012-01-09 21:08:53 +00:00
Eric Botcazou
3c157c27ba * gcc-interface/trans.c (addressable_p) <COMPONENT_REF>: Fix thinko.
From-SVN: r183025
2012-01-09 19:30:58 +00:00
Eric Botcazou
2ad8d9105d decl.c (gnat_to_gnu_param): Add comment about double reference and DECL_POINTS_TO_READONLY_P.
* gcc-interface/decl.c (gnat_to_gnu_param): Add comment about double
	reference and DECL_POINTS_TO_READONLY_P.
	* gcc-interface/trans.c (Identifier_to_gnu) <by_ref>: Always set the
	TREE_READONLY flag on the first dereference of a double dereference.

From-SVN: r182460
2011-12-18 14:41:00 +00:00
Eric Botcazou
52e04e5635 * gcc-interface/trans.c (gigi): Initialize the linemap earlier.
From-SVN: r182199
2011-12-11 09:43:46 +00:00
Eric Botcazou
088b91c76f trans.c (struct language_function): Add GNAT_RET.
* gcc-interface/trans.c (struct language_function): Add GNAT_RET.
	(f_gnat_ret): New macro.
	(struct nrv_data): Add GNAT_RET.
	(finalize_nrv_unc_r): New helper function.
	(finalize_nrv): Add GNAT_RET parameter.  Copy it into DATA.  If the
	function returns unconstrained, use finalize_nrv_unc_r as callback.
	(return_value_ok_for_nrv_p): Test the alignment of RET_OBJ only if
	RET_OBJ is non-null.
	(Subprogram_Body_to_gnu): Pass GNAT_RET to finalize_nrv.
	(gnat_to_gnu) <N_Return_Statement>: In the return-unconstrained case,
	if optimization is enabled, record candidates for the Named Return
	Value optimization.

From-SVN: r181528
2011-11-20 10:29:22 +00:00
Eric Botcazou
0d24bf7601 trans.c (Subprogram_Body_to_gnu): Add comment.
* gcc-interface/trans.c (Subprogram_Body_to_gnu): Add comment.
	(gnat_to_gnu) <N_Return_Statement>: Add 'else' to avoid doing a useless
	test.  Tweak default case.
	<N_Goto_Statement>: Use better formatting.
	* gcc-interface/utils2.c (maybe_wrap_malloc): Use INIT_EXPR instead of
	MODIFY_EXPR to initialize the storage.
	(build_allocator): Likewise.

From-SVN: r181527
2011-11-20 10:16:48 +00:00
Eric Botcazou
033ba5bf9c fe.h (Serious_Errors_Detected): New macro.
* fe.h (Serious_Errors_Detected): New macro.
	* gcc-interface/gigi.h (build_atomic_load): Declare.
	(build_atomic_store): Likewise.
	* gcc-interface/trans.c (atomic_sync_required_p): New predicate.
	(call_to_gnu): Add ATOMIC_SYNC parameter.  Use local variable.
	Build an atomic load for an In or In Out parameter if needed.
	Build an atomic store for the assignment of an Out parameter if needed.
	Build an atomic store to the target if ATOMIC_SYNC is true.
	(present_in_lhs_or_actual_p): New predicate.
	(gnat_to_gnu) <N_Identifier>: Build an atomic load if needed.
	<N_Explicit_Dereference>: Likewise.
	<N_Indexed_Component>: Likewise.
	<N_Selected_Component>: Likewise.
	<N_Assignment_Statement>: Adjust call to call_to_gnu.
	Build an atomic store to the LHS if needed.
	<N_Function_Call>:  Adjust call to call_to_gnu.
	* gcc-interface/utils2.c: Include toplev.h.
	(resolve_atomic_size): New static function.
	(build_atomic_load): New function.
	(build_atomic_store): Likewise.
	* gcc-interface/Make-lang.in (ada/utils2.o): Add toplev.h.

From-SVN: r181267
2011-11-10 19:45:17 +00:00
Eric Botcazou
e1e5852c9f decl.c (gnat_to_gnu_entity): Try to make a packable type for fields of union types as well.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Subtype>: Try to
	make a packable type for fields of union types as well.
	<is_type>: Use RECORD_OR_UNION_TYPE_P predicate.
	(gnat_to_gnu_component_type): Try to make a packable type for fields
	of union types as well.
	(make_packable_type): Use RECORD_OR_UNION_TYPE_P predicate.
	(maybe_pad_type): Try to make a packable type for fields of union types
	as well.
	(gnat_to_gnu_field): Likewise.
	(is_variable_size): Use RECORD_OR_UNION_TYPE_P predicate.
	(set_rm_size): Likewise.
	(rm_size): Likewise.
	* gcc-interface/misc.c (gnat_type_max_size): Likewise.
	* gcc-interface/trans.c (add_decl_expr): Likewise.
	* gcc-interface/utils.c (finish_record_type): Likewise.
	* gcc-interface/utils2.c (build_simple_component_ref): Likewise.

From-SVN: r180540
2011-10-26 20:45:09 +00:00
Eric Botcazou
27ab5bd888 trans.c (lhs_or_actual_p): New predicate.
* gcc-interface/trans.c (lhs_or_actual_p): New predicate.
	(unchecked_conversion_nop): Use it.
	(gnat_to_gnu): Likewise.

From-SVN: r180243
2011-10-20 11:03:54 +00:00
Eric Botcazou
b756276959 back_end.adb (Call_Back_End): Pass the maximum logical line number instead of the maximum physical line...
* back_end.adb (Call_Back_End): Pass the maximum logical line number
	instead of the maximum physical line number to gigi.
	* gcc-interface/trans.c (Sloc_to_locus): Cope with line zero.

From-SVN: r180242
2011-10-20 10:56:08 +00:00
Tom Tromey
46427374e1 Linemap infrastructure for virtual locations
This is the first instalment of a set which goal is to track locations
of tokens across macro expansions.  Tom Tromey did the original work
and attached the patch to PR preprocessor/7263.  This opus is a
derivative of that original work.

This patch modifies the linemap module of libcpp to add virtual
locations support.

A virtual location is a mapped location that can resolve to several
different physical locations.  It can always resolve to the spelling
location of a token.  For tokens resulting from macro expansion it can
resolve to:
  - either the location of the expansion point of the macro.
  - or the location of the token in the definition of the
  macro
  - or, if the token is an argument of a function-like macro,
  the location of the use of the matching macro parameter in
  the definition of the macro

The patch creates a new type of line map called a macro map.  For every
single macro expansion, there is a macro map that generates a virtual
location for every single resulting token of the expansion.

The good old type of line map we all know is now called an ordinary
map.  That one still encodes spelling locations as it has always had.

As a result linemap_lookup as been extended to return a macro map when
given a virtual location resulting from a macro expansion.  The layout
of structs line_map has changed to support this new type of map.  So
did the layout of struct line_maps.  Accessor macros have been
introduced to avoid messing with the implementation details of these
datastructures directly.  This helped already as we have been testing
different ways of arranging these datastructure.  Having to constantly
adjust client code that is too tied with the internals of line_map and
line_maps would have been even more painful.

Of course, many new public functions have been added to the linemap
module to handle the resolution of virtual locations.

This patch introduces the infrastructure but no part of the compiler
uses virtual locations yet.

However the client code of the linemap data structures has been
adjusted as per the changes.  E.g, it's not anymore reliable for a
client code to manipulate struct line_map directly if it just wants to
deal with spelling locations, because struct line_map can now
represent a macro map as well.  In that case, it's better to use the
convenient API to resolve the initial (possibly virtual) location to a
spelling location (or to an ordinary map) and use that.

This is the reason why the patch adjusts the Java, Ada and Fortran
front ends.

Also, note that virtual locations are not supposed to be ordered for
relations '<' and '>' anymore.  To test if a virtual location appears
"before" another one, one has to use a new operator exposed by the
line map interface.  The patch updates the only spot (in the
diagnostics module) I have found that was making the assumption that
locations were ordered for these relations.  This is the only change
that introduces a use of the new line map API in this patch, so I am
adding a regression test for it only.

From-SVN: r180081
2011-10-17 11:58:56 +02:00
Eric Botcazou
722356ce27 trans.c (Attribute_to_gnu): Use remove_conversions.
* gcc-interface/trans.c (Attribute_to_gnu): Use remove_conversions.
	(push_range_check_info): Likewise.
	(gnat_to_gnu) <N_Code_Statement>: Likewise.
	* gcc-interface/utils2.c (build_unary_op) <INDIRECT_REF>: Likewise.
	(gnat_invariant_expr): Likewise.
	* gcc-interface/utils.c (compute_related_constant): Likewise.
	(max_size): Fix handling of SAVE_EXPR.
	(remove_conversions): Fix formatting.

From-SVN: r179873
2011-10-12 22:09:21 +00:00
Eric Botcazou
15bf7d19d4 ada-tree.h (DECL_LOOP_PARM_P): New flag.
* gcc-interface/ada-tree.h (DECL_LOOP_PARM_P): New flag.
	(DECL_INDUCTION_VAR): New macro.
	(SET_DECL_INDUCTION_VAR): Likewise.
	* gcc-interface/gigi.h (convert_to_index_type): Declare.
	(gnat_invariant_expr): Likewise.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: If this is a loop
	parameter, set DECL_LOOP_PARM_P on it.
	* gcc-interface/misc.c (gnat_print_decl) <VAR_DECL>: If DECL_LOOP_PARM_P
	is set, print DECL_INDUCTION_VAR instead of DECL_RENAMED_OBJECT.
	* gcc-interface/trans.c (gnu_loop_label_stack): Delete.
	(struct range_check_info_d): New type.
	(struct loop_info_d): Likewise.
	(gnu_loop_stack): New stack.
	(Identifier_to_gnu): Set TREE_READONLY flag on the first dereference
	built for a by-double-ref read-only parameter.  If DECL_LOOP_PARM_P
	is set, do not test DECL_RENAMED_OBJECT.
	(push_range_check_info): New function.
	(Loop_Statement_to_gnu): Push a new struct loop_info_d instead of just
	the label.  Reference the label and the iteration variable from it.
	Build the special induction variable in the unsigned version of the
	size type, if it is larger than the base type.  And attach it to the
	iteration variable if the latter isn't by-ref.  In the iteration scheme
	case, initialize the invariant conditions in front of the loop if
	deemed profitable.  Use gnu_loop_stack.
	(gnat_to_gnu) <N_Exit_Statement>: Use gnu_loop_stack.
	<N_Raise_Constraint_Error>: Always process the reason.  In the range
	check and related cases, and if loop unswitching is enabled, compute
	invariant conditions and push this information onto the stack.
	Do not translate again the condition if it has been already translated.
	* gcc-interface/utils.c (record_global_renaming_pointer): Assert that
	DECL_LOOP_PARM_P isn't set.
	(convert_to_index_type): New function.
	* gcc-interface/utils2.c (build_binary_op) <ARRAY_REF>: Use it in order
	to convert the index from the base index type to sizetype.
	(gnat_invariant_expr): New function.

From-SVN: r179868
2011-10-12 22:00:14 +00:00
Michael Meissner
e79983f458 Convert standard builtin functions from being arrays to using a functional interface
From-SVN: r179820
2011-10-11 19:55:09 +00:00
Eric Botcazou
71196d4e64 gigi.h (gnat_useless_type_conversion): Declare.
* gcc-interface/gigi.h (gnat_useless_type_conversion): Declare.
	(rest_of_subprog_body_compilation): Likewise.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: For renaming,
	test for useless conversions by means of gnat_useless_type_conversion.
	* gcc-interface/trans.c: Include bitmap.h and cgraph.h.
	(language_function): Add named_ret_val and other_ret_val.
	(f_named_ret_val): New macro.
	(f_other_ret_val): Likewise.
	(gigi): Call rest_of_subprog_body_compilation.
	(struct nrv_data): New structure.
	(is_nrv_p): New predicate.
	(prune_nrv_r): New helper function.
	(prune_nrv_in_block): New function.
	(finalize_nrv_r): New helper function.
	(finalize_nrv): New function.
	(return_value_ok_for_nrv_p): New predicate.
	(build_return_expr): If optimization is enabled, record candidates for
	the Named Return Value optimization.
	(build_function_stub): Call rest_of_subprog_body_compilation.
	(Subprogram_Body_to_gnu): If optimization is enabled and there are
	candidates, finalize the Named Return Value optimization.
	Call rest_of_subprog_body_compilation.
	(call_to_gnu): At the end, if a return value is needed, simplify the
	result before wrapping it up in a COMPOUND_EXPR.
	* gcc-interface/utils.c (end_subprog_body): Split into...
	(rest_of_subprog_body_compilation): ...this.  New function.
	(gnat_useless_type_conversion): Likewise.

From-SVN: r179650
2011-10-07 11:17:55 +00:00
Eric Botcazou
7d76717db8 gigi.h (create_subprog_decl): Replace TREE_CHAIN with DECL_CHAIN in comment.
* gcc-interface/gigi.h (create_subprog_decl): Replace TREE_CHAIN with
	DECL_CHAIN in comment.
	* gcc-interface/trans.c (gigi): Likewise.
	(Attribute_to_gnu): Likewise.
	(build_function_stub): Likewise.
	(gnat_to_gnu): Likewise.
	* gcc-interface/utils.c (create_subprog_decl): Likewise.
	(convert_vms_descriptor64): Likewise.
	(convert_vms_descriptor32): Likewise.

From-SVN: r179185
2011-09-26 08:50:16 +00:00
Eric Botcazou
42acad07c0 trans.c (assoc_to_constructor): Minor tweaks.
* gcc-interface/trans.c (assoc_to_constructor): Minor tweaks.
	* gcc-interface/utils2.c (build_simple_component_ref): Fix formatting
	issues.  Use COMPLETE_TYPE_P in assertion.  Also set TREE_READONLY if
	the type of the record is TYPE_READONLY.

From-SVN: r179184
2011-09-26 08:45:36 +00:00
Eric Botcazou
50179d5882 ada-tree.h (TYPE_NULL_BOUNDS): New macro.
* gcc-interface/ada-tree.h (TYPE_NULL_BOUNDS): New macro.
	(SET_TYPE_NULL_BOUNDS): Likewise.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Type>: Set again
	TREE_THIS_NOTRAP on the INDIRECT_REF node built for the template.
	* gcc-interface/trans.c (Identifier_to_gnu): Return initializers of fat
	pointer types.
	* gcc-interface/utils.c (create_var_decl_1): If the object is external,
	check that the initializer is a valid constant expression for use in
	initializing a static variable.  Add missing guard.
	(update_pointer_to): Adjust TYPE_NULL_BOUNDS if set.
	(convert_to_fat_pointer): In the null fat pointer case, build a valid
	pointer for the bounds.
	* gcc-interface/utils2.c (compare_fat_pointers): New function.
	(build_binary_op) <EQ_EXPR>: Call it to compare fat pointers.

From-SVN: r179180
2011-09-26 07:52:58 +00:00
Eric Botcazou
ad1d36bafd ada-tree.h (TREE_THIS_NOTRAP): Redefine.
* gcc-interface/ada-tree.h (TREE_THIS_NOTRAP): Redefine.
	* gcc-interface/trans.c (Identifier_to_gnu): Factor out common code in
	the by-ref case.  Do not set TREE_READONLY on a renamed object.  Set
	TREE_THIS_NOTRAP on UNCONSTRAINED_ARRAY_REF nodes.
	(Attribute_to_gnu) <Attr_Length>: Expand the use of the parameter cache
	to the indirect case.
	* gcc-interface/utils.c (convert) <UNCONSTRAINED_ARRAY_REF>: Preserve
	the TREE_THIS_NOTRAP flag.

From-SVN: r179171
2011-09-25 20:40:10 +00:00
Eric Botcazou
6162cec0d9 trans.c (Loop_Statement_to_gnu): In the case of an iteration scheme...
* gcc-interface/trans.c (Loop_Statement_to_gnu): In the case of an
	iteration scheme, always generate the do-while form if optimization
	is enabled.  Use more straightforward test at the end.

From-SVN: r179169
2011-09-25 20:27:37 +00:00
Eric Botcazou
dee12fcd11 decl.c (gnat_to_gnu_entity): Use XNEW instead of xmalloc.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Access_Subtype>: Use
	XNEW instead of xmalloc.  Do not build useless pointer type.
	<E_Anonymous_Access_Subprogram_Type>: Use XNEW instead of xmalloc.
	* gcc-interface/trans.c (gnat_to_gnu) <N_Raise_Constraint_Error>: Tidy.
	* gcc-interface/utils2.c (build_unary_op): Remove local variable.

From-SVN: r179168
2011-09-25 20:15:10 +00:00
Eric Botcazou
819a653eee decl.c (maybe_pad_type): Do not try to change the form of an addressable type.
* gcc-interface/decl.c (maybe_pad_type): Do not try to change the form
	of an addressable type.
	* gcc-interface/trans.c (gnat_gimplify_expr) <VIEW_CONVERT_EXPR>: New.
	Deal with those cases for which creating a temporary is mandatory.

From-SVN: r178764
2011-09-11 18:56:40 +00:00
Eric Botcazou
c946adde12 trans.c (call_to_gnu): Use local variable.
* gcc-interface/trans.c (call_to_gnu): Use local variable.  Make sure
	this is a real formal parameter before testing whether it is by ref.

From-SVN: r178763
2011-09-11 18:38:30 +00:00
Eric Botcazou
dddf8120db gigi.h (build_call_0_expr): Delete.
* gcc-interface/gigi.h (build_call_0_expr): Delete.
	(build_call_1_expr): Likewise.
	(build_call_2_expr): Likewise.
	(build_call_n_expr): New prototype.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Use build_call_n_expr.
	* gcc-interface/trans.c (establish_gnat_vms_condition_handler): Ditto.
	(Handled_Sequence_Of_Statements_to_gnu): Likewise.
	(Exception_Handler_to_gnu_zcx): Likewise.
	(gnat_to_gnu): Likewise.
	(build_binary_op_trapv): Likewise.
	* gcc-interface/utils2.c (build_call_0_expr): Delete.
	(build_call_1_expr): Likewise.
	(build_call_2_expr): Likewise.
	(build_call_n_expr): New function.
	(build_call_raise): Use build_call_n_expr.
	(build_call_raise_range): Likewise.
	(build_call_raise_column): Likewise.
	(build_call_alloc_dealloc_proc): Likewise.
	(maybe_wrap_malloc): Likewise.
	(maybe_wrap_free): Likewise.

From-SVN: r178762
2011-09-11 18:33:46 +00:00
Eric Botcazou
d8e3855467 trans.c (build_return_expr): Use void_type_node for MODIFY_EXPR.
* gcc-interface/trans.c (build_return_expr): Use void_type_node for
	MODIFY_EXPR.
	* gcc-interface/utils2.c (build_binary_op) <MODIFY_EXPR>: Assert that
	the result type is null if ENABLE_CHECKING.  Set operation_type at the
	end unconditionally if not set in the previous cases.
	Use build2 and void_type_node for MODIFY_EXPR.
	(build_allocator): Use NULL_TREE for MODIFY_EXPR.

From-SVN: r178761
2011-09-11 18:28:05 +00:00
Arnaud Charlet
203ddceaed [multiple changes]
2011-09-06  Robert Dewar  <dewar@adacore.com>

	* s-tpopsp-vxworks.adb, prj-nmsc.adb: Minor reformatting.

2011-09-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* gcc-interface/trans.c (Attribute_to_gnu): New case for
	attribute Descriptor_Size.
	* exp_attr.adb (Expand_N_Attribute_Reference): Add processing
	for attribute Descriptor_Size.
	* exp_ch7.adb (Double_Size_Of): Removed.
	(Make_Finalize_Address_Stmts): Remove the code which generates
	an expression to calculate the dope vector of an unconstrained
	array. Instead use attribute Descriptor_Size and leave the
	calculation to the back end.
	(Nearest_Multiple_Rounded_Up): Removed.
	(Size_Of): Removed.
	* sem_attr.adb (Analyze_Attribute): Add processing for attribute
	Descriptor_Size. Currently the attribute is applicable only
	to unconstrained arrays.
	(Eval_Attribute): Add processing for
	attribute Descriptor_Size.
	* snames.ads-tmpl: Add a predefined name and an Attribute_Id
	for Descriptor_Size.

2011-09-06  Ed Schonberg  <schonberg@adacore.com>

	* exp_aggr.adb: Remove useless formal.

From-SVN: r178585
2011-09-06 12:53:58 +02:00
Arnaud Charlet
624e168838 [multiple changes]
2011-08-29  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch3.adb (Build_Record_Init_Proc.Build_Init_Procedure): Set
	Exception_Handlers to No_List instead of Empty_List in the case where
	there are no handlers.

2011-08-29  Tristan Gingold  <gingold@adacore.com>

	* gcc-interface/gigi.h (enum standard_datatypes): Add
	ADT_reraise_zcx_decl
	(reraise_zcx_decl): New macro.
	* gcc-interface/trans.c (gnu_incoming_exc_ptr): New variable.
	(gigi): Set reraise_zcx_decl.
	(Exception_Handler_to_gnu_zcx): Save and restore gnu_incoming_exc_ptr.
	(gnat_to_gnu): Handle N_Raise_Statement.

From-SVN: r178212
2011-08-29 14:36:42 +02:00
Eric Botcazou
588c8f488f gigi.h (enumerate_modes): Fix formatting.
* gcc-interface/gigi.h (enumerate_modes): Fix formatting.

	* gcc-interface/trans.c (Subprogram_Body_to_gnu): Revert latest change.

From-SVN: r177548
2011-08-07 16:47:14 +00:00
Arnaud Charlet
002bdd685c [multiple changes]
2011-08-02  Geert Bosch  <bosch@adacore.com>

	* gcc-interface/gigi.h, gcc-interface/misc.c (enumerate_modes): New
	function.
	* gcc-interface/Make-lang.in: Update dependencies.

2011-08-02  Olivier Hainque  <hainque@adacore.com>

	* gcc-interface/trans.c (Subprogram_Body_to_gnu): Set the function
	end_locus.

From-SVN: r177141
2011-08-02 15:00:21 +02:00
Eric Botcazou
f3d3457603 gigi.h (build_function_stub): Remove.
* gcc-interface/gigi.h (build_function_stub): Remove.
	(build_return_expr): Likewise.
	(convert_vms_descriptor): Declare.
	* gcc-interface/utils.c (convert_vms_descriptor): Make global.
	(build_function_stub): Move to...
	* gcc-interface/utils2.c (build_return_expr): Move to...
	* gcc-interface/trans.c (build_function_stub): ...here.
	(build_return_expr): ...here.
	(Subprogram_Body_to_gnu): Add local variable for language_function.
	Disconnect the parameter attributes cache, if any, once done with it.
	Call end_subprog_body only after setting the end_locus.
	Build the stub associated with the function, if any, at the very end.
	(gnat_to_gnu) <N_Return_Statement>: Remove couple of useless local
	variables and streamline control flow.

From-SVN: r176712
2011-07-24 12:45:44 +00:00
Eric Botcazou
96769d3294 trans.c (Identifier_to_gnu): Don't set TREE_THIS_NOTRAP on a dereference built for a by-ref object if...
* gcc-interface/trans.c (Identifier_to_gnu): Don't set TREE_THIS_NOTRAP
	on a dereference built for a by-ref object if it has an address clause.

From-SVN: r175172
2011-06-18 10:31:26 +00:00
Eric Botcazou
7e4680c1a2 einfo.ads (Address_Taken): Document use for the second argument of Asm_Input and Asm_Output attributes.
* einfo.ads (Address_Taken): Document use for the second argument of
	Asm_Input and Asm_Output attributes.
	* sem_attr.adb (Analyze_Attribute) <Attribute_Asm_Input>: If the second
	argument is an entity name, then set Address_Taken on it.
	<Attribute_Asm_Output>: Likewise.
	* gcc-interface/trans.c (lvalue_required_for_attribute_p): Handle the
	Attr_Asm_Input and Attr_Asm_Output attributes explicitly.
	(gnat_to_gnu) <N_Code_Statement>: If an operand is going to end up in
	memory and is a CONST_DECL, retrieve its corresponding VAR_DECL.

From-SVN: r175171
2011-06-18 10:18:38 +00:00
Eric Botcazou
e9f57686fc trans.c (Identifier_to_gnu): Also handle deferred constants whose full view has discriminants specially.
* gcc-interface/trans.c (Identifier_to_gnu): Also handle deferred
	constants whose full view has discriminants specially.

From-SVN: r174689
2011-06-06 10:21:58 +00:00
Kai Tietz
bf6490b56f trans.c (Exception_Handler_to_gnu_sjlj): Use boolean_false_node instead of integer_zero_node.
2011-05-18  Kai Tietz <ktietz@redhat.com>

	* gcc-interface/trans.c (Exception_Handler_to_gnu_sjlj): Use
	boolean_false_node instead of integer_zero_node.
	(convert_with_check): Likewise.
	* gcc-interface/decl.c (choices_to_gnu): Likewise.

From-SVN: r173846
2011-05-18 10:40:50 +02:00
Eric Botcazou
7bf9a5ac1c trans.c (call_to_gnu): In the by-reference case...
* gcc-interface/trans.c (call_to_gnu): In the by-reference case, if the
	type of the parameter is an unconstrained array, convert the actual to
	the type of the formal in the In Out and Out cases as well.

From-SVN: r173706
2011-05-12 14:54:09 +00:00
Nathan Froyd
3d528853ba generalize build_case_label to the rest of the compiler
generalize build_case_label to the rest of the compiler
gcc/ada/
	* gcc-interface/trans.c (Case_Statement_to_gnu): Call
	build_case_label.

gcc/
	* except.c (sjlj_emit_dispatch_table): Call build_case_label.
	* gimplify.c (gimplify_switch_expr): Likewise.
	* omp-low.c (expand_omp_sections): Likewise.
	* tree-eh.c (lower_try_finally_switch): Likewise.
	(lower_eh_dispatch): Likewise.
	* tree.h (build_case_label): Declare.
	* tree.c (build_case_label): Define.

gcc/c-family/
	* c-common.c (c_add_case_label): Omit the loc argument to
	build_case_label.
	* c-common.h (build_case_label): Remove.
	* c-semantics.c (build_case_label): Remove.

gcc/cp/
	* decl.c (finish_case_label): Omit the loc argument to
	build_case_label.

gcc/fortran/
	* trans-decl.c (gfc_trans_entry_master_switch): Call build_case_label.
	* trans-io.c (add_case): Likewise.
	* trans-stmt.c (gfc_trans_integer_select): Likewise.
	(gfc_trans_character_select): Likewise.

gcc/go/
	* go-gcc.cc (Gcc_backend::switch_statement): Call build_case_label.

gcc/java/
	* expr.c (expand_java_switch): Call build_case_label.
	(expand_java_add_case): Likewise.

From-SVN: r173467
2011-05-06 03:47:57 +00:00
Richard Guenther
d35936ab70 tree.h (int_const_binop): Remove notrunc argument.
2011-05-04  Richard Guenther  <rguenther@suse.de>

	* tree.h (int_const_binop): Remove notrunc argument.
	* fold-const.c (int_const_binop): Remove notrunc argument.  Always
	create integer constants that are properly truncated.
	(extract_muldiv_1): Expand one notrunc int_const_binop caller.
	(const_binop): Remove zero notrunc argument to int_const_binop.
	(size_binop_loc): Likewise.
	(fold_div_compare): Likewise.
	(maybe_canonicalize_comparison_1): Likewise.
	(fold_comparison): Likewise.
	(fold_binary_loc): Likewise.
	(multiple_of_p): Likewise.
	* expr.c (store_constructor): Likewise.
	* gimple-fold.c (maybe_fold_offset_to_array_ref): Likewise.
	(maybe_fold_stmt_addition): Likewise.
	* ipa-prop.c (ipa_modify_call_arguments): Likewise.
	* stor-layout.c (layout_type): Likewise.
	* tree-data-ref.c (tree_fold_divides_p): Likewise.
	* tree-sra.c (build_ref_for_offset): Likewise.
	(build_user_friendly_ref_for_offset): Likewise.
	* tree-ssa-address.c (maybe_fold_tmr): Likewise.
	* tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
	* tree-ssa-loop-niter.c (inverse): Likewise.
	* tree-ssa-pre.c (create_component_ref_by_pieces_1): Likewise.
	* tree-ssa.c (maybe_rewrite_mem_ref_base): Likewise.
	* tree-switch-conversion.c (check_range): Likewise.
	(build_constructors): Likewise.
	* tree-vect-generic.c (expand_vector_piecewise): Likewise.
	* tree-vrp.c (set_and_canonicalize_value_range): Likewise.
	(extract_range_from_assert): Likewise.
	(vrp_int_const_binop): Likewise.
	(extract_range_from_binary_expr): Likewise.
	(extract_range_from_unary_expr): Likewise.
	(check_array_ref): Likewise.
	(find_case_label_range): Likewise.
	(simplify_div_or_mod_using_ranges): Likewise.
	* tree-cfg.c (group_case_labels_stmt): Use double-ints for
	comparing case labels for merging.


	ada/
	* gcc-interface/trans.c (gnat_to_gnu): Remove zero notrunc argument to
	int_const_binop.
	(pos_to_constructor): Likewise.

	fortran/
	* trans-types.c (gfc_get_array_type_bounds): Remove zero notrunc
	argument to int_const_binop.

From-SVN: r173356
2011-05-04 09:04:53 +00:00
Nathan Froyd
c1fd8753c5 trans.c (gigi): Call build_function_type_list instead of build_function_type.
* gcc-interface/trans.c (gigi): Call build_function_type_list instead
	of build_function_type.  Adjust calls to...
	(build_raise_check): ...this.  Do not take a void_tree parameter.
	Call build_function_type_list instead of build_function_type.
	Fix head comment and swap couple of conditional blocks.

Co-Authored-By: Eric Botcazou <ebotcazou@adacore.com>

From-SVN: r173325
2011-05-03 16:34:20 +00:00
Eric Botcazou
7d7fcb08c3 gigi.h (create_subprog_decl): Add ARTIFICIAL_FLAG parameter.
* gcc-interface/gigi.h (create_subprog_decl): Add ARTIFICIAL_FLAG
	parameter.
	* gcc-interface/utils.c (create_subprog_decl): Likewise.  Set
	DECL_ARTIFICIAL and DECL_NO_INLINE_WARNING_P on the DECL accordingly.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Subprogram_Type>: Add
	ARTIFICIAL_FLAG local variable and pass it to create_subprog_decl.
	<all>: Do not set flags on the reused DECL node coming from an alias.
	Set DECL_IGNORED_P on the DECL node built for subprograms if they
	don't need debug info here...
	* gcc-interface/trans.c (Subprogram_Body_to_gnu): ...and not here.
	(gigi): Adjust calls to create_subprog_decl.
	(build_raise_check): Likewise.
	(establish_gnat_vms_condition_handler): Likewise.
	(Compilation_Unit_to_gnu): Likewise.
	(gnat_to_gnu): Likewise.

From-SVN: r172862
2011-04-22 17:35:08 +00:00
Eric Botcazou
88872b00da trans.c (Identifier_to_gnu): Do not return initializers of aggregate types that contain a placeholder.
* gcc-interface/trans.c (Identifier_to_gnu): Do not return initializers
	of aggregate types that contain a placeholder.

From-SVN: r172209
2011-04-08 20:21:36 +00:00
Eric Botcazou
65444786be ada-tree.h (DECL_TAFT_TYPE_P): New flag.
* gcc-interface/ada-tree.h (DECL_TAFT_TYPE_P): New flag.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Incomplete_Type>: Set it
	if this is a Taft amendment type and the full declaration is available.
	* gcc-interface/trans.c (process_type): Likewise.
	If there is an old type, mark the new one as used if DECL_TAFT_TYPE_P.
	(process_freeze_entity): Likewise.
	* gcc-interface/utils.c (dummy_global): New static variable.
	(gnat_write_global_declarations): If there are types declared as used
	at the global level, insert them in the global hash table.

From-SVN: r171881
2011-04-02 08:36:32 +00:00
Eric Botcazou
1aeb40dd6d gigi.h (record_builtin_type): Add ARTIFICIAL_P param.
* gcc-interface/gigi.h (record_builtin_type): Add ARTIFICIAL_P param.
	* gcc-interface/utils.c (gnat_pushdecl): If this is a non-artificial
	declaration of an array type, then set DECL_ORIGINAL_TYPE to a distinct
	copy.
	(record_builtin_type): Add ARTIFICIAL_P parameter.  Set DECL_ARTIFICIAL
	flag of the type accordingly.
	* gcc-interface/trans.c (gigi): Adjust calls to record_builtin_type.

From-SVN: r171880
2011-04-02 08:28:21 +00:00
Eric Botcazou
6ddf984362 gigi.h (finalize_from_with_types): Adjust comment.
* gcc-interface/gigi.h (finalize_from_with_types): Adjust comment.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Access_Type>: Defer
	unconditionally to the end of the unit when the designated type is
	limited_with'ed.
	<all>: Rename local variable.  Attempt to un-defer types only and do it
	for limited_with'ed types as well.
	(finalize_from_with_types): Adjust comment.  Rename variable and tidy.
	* gcc-interface/trans.c (Compilation_Unit_to_gnu): Use GNAT_UNIT
	consistently and remove redundant call to finalize_from_with_types.

From-SVN: r171552
2011-03-26 09:55:04 +00:00
Eric Botcazou
5daed84a54 inline.adb (Back_End_Cannot_Inline): Lift restriction on calls to subprograms without a previous spec declared in...
* inline.adb (Back_End_Cannot_Inline): Lift restriction on calls to
	subprograms without a previous spec declared in the same unit.
	* gcc-interface/trans.c (Compilation_Unit_to_gnu): Process inlined
	subprograms at the end of the unit instead of at the beginning.
	* gcc-interface/utils.c (create_subprog_decl): Check that the entity
	isn't public for the special handling of non-inline functions nested
	inside inline external functions.

From-SVN: r171551
2011-03-26 09:34:40 +00:00
Eric Botcazou
abbc8c7b15 trans.c (gnat_to_gnu): Remove obsolete case of non-conversion to the nominal result type at the end.
* gcc-interface/trans.c (gnat_to_gnu): Remove obsolete case of
	non-conversion to the nominal result type at the end.

From-SVN: r171398
2011-03-24 15:15:44 +00:00
Eric Botcazou
ddb5a105e2 trans.c (create_temporary): New function taken from...
* gcc-interface/trans.c (create_temporary): New function taken from...
	(create_init_temporary): ...here.  Call it.
	(call_to_gnu): Create the temporary for the return value early, if any.
	Create it for a function with copy-in/copy-out parameters if there is
	no target; in other cases of copy-in/copy-out, use another temporary.
	Push the new binding level lazily.  Add and rename local variables.

From-SVN: r171345
2011-03-23 10:04:08 +00:00
Eric Botcazou
bb1f792960 gigi.h (smaller_form_type_p): Declare.
* gcc-interface/gigi.h (smaller_form_type_p): Declare.
	* gcc-interface/trans.c (smaller_form_type_p): Make global and move...
	* gcc-interface/utils.c (smaller_form_type_p): ...to here.
	(convert): Deal with conversions from a smaller form type specially.

From-SVN: r171091
2011-03-17 12:37:53 +00:00
Eric Botcazou
31a5a54750 gigi.h (fill_vms_descriptor): Take GNU_TYPE instead of GNAT_FORMAL.
* gcc-interface/gigi.h (fill_vms_descriptor): Take GNU_TYPE instead of
	GNAT_FORMAL.
	* gcc-interface/utils2.c (fill_vms_descriptor): Move from here to...
	* gcc-interface/utils.c (fill_vms_descriptor): ...here.  Take GNU_TYPE
	instead of GNAT_FORMAL.  Protect the expression against multiple uses.
	Do not generate the check directly, instead instantiate the template
	check present in the descriptor.
	(make_descriptor_field): Move around.
	(build_vms_descriptor32): Build a template check in the POINTER field.
	(build_vms_descriptor): Remove useless suffixes.
	* gcc-interface/trans.c (call_to_gnu): Adjust fill_vms_descriptor call.

From-SVN: r169788
2011-02-03 13:19:38 +00:00
Eric Botcazou
2d3c7e4f2d trans.c (Case_Statement_to_gnu): Put the SLOC of the end-of-case on the end label and its associated gotos, if any.
* gcc-interface/trans.c (Case_Statement_to_gnu): Put the SLOC of the
	end-of-case on the end label and its associated gotos, if any.

From-SVN: r168458
2011-01-04 09:50:33 +00:00
Eric Botcazou
0394741f9b trans.c (Subprogram_Body_to_gnu): Evaluate the expressions of the parameter cache within the statement group of...
* gcc-interface/trans.c (Subprogram_Body_to_gnu): Evaluate the
	expressions of the parameter cache within the statement group of
	the CICO mechanism.

From-SVN: r168456
2011-01-04 09:43:56 +00:00
Olivier Hainque
2a02d0907c trans.c (BLOCK_SOURCE_END_LOCATION): Provide default.
* gcc-interface/trans.c (BLOCK_SOURCE_END_LOCATION): Provide default.
	(set_end_locus_from_node): New function.
	(Subprogram_Body_to_gnu): Use it to mark both the inner BIND_EXPR we
	make and the function end_locus.
	(Compilation_Unit_to_gnu): Call it instead of a straight Sloc_to_locus
	for the elaboration subprogram.
	(set_gnu_expr_location_from_node) <default case>: Use it to attempt to
	set the end_locus of the expression as well.

Co-Authored-By: Eric Botcazou <ebotcazou@adacore.com>

From-SVN: r168455
2011-01-04 09:30:06 +00:00
Eric Botcazou
89f5e97804 re PR ada/47131 (internal error for ACATS C34011B on SJLJ targets)
PR ada/47131
	* gcc-interface/trans.c (Identifier_to_gnu): In SJLJ mode, do not make
	variables that are referenced in exception handlers volatile.

From-SVN: r168454
2011-01-04 08:58:02 +00:00
Ralf Wildenhues
308e6f3a18 Fix typos in gcc/ada.
gcc/ada/:
	* projects.texi: Fix typos.
	* gnat_rm.texi: Likewise.
	* gnat_ugn.texi: Likewise.
	* sem_util.adb: Fix typo in variable, typos in comments.
	* a-btgbso.adb: Fix typos in comments.
	* a-cbdlli.adb, a-cbhase.ads, a-cdlili.adb, a-cobove.adb,
	a-coinve.adb, a-convec.adb, a-direct.ads, a-strunb-shared.adb,
	a-strunb-shared.ads, a-stuten.ads, a-stwiun-shared.adb,
	a-stwiun-shared.ads, a-stzunb-shared.adb, a-stzunb-shared.ads,
	a-suenco.adb, a-suenst.adb, a-suewst.adb, a-suezst.adb, ali.ads,
	aspects.ads, atree.ads, binde.adb, bindgen.adb, checks.adb,
	checks.ads, einfo.ads, err_vars.ads, errout.adb, errout.ads,
	exp_aggr.adb, exp_attr.adb, exp_cg.adb, exp_ch3.adb,
	exp_ch4.adb, exp_ch5.adb, exp_ch6.adb, exp_ch7.adb,
	exp_dbug.ads, exp_disp.adb, exp_fixd.ads, freeze.adb,
	g-altive.ads, g-comlin.ads, g-excact.ads, g-mbdira.adb,
	g-sechas.ads, g-sehash.ads, g-sha1.ads, g-sha224.ads,
	g-sha256.ads, g-sha384.ads, g-sha512.ads, g-shsh32.ads,
	g-shsh64.ads, g-socket.adb, g-socket.ads, g-sothco.ads,
	gcc-interface/decl.c, gcc-interface/trans.c,
	gcc-interface/utils2.c, gnat1drv.adb, init.c, inline.adb,
	link.c, locales.c, make.adb, mingw32.h, namet.ads, osint.adb,
	par-ch12.adb, par-ch13.adb, par-ch3.adb, par-ch4.adb,
	par-prag.adb, par.adb, par_sco.adb, prepcomp.adb,
	prj-conf.ads, prj-dect.adb, prj-env.adb, prj-env.ads,
	prj-nmsc.adb, prj-tree.ads, prj-util.ads, prj.adb, prj.ads,
	s-auxdec-vms-alpha.adb, s-auxdec-vms_64.ads, s-oscons-tmplt.c,
	s-osinte-vxworks.ads, s-osprim-mingw.adb, s-regexp.adb,
	s-stusta.adb, s-taprop-mingw.adb, s-taprop-solaris.adb,
	scn.adb, scos.ads, sem.adb, sem_aggr.adb, sem_attr.adb,
	sem_aux.adb, sem_aux.ads, sem_ch12.adb, sem_ch12.ads,
	sem_ch13.adb, sem_ch13.ads, sem_ch3.adb, sem_ch4.adb,
	sem_ch6.adb, sem_ch7.adb, sem_ch8.adb, sem_disp.adb,
	sem_disp.ads, sem_eval.adb, sem_intr.adb, sem_prag.adb,
	sem_res.adb, sem_scil.adb, sem_util.ads, sem_warn.adb,
	sem_warn.ads, sinfo.ads, socket.c, styleg.adb, switch.ads,
	sysdep.c, tb-alvxw.c, xoscons.adb: Likewise.

From-SVN: r168082
2010-12-20 07:26:57 +00:00
Eric Botcazou
5128d641ba trans.c (can_be_lower_p): New predicate.
* gcc-interface/trans.c (can_be_lower_p): New predicate.
	(Loop_Statement_to_gnu): Do not generate the entry condition if we know
	that it will be true.

From-SVN: r167757
2010-12-13 17:51:47 +00:00
Eric Botcazou
5a19bc0a79 trans.c (addressable_p): Rewrite obsolete paragraph in head comment.
* gcc-interface/trans.c (addressable_p): Rewrite obsolete paragraph in
	head comment.

From-SVN: r166864
2010-11-17 12:00:15 +00:00
Eric Botcazou
6532e8a053 trans.c (gigi): Don't set 'pure' flag on SJLJ routines.
* gcc-interface/trans.c (gigi): Don't set 'pure' flag on SJLJ routines.
	* gcc-interface/utils2.c (compare_arrays): Add LOC parameter.  Set it
	directly on all the comparison expressions.
	(build_binary_op): Pass input_location to compare_arrays.

From-SVN: r166533
2010-11-10 12:09:46 +00:00
Eric Botcazou
054d6b836f trans.c (lvalue_required_p) <N_Type_Conversion>): Look through it for elementary types as well.
* gcc-interface/trans.c (lvalue_required_p) <N_Type_Conversion>): Look
	through it for elementary types as well.
	<N_Unchecked_Type_Conversion>: Adjust to above change.
	<N_Allocator>: Likewise.
	(gnat_to_gnu): Do not attempt to rewrite boolean literals.

From-SVN: r166532
2010-11-10 11:56:14 +00:00
Eric Botcazou
586fea26ac gigi.h (add_stmt_force): Declare.
* gcc-interface/gigi.h (add_stmt_force): Declare.
	(add_stmt_with_node_force): Likewise.
	* gcc-interface/trans.c (Attribute_to_gnu): Don't set TREE_SIDE_EFFECTS
	on the SAVE_EXPR built for cached expressions of parameter attributes.
	(Subprogram_Body_to_gnu): Force evaluation of the SAVE_EXPR built for
	cached expressions of parameter attributes.
	(add_stmt_force): New function.
	(add_stmt_with_node_force): Likewise.

From-SVN: r166222
2010-11-03 00:15:51 +00:00
Eric Botcazou
cfc839a4b2 trans.c (gigi): Fix formatting issues.
* gcc-interface/trans.c (gigi): Fix formatting issues.
	(build_raise_check): Likewise.
	(gnat_to_gnu): Likewise.
	* gcc-interface/utils2.c (build_call_raise_range): Likewise.
	(build_call_raise_column): Likewise.

From-SVN: r166017
2010-10-27 21:15:06 +00:00
Richard Kenner
39ab2e8fc9 utils2.c (build_compound_expr): New function.
2010-10-26  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* gcc-interface/utils2.c (build_compound_expr): New function.
	* gcc-interface/gigi.h (build_compound_expr): Declare it.
	* gcc-interface/trans.c (Attribute_to_gnu, call_to_gnu): Use it.
	(gnat_to_gnu, case N_Expression_With_Actions): Likewise.

From-SVN: r165958
2010-10-26 15:06:34 +02:00
Eric Botcazou
35a382b82d decl.c (gnat_to_gnu_entity, [...]): Allow In Out/Out parameters for functions.
* gcc-interface/decl.c (gnat_to_gnu_entity, case E_Function): Allow
	In Out/Out parameters for functions.
	* gcc-interface/trans.c (gnu_return_var_stack): New variable.
	(create_init_temporary): New static function.
	(Subprogram_Body_to_gnu): Handle In Out/Out parameters for functions.
	(call_to_gnu): Likewise.  Use create_init_temporary in order to create
	temporaries for unaligned parameters and return value.  If there is an
	unaligned In Out or Out parameter passed by reference, push a binding
	level if not already done.  If a binding level has been pushed and the
	call is returning a value, create the call statement.
	(gnat_to_gnu) <N_Return_Statement>: Handle In Out/Out parameters for
	functions.

From-SVN: r165914
2010-10-25 10:35:07 +00:00
Arnaud Charlet
ea0342360d [multiple changes]
2010-10-22  Thomas Quinot  <quinot@adacore.com>

	* einfo.ads (Declaration_Node): Clarify documentation, in particular
	regarding what is returned for subprogram entities.

2010-10-22  Arnaud Charlet  <charlet@adacore.com>

	* exp_attr.adb (Make_Range_Test): Generate a Range node instead of
	explicit comparisons, generates simpler expanded code.
	* a-except-2005.adb (Rcheck_06_Ext): New.
	* gcc-interface/trans.c (gigi, gnat_to_gnu): Handle validity checks
	like range checks.
	* gcc-interface/Make-lang.in: Update dependencies.

2010-10-22  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb (Array_Type_Declaration): Error for subtype wi predicate
	for index type
	(Constrain_Index): Error of subtype wi predicate in index constraint
	* sem_ch9.adb (Analyze_Entry_Declaration): Error of subtype wi
	predicate in entry family.
	* sem_res.adb (Resolve_Slice): Error of type wi predicate in slice.

2010-10-22  Javier Miranda  <miranda@adacore.com>

	* sem_util.ads, sem_util.adb (Collect_Parents): New subprogram.
	(Original_Corresponding_Operation): New subprogram.
	(Visible_Ancestors): New subprogram.
	* sem_ch6.adb (New_Overloaded_Entity): Handle new case of dispatching
	operation that overrides a hidden inherited primitive.
	* sem_disp.adb (Find_Hidden_Overridden_Primitive): New subprogram.
	(Check_Dispatching_Operation): if the new dispatching operation
	does not override a visible primtive then check if it overrides
	some hidden inherited primitive.

2010-10-22  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch10.adb (Analyze_With_Clause): If the parent_unit_name in a with
	clause is a child unit that denotes a renaming, replace the
	parent_unit_name with a reference to the renamed unit, because the
	prefix is irrelevant to subsequent visibility..

From-SVN: r165805
2010-10-22 11:14:01 +02:00
Arnaud Charlet
437f8c1ebe [multiple changes]
2010-10-19  Robert Dewar  <dewar@adacore.com>

	* sem_eval.adb: Minor reformatting.

2010-10-19  Tristan Gingold  <gingold@adacore.com>

	* exp_ch4.adb (Expand_N_And_Op, Expand_N_Or_Op, Expand_N_Xor_Op): Call
	Expand_Intrinsic_Call if the function is intrinsic.
	* exp_intr_adb (Expand_Binary_Operator): Handle VMS case for logical
	binary operator on the unsigned_quadword record.
	* exp_intr.ads (Expand_Intrinsic_Call): Update comments.

2010-10-19  Geert Bosch  <bosch@adacore.com>

	* gnat_rm.texi (pragma Float_Representation): Fix typo.

2010-10-19  Arnaud Charlet  <charlet@adacore.com>

	* switch-c.adb (Scan_Front_End_Switches): Add handling of -gnateE.
	* fe.h (Exception_Extra_Info): Declare.
	* usage.adb (usage): Add -gnateE doc.
	* checks.adb (Install_Null_Excluding_Check): Use better sloc.
	* sem_util.adb (Insert_Explicit_Dereference): Ditto.
	* gnat_ugn.texi: Document -gnateE switch.
	* a-except.adb (Set_Exception_C_Msg): New parameter Column.
	* a-except-2005.adb (Set_Exception_C_Msg): New parameter Column.
	(Raise_Constraint_Error_Msg): Ditto.
	(Image): New helper function.
	(Rcheck_00_Ext, Rcheck_05_Ext, Rcheck_12_Ext): New procedure with more
	detailed exception information.
	Adjust calls to Set_Exception_C_Msg and Raise_Constraint_Error_Msg.
	* a-exexda.adb (Set_Exception_C_Msg): New parameter Column.
	* opt.ads (Exception_Extra_Info): New flag.
	* gcc-interface/utils.c (gnat_raise_decls_ext): New.
	* gcc-interface/utils2.c (build_call_raise_range,
	build_call_raise_column): New functions.
	* gcc-interface/gigi.h (exception_info_kind, gnat_raise_decls_ext,
	build_call_raise_range, build_call_raise_column): Declare.
	gcc-interface/trans.c (build_raise_check): New function.
	(gigi): Initialize gnat_raise_decls_ext.
	(gnat_to_gnu): Add initial support for -gnateE switch.
	* gcc-interface/Make-lang.in: Update dependencies.

From-SVN: r165696
2010-10-19 12:54:58 +02:00
Eric Botcazou
a61c3633ec sched-deps.c (sched_insn_is_legitimate_for_speculation): Invoke may_trap_or_fault_p instead of may_trap_p predicate.
* sched-deps.c (sched_insn_is_legitimate_for_speculation): Invoke
	may_trap_or_fault_p instead of may_trap_p predicate.
	* tree.c (substitute_in_expr): Propagate the TREE_THIS_NOTRAP flag.
	(substitute_placeholder_in_expr): Likewise.
	* tree-inline.c (remap_gimple_op_r): Propagate the TREE_THIS_NOTRAP
	flag on MEM_REF nodes.
	(copy_tree_body_r): Propagate the TREE_READONLY and TREE_THIS_NOTRAP
	flags on INDIRECT_REF nodes.
ada/
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Type>: Set
	TREE_THIS_NOTRAP on the INDIRECT_REF node built for the template.
	* gcc-interface/trans.c (Identifier_to_gnu): Set TREE_THIS_NOTRAP on
	the INDIRECT_REF node built for objects used by reference.
	* gcc-interface/utils2.c (build_binary_op): Add short-circuit for
	constant result. Set TREE_THIS_NOTRAP on ARRAY_REF and ARRAY_RANGE_REF.
	(gnat_stabilize_reference_1): Propagate the TREE_THIS_NOTRAP flag.

From-SVN: r165468
2010-10-14 13:39:18 +00:00
Arnaud Charlet
76e3504fad [multiple changes]
2010-10-11  Javier Miranda  <miranda@adacore.com>

	* sem_ch10.adb (Analyze_With_Clause): Add missing test to ensure
	availability of attribute Instance_Spec.

2010-10-11  Arnaud Charlet  <charlet@adacore.com>

	* gnat1drv.adb (Adjust_Global_Switches): Disable codepeer mode if
	checking syntax only or in ASIS mode.

2010-10-11  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Check_Delayed_Subprogram): Abstract subprograms may also
	need a freeze node if some type in the profile has one.
	* gcc-interface/trans.c (case N_Abstract_Subprogram_Declaration): If
	entity has a freeze node, defer elaboration.

2010-10-11  Emmanuel Briot  <briot@adacore.com>

	* prj-nmsc.adb (Check_Aggregate_Project): Add support for finding all
	aggregated projects.

From-SVN: r165287
2010-10-11 11:48:35 +02:00
Olivier Hainque
b160794381 lang.opt (gdwarf+): Remove.
* gcc-interface/lang.opt (gdwarf+): Remove.
	* gcc-interface/gigi.h (get_parallel_type): Likewise
	* gcc-interface/misc.c (gnat_dwarf_extensions): Likewise.
	(gnat_handle_option): Remove OPT_gdwarfplus case.
	(gnat_post_options): Remove setting of use_gnu_debug_info_extensions
	from gnat_dwarf_extensions.
	* gcc-interface/trans.c (gigi): Remove -gdwarf+ initializations.
	* gcc-interface/utils.c (get_parallel_type): Remove.

From-SVN: r165254
2010-10-10 13:25:19 +00:00