aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/gcc-interface
AgeCommit message (Collapse)AuthorFilesLines
2016-01-20exp_ch2.adb (Expand_Current_Value): Make an appropriate character literal if ↵Eric Botcazou7-190/+184
the entity is of a character type. * exp_ch2.adb (Expand_Current_Value): Make an appropriate character literal if the entity is of a character type. * gcc-interface/lang.opt (fsigned-char): New option. * gcc-interface/misc.c (gnat_handle_option): Accept it. (gnat_init): Adjust comment. * gcc-interface/gigi.h (finish_character_type): New prototype. (maybe_character_type): New inline function. (maybe_character_value): Likewise. * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Enumeration_Type>: For a character of CHAR_TYPE_SIZE, make a signed type if flag_signed_char. Set TYPE_ARTIFICIAL early and call finish_character_type on the type. <E_Enumeration_Subtype>: For a subtype of character with RM_Size and Esize equal to CHAR_TYPE_SIZE, make a signed type if flag_signed_char. Copy TYPE_STRING_FLAG from type to subtype. <E_Array_Type>: Deal with character index types. <E_Array_Subtype>: Likewise. * gcc-interface/trans.c (gigi): Replace unsigned_char_type_node with char_type_node throughout. (build_raise_check): Likewise. (get_type_length): Deal with character types. (Attribute_to_gnu) <Attr_Pos>: Likewise. Remove obsolete range check code. Minor tweak. <Attr_Pred>: Likewise. (Loop_Statement_to_gnu): Likewise. (Raise_Error_to_gnu): Likewise. <N_Indexed_Component>: Deal with character index types. Remove obsolete code. <N_Slice>: Likewise. <N_Type_Conversion>: Deal with character types. Minor tweak. <N_Unchecked_Type_Conversion>: Likewise. <N_In>: Likewise. <N_Op_Eq>: Likewise. (emit_index_check): Delete. * gcc-interface/utils.c (finish_character_type): New function. (gnat_signed_or_unsigned_type_for): Deal with built-in character types. * gcc-interface/utils2.c (expand_sloc): Replace unsigned_char_type_node with char_type_node. (build_call_raise): Likewise. (build_call_raise_column): Likewise. (build_call_raise_range): Likewise. From-SVN: r232604
2016-01-18gigi.h (build_call_raise_column): Adjust prototype.Eric Botcazou7-161/+165
* gcc-interface/gigi.h (build_call_raise_column): Adjust prototype. (build_call_raise_range): Likewise. (gnat_unsigned_type): Delete. (gnat_signed_type): Likewise. (gnat_signed_or_unsigned_type_for): New prototype. (gnat_unsigned_type_for): New inline function. (gnat_signed_type_for): Likewise. * gcc-interface/cuintp.c (build_cst_from_int): Call build_int_cst. * gcc-interface/decl.c (gnat_to_gnu_entity): Likewise. (gnat_to_gnu_entity) <E_Array_Type>: Always translate the index types and compute their base type from that. <E_Array_Subtype>: Remove duplicate declaration. * gcc-interface/misc.c (get_array_bit_stride): Call build_int_cst. * gcc-interface/trans.c (get_type_length): Likewise. (Attribute_to_gnu): Likewise. (Loop_Statement_to_gnu): Likewise. (Call_to_gnu): Likewise. (gnat_to_gnu): Call build_real, build_int_cst, gnat_unsigned_type_for and gnat_signed_type_for. Minor tweaks. (build_binary_op_trapv): Likewise. (emit_check): Likewise. (convert_with_check): Likewise. (Raise_Error_to_gnu): Adjust calls to the build_call_raise family of functions. Minor tweaks. (Case_Statement_to_gnu): Remove dead code. (gnat_to_gnu): Call gnat_unsigned_type_for and gnat_signed_type_for. (init_code_table): Minor reordering. * gcc-interface/utils.c (gnat_unsigned_type): Delete. (gnat_signed_type): Likewise. (gnat_signed_or_unsigned_type_for): New function. (unchecked_convert): Use directly the size in the test for precision vs size adjustments. (install_builtin_elementary_types): Call gnat_signed_type_for. * gcc-interface/utils2.c (nonbinary_modular_operation): Call build_int_cst. (build_goto_raise): New function taken from... (build_call_raise): ...here. Call it. (build_call_raise_column): Add KIND parameter and call it. (build_call_raise_range): Likewise. From-SVN: r232503
2016-01-18ada-tree.h (TYPE_IMPLEMENTS_PACKED_ARRAY_P): Rename toEric Botcazou6-159/+160
* gcc-interface/ada-tree.h (TYPE_IMPLEMENTS_PACKED_ARRAY_P): Rename to (TYPE_IMPL_PACKED_ARRAY_P): ...this. (TYPE_CAN_HAVE_DEBUG_TYPE_P): Do not test TYPE_DEBUG_TYPE. * gcc-interface/decl.c (gnat_to_gnu_entity): Simplify NULL_TREE tests and tweak gnat_encodings tests throughout. (initial_value_needs_conversion): Likewise. (intrin_arglists_compatible_p): Likewise. * gcc-interface/misc.c (gnat_print_type): Likewise. (gnat_get_debug_type): Likewise. (gnat_get_fixed_point_type_info): Likewise. (gnat_get_array_descr_info): Likewise. (get_array_bit_stride): Likewise. (gnat_get_type_bias): Fix formatting. (enumerate_modes): Likewise. * gcc-interface/trans.c (gnat_to_gnu): Likewise. (add_decl_expr): Simplify NULL_TREE test. (end_stmt_group): Likewise. (build_binary_op_trapv): Fix formatting. (get_exception_label): Use switch statement. (init_code_table): Move around. * gcc-interface/utils.c (global_bindings_p): Simplify NULL_TREE test. (gnat_poplevel): Likewise. (gnat_set_type_context): Likewise. (defer_or_set_type_context): Fix formatting. (gnat_pushdecl): Simplify NULL_TREE test. (maybe_pad_type): Likewise. (add_parallel_type): Likewise. (create_range_type): Likewise. (process_deferred_decl_context): Likewise. (convert): Likewise. (def_builtin_1): Likewise. * gcc-interface/utils2.c (find_common_type): Likewise. (build_binary_op): Likewise. (gnat_rewrite_reference): Likewise. (get_inner_constant_reference): Likewise. From-SVN: r232501
2016-01-18re PR ada/69219 (error on nested subprograms with Inline_Always and Intrinsic)Eric Botcazou1-13/+16
PR ada/69219 * gcc-interface/trans.c (check_inlining_for_nested_subprog): Consider the parent function instead of the current function in order to issue the warning or the error. Add guard for ignored functions. From-SVN: r232498
2016-01-06Ada: add XVE/XVU parallel types to lexical scopesPierre-Marie de Rodat1-1/+2
This change adds TYPE_DECL nodes for XVE/XVU parallel types to lexical scopes so that these types are properly scoped in the debug information. gcc/ada/ChangeLog: * gcc-interface/utils.c: Bump copyright year. (rest_of_record_type_compilation): Add XVE/XVU parallel types to the current lexical scope. From-SVN: r232098
2015-12-20utils2.c (gnat_rewrite_reference): New case identical to FLOAT_EXPR.Eric Botcazou1-0/+2
* gcc-interface/utils2.c (gnat_rewrite_reference) <REALPART_EXPR>: New case identical to FLOAT_EXPR. <IMAGPART_EXPR>: Likewise. From-SVN: r231861
2015-12-20decl.c (gnat_to_gnu_entity): During layout in type_annotate_only mode...Eric Botcazou1-11/+43
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: During layout in type_annotate_only mode, skip discriminants of derived tagged types renaming those of the parent type. In type_annotate_only mode, if the type is tagged, do not override a size clause but take into account the alignment of the tag. (annotate_rep): In type_annotate_only mode, deal with discriminants of derived tagged types renaming those of the parent type. From-SVN: r231860
2015-12-20utils.c (maybe_pad_type): In type_annotate_only mode...Eric Botcazou1-8/+17
* gcc-interface/utils.c (maybe_pad_type): In type_annotate_only mode, retrieve the component type if this is an array and do not issue the warning for concurrent types. From-SVN: r231859
2015-12-18* gcc-interface/ada-tree.h (TYPE_DEBUG_TYPE): Remove duplicate.Eric Botcazou1-11/+4
From-SVN: r231823
2015-12-17DWARF: describe properly Ada packed arraysPierre-Marie de Rodat4-29/+220
gcc/ada/ChangeLog: * gcc-interface/ada-tree.h (TYPE_IMPLEMENTS_PACKED_ARRAY_P, TYPE_CAN_HAVE_DEBUG_TYPE_P, TYPE_ORIGINAL_PACKED_ARRAY, SET_TYPE_ORIGINAL_PACKED_ARRAY): New macros. * gcc-interface/decl.c (add_parallel_type_for_packed_array): Rename to associate_original_type_to_packed_array. When -fgnat-encodings=minimal, set original packed array type as so instead of as a parallel type to the implementation type. In this case, also rename the implementation type to the name of the original array type. (gnat_to_gnu_entity): Update invocations to add_parallel_type_for_packed_array. Tag ARRAY_TYPE nodes for packed arrays with the TYPE_PACKED flag. When -fgnat-encodings=minimal: - strip ___XP suffixes in packed arrays' names; - set the debug type for padding records around packed arrays to the packed array; - do not attach ___XUP types as parallel types of constrained array types. * gcc-interface/misc.c (gnat_print_type): Update to handle orignal packed arrays. (gnat_get_debug_type): Update to reject packed arrays implementation types. (get_array_bit_stride): New. (gnat_get_array_descr_info): Add packed arrays handling. * gcc-interface/utils.c (maybe_pad_type): When -fgnat-encodings=minimal, set the name of the padding type to the one of the original packed type, if any. Fix TYPE_DECL peeling around the name of the input type. From-SVN: r231768
2015-12-17DWARF: add a language hook for scalar biased typesPierre-Marie de Rodat1-0/+12
Front-ends like GNAT for Ada sometimes use biased encodings for integral types. This change creates a new language hook so that the bias information can make it into the debugging information back-end and introduces an experimental DWARF attribute to hold it. gcc/ada/ChangeLog: * gcc-interface/misc.c (gnat_get_type_bias): New. (LANG_HOOKS_GET_TYPE_BIAS): Redefine macro to implement the get_type_bias language hook. gcc/ChangeLog: * langhooks.h (struct lang_hooks_for_types): New get_bias_field. * langhooks-def.h (LANG_HOOKS_GET_TYPE_BIAS): New. (LANG_HOOKS_FOR_TYPES_INITIALIZER): Initialize the get_bias_field. * dwarf2out.c (base_type_die): In non-strict DWARF mode, invoke the get_type_bias language hook for INTEGER_TYPE nodes. If it returns a bias, emit an attribute for it. (subrange_type_die): Change signature to handle bias. If non-strict DWARF mode, emit an attribute for it, if one passed. (modified_type_die): For subrange types, invoke the get_type_bias langage hook and pass the bias to subrange_type_die. From-SVN: r231767
2015-12-17DWARF: create a macro for max dimensions for array descr. lang. hookPierre-Marie de Rodat1-1/+15
The array descriptor language hook can hold the description of a limited number of array dimensions. This macro will ease preventing overflow in front-ends. gcc/ada/ChangeLog: * gcc-interface/misc.c (gnat_get_array_descr_info): When the array has more dimensions than the language hook can handle, fall back to a nested arrays description. Handle context-less array types. gcc/ChangeLog: * dwarf2out.h (DWARF2OUT_ARRAY_DESCR_INFO_MAX_DIMEN): New macro. (struct array_descr_info): Use it for the dimensions array's size. * dwarf2out.c (gen_type_die_with_usage): Check that the array descr. language hook does not return an array with more dimensions that it should. From-SVN: r231766
2015-12-17DWARF: describe Ada dynamic arrays as proper arraysPierre-Marie de Rodat2-39/+186
gcc/ada/ChangeLog: * gcc-interface/decl.c (gnat_to_gnu_entity): When -fgnat-encodings-minimal, do not add ___XUP/XUT suffixes to type names and do not generate ___XA parallel types. * gcc-interface/misc.c (gnat_get_array_descr_info): Match fat and thin pointers and generate the corresponding array type descriptions. From-SVN: r231765
2015-12-17DWARF: add a language hook for fixed-point typesPierre-Marie de Rodat4-2/+174
Support for fixed-point types in GCC is not powerful enough for Ada fixed-point types: GNAT uses regular scalar types to implement them. This new language hook makes it possible to output the desired debugging information anyway. gcc/ada/ChangeLog: * gcc-interface/ada-tree.def (POWER_EXPR): New binary operation. * gcc-interface/ada-tree.h (TYPE_FIXED_POINT_P): New macro. (TYPE_IS_FIXED_POINT_P): New macro. (TYPE_SCALE_FACTOR): New macro. (SET_TYPE_SCALE_FACTOR): New macro. * gcc-interface/decl.c: Include urealp.h (gnat_to_gnu_entity): Attach trees to encode scale factors to fixed-point types. * gcc-interface/misc.c (gnat_print_type): Print scale factors for fixed-point types. (gnat_get_fixed_point_type_info): New. (gnat_init_ts): Initialize data for the POWER_EXPR binary operation. (LANG_HOOKS_GET_FIXED_POINT_INFO): Redefine macro to implement the get_fixed_point_type_info language hook. gcc/ChangeLog: * langhooks.h (struct lang_hooks_for_types): Add a get_fixed_point_type_info field. * langhooks-def.h (LANG_HOOKS_GET_FIXED_POINT_TYPE_INFO): New macro. (LANG_HOOKS_FOR_TYPES_INITIALIZER): Initialize the get_fixed_point_type_info field. * dwarf2out.h (enum fixed_point_scale_factor): New. (struct fixed_point_type_info): New. * dwarf2out.c (base_type_die): In DWARFv3 or non-strict DWARF mode, get fixed-point type information using the debugging hook and describe it in DWARF, if any. From-SVN: r231764
2015-12-17DWARF: add a language hook to override types in debugging informationPierre-Marie de Rodat4-28/+99
Many artificial types are introduced by GNAT in order to satisfy constraints in GCC's internal trees or to generate optimal code. These hide original types from sources and miss useful information in the debugging information or add noise to it and make debugging confusing. This change introduces a new language hook to give a chance to front-ends to restore the source types in the debugging information. This change also enhance the array descriptor language hook to handle array-wide bit/byte stride. Some arrays may contain dynamically-sized objects. Debuggers need for these a hint to know the size allocated for each element, hence the need for the array-wide bit/byte stride. The Ada front-end is enhanced to take advantage of both hooks when -fgnat-encodings=minimal, in order to keep compatibility with GDB. gcc/ada/ChangeLog: * gcc-interface/ada-tree.h (struct lang_type): Rename the t field as t1 and add a t2 one. (get_lang_specific): New. (GET_TYPE_LANG_SPECIFIC): Refactor to use get_lang_specific. (SET_TYPE_LANG_SPECIFIC): Likewise. (GET_TYPE_LANG_SPECIFIC2): New macro. (SET_TYPE_LANG_SPECIFIC2): New macro. (TYPE_DEBUG_TYPE): New macro. (SET_TYPE_DEBUG_TYPE): New macro. * gcc-interface/decl.c (gnat_to_gnu_entity): When -fgnat-encodings=minimal, set padding types' debug type to the padded one (i.e. strip ___PAD GNAT encodings) and set constrained record subtypes's debug type to the base type. * gcc-interface/misc.c (gnat_print_type): Print debug types. (gnat_get_debug_type): New. (gnat_get_array_descr_info): When -fgnat-encodings=minimal, set a byte stride for arrays that contain a type whose debug type has variable length. (LANG_HOOKS_GET_DEBUG_TYPE): Redefine macro to implement the debug type language hook. * gcc-interface/utils.c (maybe_pad_type): When -fgnat-encodings=minimal, set padding types' debug type to the padded one. Restore XVZ variables creation when -fgnat-encodings-minimal and use them to hold padding types' byte size. For library-level padding types, share this variable across translation units. Tag XVZ variables as artificial. gcc/ChangeLog: * langhooks.h (struct lang_hooks_for_types): Add a get_debug_type field. * langhooks-def.h (LANG_HOOKS_GET_DEBUG_TYPE): New macro. (LANG_HOOKS_FOR_TYPES_INITIALIZER): Initialize the get_debug_type field. * dwarf2out.h (struct array_descr_info): Add an array-wide stride field. * dwarf2out.c (modified_type_die): Invoke the get_debug_type language hook, process its result instead, if any. (gen_descr_array_type_die): Add array-wide stride processing. From-SVN: r231763
2015-12-17DWARF: handle variable-length records and variant partsPierre-Marie de Rodat2-11/+16
Enhance the DWARF back-end to emit proper descriptions for variable-length records as well as variant parts in records. In order to achieve this, generate DWARF expressions ("location descriptions" in dwarf2out's parlance) for size and data member location attributes. Also match QUAL_UNION_TYPE data types as variant parts, assuming the formers appear only to implement the latters (which is the case at the moment: only the Ada front-end emits them). Note that very few debuggers can handle these descriptions (GDB does not yet), so in order to ease the the transition enable these only when -fgnat-encodings=minimal. gcc/ada/ChangeLog: * gcc-interface/decl.c (gnat_to_gnu_entity): Disable ___XVS GNAT encodings when -fgnat-encodings=minimal. (components_to_record): Disable ___XVE, ___XVN, ___XVU and ___XVZ GNAT encodings when -fgnat-encodings=minimal. * gcc-interface/utils.c (maybe_pad_type): Disable __XVS GNAT encodings when -fgnat-encodings=minimal. gcc/ChangeLog: * debug.h (struct gcc_debug_hooks): Add a new size_function hook. * debug.c (do_nothing_debug_hooks): Set the size_function field to no-op. * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise. * sdbout.c (sdb_debug_hooks): Likewise. * vmsdbgout.c (vmsdbg_debug_hooks): Likewise. * stor-layout.c (finalize_size_functions): Let the debug info back-end know about the implementation of size functions. * dwarf2out.h (dw_discr_list_ref): New typedef. (enum dw_val_class): Add value classes for discriminant values and discriminant lists. (struct dw_discr_value): New structure. (struct dw_val_node): Add discriminant values and discriminant lists to the union. (struct dw_loc_descr_node): Add frame_offset_rel and dw_loc_frame_offset (only for checking) fields to handle DWARF procedures generation. (struct dw_discr_list_node): New structure. * dwarf2out.c (dwarf2out_size_function): New. (dwarf2_debug_hooks): Set the size_function field to dwarf2out_size_function. (dwarf2_lineno_debug_hooks): Set the size_function field to no-op. (new_loc_descr): Initialize the dw_loc_frame_offset field. (dwarf_proc_stack_usage_map): New. (dw_val_equal_p): Handle discriminants. (size_of_discr_value): New. (size_of_discr_list): New. (size_of_die): Handle discriminants. (add_loc_descr_to_each): New. (add_loc_list): New. (print_discr_value): New. (print_dw_val): Handle discriminants. (value_format): Handle discriminants. (output_discr_value): New. (output_die): Handle discriminants. (output_loc_operands): Handle DW_OP_call2 and DW_OP_call4. (uint_loc_descriptor): New. (uint_comparison_loc_list): New. (loc_list_from_uint_comparison): New. (add_discr_value): New. (add_discr_list): New. (AT_discr_list): New. (loc_descr_to_next_no_op): New. (free_loc_descr): New. (loc_descr_without_nops): New. (struct loc_descr_context): Add a dpi field. (struct dwarf_procedure_info): New helper structure. (new_dwarf_proc_die): New. (is_handled_procedure_type): New. (resolve_args_picking_1): New. (resolve_args_picking): New. (function_to_dwarf_procedure): New. (copy_dwarf_procedure): New. (copy_dwarf_procs_ref_in_attrs): New. (copy_dwarf_procs_ref_in_dies): New. (break_out_comdat_types): Copy DWARF procedures along with the types that reference them. (loc_list_from_tree): Rename into loc_list_from_tree_1. Handle CALL_EXPR in the cases suitable for DWARF procedures. Handle for PARM_DECL when generating a location description for a DWARF procedure. Handle big unsigned INTEGER_CST nodes. Handle NON_LVALUE_EXPR, EXACT_DIV_EXPR and all unsigned comparison operators. Add a wrapper for loc_list_from_tree that strips DW_OP_nop operations from the result. (type_byte_size): New. (struct vlr_context): New helper structure. (field_byte_offset): Change signature to return either a constant offset or a location description for dynamic ones. Handle dynamic byte offsets with constant bit offsets and handle fields in variant parts. (add_data_member_location): Change signature to handle dynamic member offsets and fields in variant parts. Update call to field_byte_offset. Handle location lists. Emit a variable data member location only when -fgnat-encodings=minimal. (add_bound_info): Emit self-referential bounds only when -fgnat-encodings=minimal. (add_byte_size_attribute): Use type_byte_size in order to handle dynamic type sizes. Emit variable byte size only when -fgnat-encodings=minimal and when the target DWARF version allows them. (add_bit_offset_attribute): Change signature to handle variable-length records. Update call to field_byte_offset. (gen_descr_array_type_die): Update call to gen_field_die. Update loc_descr_context literal. (gen_type_die_for_member): Likewise. (gen_subprogram_die): Update calls to get_decl_die. (gen_field_die): Change signature to handle variable-length records. Update calls to add_bit_offset_attribute and add_data_member_location_attribute. (gen_inheritance_die): Update call to add_data_member_location_attribute. (gen_decl_die): Change signature to handle variable-length records. Update call to gen_field_die. (gen_inheritance_die): Change signature to handle variable-length records. Update call to add_data_member_location_attribute. (is_variant_part): New. (analyze_discr_in_predicate): New. (get_discr_value): New. (analyze_variants_discr): New. (gen_variant_part): New. (gen_member_die): Update calls to gen_decl_die. Call instead gen_variant_part for variant parts. (gen_type_die_with_usage): Update calls to gen_decl_die. (process_scope_var): Likewise. (force_decl_die): Likewise. (declare_in_namespace): Likewise. (dwarf2out_decl): Likewise. (prune_unused_types_walk_loc_descr): New. (prune_unused_types_walk_attribs): Mark DIEs referenced by location descriptions and loc. descr. lists. (prune_unused_types_walk): Don't mark DWARF procedures by default. Mark variant parts since nothing is supposed to reference them. (dwarf2out_init): Allocate dwarf_proc_stack_usage_map. (dwarf2out_c_finalize): Deallocate and reset dwarf_proc_stack_usage_map. gcc/testsuite/ChangeLog: * gnat.dg/specs/debug1.ads: Update the expected number of DW_AT_artificial attribute in compiler output. From-SVN: r231762
2015-12-17Add a flag to control the balance between GNAT encodings and std. DWARFPierre-Marie de Rodat1-1/+3
In order to accomodate the debugger's support evolution for "new" DWARF constructs, we need to have an flag that controls the amount of GNAT encodings/standard DWARF information that is emitted in the debug info. Propagate this new parameter into the Ada front-end. gcc/ChangeLog: * common.opt (gnat_encodings): New variable (dwarf_gnat_encodings): New enum type. (fgnat_encodings): New option. * flag-types.h (enum dwarf_gnat_encodings): New. gcc/ada/ChangeLog: * gcc-interface/misc.c (gnat_encodings): Undefine macro and declare a global variable. (gnat_post_options): Initialize this global from options. From-SVN: r231761
2015-12-10re PR ada/48013 (generic instantiation breaks the No_Elaboration_Code ↵Eric Botcazou1-4/+29
restriction) PR ada/48013 * gcc-interface/trans.c (empty_stmt_list_p): New predicate. (gigi): Invoke it to compute the No_Elaboration_Code property. (insert_code_for): Do not insert the code if it's empty. From-SVN: r231515
2015-12-10trans.c (Call_to_gnu): Remove guard for NULL_EXPR.Eric Botcazou2-4/+3
* gcc-interface/trans.c (Call_to_gnu): Remove guard for NULL_EXPR. * gcc-interface/utils2.c (gnat_rewrite_reference) <ERROR_MARK>: Return the reference unmodified. <NULL_EXPR>: New case. Likewise. From-SVN: r231513
2015-12-10gigi.h (create_var_decl): Adjust comment.Eric Botcazou2-8/+20
* gcc-interface/gigi.h (create_var_decl): Adjust comment. (create_subprog_decl): Likewise. * gcc-interface/utils.c (create_var_decl): Likewise. (create_subprog_decl): Likewise. From-SVN: r231511
2015-12-08re PR c/48088 (-Werror=frame-larger-than=100 does not work as expected)Jakub Jelinek1-1/+4
PR c/48088 PR c/68657 * common.opt (Wframe-larger-than=): Add Warning. * opts.h (control_warning_option): Add ARG argument. * opts-common.c (cmdline_handle_error): New function. (read_cmdline_option): Use it. (control_warning_option): Likewise. Add ARG argument. If non-NULL, decode it if needed and pass through to handle_generated_option. Handle CLVC_ENUM like CLVC_BOOLEAN. * opts.c (common_handle_option): Adjust control_warning_option caller. (enable_warning_as_error): Likewise. c-family/ * c.opt (Wfloat-conversion, Wsign-conversion): Add Warning. * c-pragma.c (handle_pragma_diagnostic): Adjust control_warning_option caller. ada/ * gcc-interface/trans.c (Pragma_to_gnu): Adjust control_warning_option caller. testsuite/ * c-c++-common/pr68657-1.c: New test. * c-c++-common/pr68657-2.c: New test. * c-c++-common/pr68657-3.c: New test. * gcc.dg/cpp/warn-normalized-3.c: Use -Werror=normalized=nfc instead of -Werror=normalized= in dg-options. From-SVN: r231406
2015-12-06re PR ada/50048 ("cc1: note: obsolete option -I- used, please use -iquote ↵Eric Botcazou1-1/+2
instead" during bootstrap) gnattools/ PR ada/50048 * Makefile.in (ftop_srcdir): New variable. (INCLUDES_FOR_SUBDIR): Use -iquote and $(ftop_srcdir). gcc/ada/ PR ada/50048 * gcc-interface/Makefile.in (INCLUDES): Use -iquote. From-SVN: r231341
2015-12-06re PR ada/49944 (Bootstrapping on x86_64-pc-kfreebsd-gnu fails with ↵Ludovic Brenta1-6/+2
"s-taprop.adb:856:10: "pthread_attr_setaffinity_np" is undefined (more references follow)") PR ada/49944 * s-osinte-freebsd.ads: Minor reformatting. (Stack_Base_Available): Correct comments. * s-osinte-kfreebsd-gnu.ads (Time_Slice_Supported, nanosleep, clock_id_t, clock_gettime, Stack_Base_Available, Get_Page_Size, mprotect, pthread_mutexattr_setprotocol,pthread_mutexattr_getprotocol pthread_mutexattr_setprioceiling, pthread_mutexattr_getprioceiling, pthread_attr_setscope, pthread_attr_getscope, pthread_attr_setinheritsched, pthread_attr_getinheritsched, Time_Slice_Supported): Copy from s-osinte-freebsd.ads. * gcc-interface/Makefile.in (x86/kfreebsd): Use the POSIX version of the System.Task_Primitives.Operations package. From-SVN: r231333
2015-12-01* gcc-interface/Makefile.in (ADA_EXCLUDE_SRCS): Reorder.Eric Botcazou1-16/+18
From-SVN: r231104
2015-11-30* gcc-interface/trans.c (gigi): Fix initialization order.Eric Botcazou1-9/+10
From-SVN: r231068
2015-11-30gigi.h (create_var_decl): Adjust prototype.Eric Botcazou4-152/+160
* gcc-interface/gigi.h (create_var_decl): Adjust prototype. (create_subprog_decl): Likewise. * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Rename static_p into static_flag and add volatile_flag local variable. Do not locally change the type of a volatile object, except for the pointed-to type if the object is handled by reference. Adjust calls to create_var_decl. <E_Subprogram_Type>: Likewise for const and noreturn subprograms. (get_minimal_subprog_decl): Adjust call to create_subprog_decl. (elaborate_expression_1): Adjust call to create_var_decl. (gnat_to_gnu_field): Minor tweak. * gcc-interface/trans.c (gigi): Adjust calls to create_var_decl and create_subprog_decl. (build_raise_check): Likewise. (Subprogram_Body_to_gnu): Likewise. (create_temporary): Likewise. (Handled_Sequence_Of_Statements_to_gnu): Likewise. (Exception_Handler_to_gnu_gcc): Likewise. (Compilation_Unit_to_gnu): Likewise. (gnat_to_gnu): Likewise. * gcc-interface/utils.c (maybe_pad_type): Likewise. (create_var_decl): Add VOLATILE_FLAG parameter and handle it. (create_subprog_decl): Add CONST_FLAG and VOLATILE_FLAG parameters and handle them. From-SVN: r231065
2015-11-30gigi.h (is_simple_additive_expression): Declare.Eric Botcazou3-33/+120
* gcc-interface/gigi.h (is_simple_additive_expression): Declare. * gcc-interface/trans.c (struct range_check_info_d): Add DISP and NEG_P fields. (find_loop_for): Add DISP and NEG_P parameters with default value. Call is_simple_additive_expression to handle additive expressions. (Loop_Statement_to_gnu): Deal with displacement in range checks. (Raise_Error_to_gnu): Likewise. (gnat_to_gnu): Add call to find_loop_for. (is_simple_additive_expression): New function extracted from... (gnat_invariant_expr): ...here. Call it on the expression. From-SVN: r231064
2015-11-30* gcc-interface/utils2.c (gnat_invariant_expr): Add type conversions.Eric Botcazou1-1/+3
From-SVN: r231063
2015-11-30ada-tree.h (TYPE_MAX_ALIGN): New macro.Eric Botcazou4-66/+53
* gcc-interface/ada-tree.h (TYPE_MAX_ALIGN): New macro. * gcc-interface/decl.c (gnat_to_gnu_entity): Do not set PACKED to -2. Remove obsolete code setting the alignment on some atomic types. When the type has no alignment but needs strict alignment and has a size clause, compute a maximum alignment and set it on the type. (adjust_packed): Remove handling of -2 argument. Deal with TYPE_ALIGN and TYPE_MAX_ALIGN directly. (gnat_to_gnu_field): Do not document -2 as argument. (components_to_record): Likewise. * gcc-interface/utils.c (finish_record_type): Do not bump alignment of the record type beyond TYPE_MAX_ALIGN. Reset the latter on exit. * gcc-interface/Makefile.in (PICFLAG_FOR_TARGET): Move around. (GNATLIBCFLAGS_FOR_C): Reformat. (GCC_CFLAGS): Delete. From-SVN: r231062
2015-11-29re PR ada/68564 (Ada fails to bootstrap on sparc64-linux-gnu)Matthias Klose1-47/+4
2015-11-29 Matthias Klose <doko@ubuntu.com> PR ada/68564 * gcc-interface/Makefile.in: Fix powerpc/powerpc64* and mipsel/mips64el bitness detection. Merge the mipsel/mips64el definitions into one. From-SVN: r231051
2015-11-28re PR ada/68564 (Ada fails to bootstrap on sparc64-linux-gnu)Matthias Klose1-1/+1
2015-11-28 Matthias Klose <doko@ubuntu.com> PR ada/68564 * gcc-interface/Makefile.in: Fix sparc/sparc64 bitness detection. From-SVN: r231028
2015-11-24DWARF: materialize subprogram renamings in Ada as imported declarationsPierre-Marie de Rodat1-0/+7
... so that debugger users can reference them instead of the renamed subprograms. This is in accordance with the DWARF specification: the section 3.2.3 (Imported (or Renamed) Declaration Entities) allows DW_TAG_imported_declaration DIEs to be used "as a general means to rename or provide an alias for an entity regardless of the context in which the importing declaration or the imported entity occur." (wording from the DWARFv3 and DWARFv4 specifications, allowed in DWARFv2). gcc/ada/ChangeLog: * gcc-interface/utils.c (gnat_write_global_declarations): Output debugging information for top-level imported declarations. gcc/ChangeLog: * dwarf2out.c (gen_decl_die): Generate DW_TAG_imported_* instead of DW_TAG_namespace for IMPORTED_DECL declarations. Call dwarf2out_imported_module_or_decl_1 for all DWARF versions as this function already takes care of checking what it can emit. Bootstrapped, regtested and checked with GDB's testsuite on x86_64-linux. From-SVN: r230821
2015-11-24decl.c (gnat_to_gnu_entity): In ASIS mode, do a minimal translation for root ↵Eric Botcazou2-10/+55
types with discriminants. * gcc-interface/decl.c (gnat_to_gnu_entity) <Concurrent types>: In ASIS mode, do a minimal translation for root types with discriminants. * gcc-interface/trans.c (gnat_to_gnu) <N_Subunit>: Move around. <N_Entry_Body, N_Protected_Body, N_Task_Body>: Likewise. In ASIS mode, process the declarations attached to the body. From-SVN: r230792
2015-11-24trans.c (gnat_to_gnu): In type_annotate_only mode, do not build a NULL_EXPR ↵Eric Botcazou1-0/+1
for an N_Expanded_Name. * gcc-interface/trans.c (gnat_to_gnu): In type_annotate_only mode, do not build a NULL_EXPR for an N_Expanded_Name. From-SVN: r230791
2015-11-24decl.c (is_cplusplus_method): Check that the type of the first parameter ↵Eric Botcazou1-4/+19
(indirectly) has C++ convention too. * gcc-interface/decl.c (is_cplusplus_method): Check that the type of the first parameter (indirectly) has C++ convention too. From-SVN: r230788
2015-11-23opt.ads (Exception_Mechanism): Now three values: Front_End_SJLJ, ↵Olivier Hainque3-34/+41
Back_End_SJLJ and Back_End_ZCX. 2015-11-23 Olivier Hainque <hainque@adacore.com> Eric Botcazou <botcazou@adacore.com> * opt.ads (Exception_Mechanism): Now three values: Front_End_SJLJ, Back_End_SJLJ and Back_End_ZCX. (Back_End_Exceptions, Front_End_Exceptions, ZCX_Exceptions, SJLJ_Exceptions): New functions, reflecting properties of the current Exception_Mechanism. * opt.adb: Implement the new functions. * fe.h: Bind the new Exception_Mechanism and helper functions for gigi. * exp_ch11.adb (Expand_At_End_Handler): Replace test on mechanism by use of property helper and update comments. (Expand_Exception_Handlers): Replace tests on mechanism by use of helper. Restrict Abort_Defer to ZCX specifically. * exp_ch9.adb (Expand_N_Asynchronous_Select): Replace tests on mechanism by calls to helper functions. Abort_Undefer for ZCX only, paired with Expand_Exception_Handlers. * exp_sel.adb (Build_Abort_Block_Handler): Replace tests on mechanism by calls to helper functions. Abort_Undefer for ZCX only, paired with Expand_Exception_Handlers. * lib-writ.ads (P line documentation): Add entry for "FX", representative of unit compiled with Frontend_Exceptions True. * lib-writ.adb (Output_Main_Program_Line): Add "FX" on P line if compiled with Frontend_Exceptions True. * ali.ads (ALIs_Record): Ada a Frontend_Exceptions component, to reflect whether the ALI file contained an "FX" indication on the P line. (Frontend_Exceptions_Specified): New boolean, to keep track of whether at least an FX ALI file is in the closure. * ali.adb (Scan_ALI): Handle "FX" on the P line. (Initialize_ALI): Initialize Frontend_Exceptions_Specified to False. * targparm.ads: Update desription of exception schemes. (Frontend_Exceptions_On_Target): New flag, reflect Frontend_Exceptions set to True in system.ads, or not set at all. * targparm.adb (Targparm_Tags): Add FEX to convey Frontend_Exceptions. Rename ZCD to ZCX for consistency. (FEX_Str, Targparm_Str, Get_Target_Parameters): Adjust accordingly. * gnat1drv.adb (Adjust_Global_Switches): Adjust Exception_Mechanism setting, now from combination of Frontend_Exceptions and ZCX_By_Default. * bcheck.adb (Check_Consistent_Zero_Cost_Exception_Handling): Rename as ... (Check_Consistent_Exception_Handling): Check consistency of both ZCX_By_Default and Frontend_Exceptions. (Check_Configuration_Consistency): Check_Consistent_Exception_Handling if either flag was set at least once. * make.adb (Check): Remove processing of a possible -fsjlj coming from lang-specs.h. * gnatlink.adb (Gnatlin): Likewise. * gcc-interface/Makefile.in (gnatlib-sjlj/zcx): Now set both ZCX_By_Default and Frontend_Exceptions. * gcc-interface/decl.c (gnat_to_gnu_entity, case E_Variable): Use eh property helper to test for back-end exceptions. Adjust mechanism name when testing for front-end sjlj. (case E_Procedure): Likewise. * gcc-interface/trans.c (Handled_Sequence_Of_Statements_to_gnu): Likewise, and rename local variables. (Exception_Handler_to_gnu_sjlj): Rename as Exception_Handler_to_gnu_fe_sjlj. (Exception_Handler_to_gnu_zcx): Rename as Exception_Handler_to_gnu_gcc and adjust tests on eh mechanisms to use property helpers or correct mechanism name. Co-Authored-By: Eric Botcazou <ebotcazou@adacore.com> From-SVN: r230752
2015-11-18trans.c (elaborate_all_entities_for_package): New function extracted from...Eric Botcazou1-29/+73
* gcc-interface/trans.c (elaborate_all_entities_for_package): New function extracted from... Recurse on packages. (elaborate_all_entities): ...here. Call it on packages. From-SVN: r230576
2015-11-18ada-tree.h (DECL_INVARIANT_P): New macro.Eric Botcazou6-316/+359
* gcc-interface/ada-tree.h (DECL_INVARIANT_P): New macro. * gcc-interface/gigi.h (enum standard_datatypes): Remove ADT_longjmp_decl and add ADT_not_handled_by_others_decl. (longjmp_decl): Delete. (not_handled_by_others_decl): New macro. (build_simple_component_ref): Delete. (build_component_ref): Adjust prototype. * gcc-interface/decl.c (gnat_to_gnu_entity): Adjust calls to build_component_ref. (gnat_to_gnu_field): Set DECL_INVARIANT_P on discriminants without default value. * gcc-interface/trans.c (gigi): Reorder initialization sequence and add not_handled_by_others_decl. (Attribute_to_gnu): Adjust calls to build_component_ref. (Subprogram_Body_to_gnu): Likewise. (Call_to_gnu): Likewise. (Exception_Handler_to_gnu_sjlj): Likewise. (gnat_to_gnu): Likewise. (range_check_info_d): Add inserted_cond field. (Loop_Statement_to_gnu): Make two passes on the recorded range checks. (build_noreturn_cond): New static function. (Raise_Error_to_gnu): Record range checks in loops at -O1 and above. (make_invariant): New static function. (Loop_Statement_to_gnu): Use it to compute invariant expressions for the loop bounds if possible, but do not require it if loop unswitching is enabled. * gcc-interface/utils.c (convert_to_fat_pointer): Likewise. (convert): Likewise. (maybe_unconstrained_array): Likewise. Call it instead of build_simple_component_ref and add guard for CONSTRUCTORs. (unchecked_convert): Likewise. * gcc-interface/utils2.c (compare_fat_pointers): Likewise. (build_simple_component_ref): Remove COMPONENT parameter, unify code dealing with VIEW_CONVERT_EXPR and make it more general, remove special treatment for CONSTRUCTORs of template types. (build_component_ref): Remove COMPONENT parameter and adjust call to build_simple_component_ref. (maybe_wrap_malloc): Likewise. (build_allocator): Likewise. (gnat_invariant_expr): Look through overflow checks, deal with addition and subtraction of constants and take into account DECL_INVARIANT_P for the COMPONENT_REF case. From-SVN: r230575
2015-11-18misc.c: Move global variables to the top of the file.Eric Botcazou1-28/+35
* gcc-interface/misc.c: Move global variables to the top of the file. (gnat_handle_option): Remove obsolete ATTRIBUTE_UNUSED markers. (gnat_init_options): Minor tweak. (gnat_post_options): Set -fstrict-overflow if not done by the user. (internal_error_function): Minor reformatting. From-SVN: r230569
2015-11-18decl.c (gnat_to_gnu_entity): Use case #1 for the renaming of an address.Eric Botcazou1-2/+3
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Use case #1 for the renaming of an address. From-SVN: r230560
2015-11-18trans.c (fold_constant_decl_in_expr): If the index is not itself constant ↵Eric Botcazou1-0/+3
then bail out. * gcc-interface/trans.c (fold_constant_decl_in_expr) <ARRAY_REF>: If the index is not itself constant then bail out. From-SVN: r230558
2015-11-18Minor code clean ups.Arnaud Charlet1-11/+9
From-SVN: r230537
2015-11-13Source range tracking in libcpp and C FE, with bit-packing optimizationDavid Malcolm1-1/+2
This patch combines: [PATCH 05/10] Add ranges to libcpp tokens (via ad-hoc data, unoptimized) [PATCH 06/10] Track expression ranges in C frontend [PATCH 07/10] Add plugin to recursively dump the source-ranges in a tree (v2) [PATCH 08/10] Wire things up so that libcpp users get token underlines [PATCH 09/10] Delay some resolution of ad-hoc locations, preserving ranges [PATCH 10/10] Compress short ranges into source_location [PATCH] libcpp: add examples to source_location description along with fixes for the nits identified during review. gcc/ChangeLog: * Makefile.in (OBJS): Add gcc-rich-location.o. * diagnostic.c (diagnostic_append_note): Pass line_table to rich_location ctor. (emit_diagnostic): Likewise. (inform): Likewise. (inform_n): Likewise. (warning): Likewise. (warning_at): Likewise. (warning_n): Likewise. (pedwarn): Likewise. (permerror): Likewise. (error): Likewise. (error_n): Likewise. (error_at): Likewise. (sorry): Likewise. (fatal_error): Likewise. (internal_error): Likewise. (internal_error_no_backtrace): Likewise. (source_range::debug): Likewise. * gcc-rich-location.c: New file. * gcc-rich-location.h: New file. * genmatch.c (fatal_at): Pass line_table to rich_location ctor. (warning_at): Likewise. * gimple.h (gimple_set_block): Use set_block function. * input.c (dump_line_table_statistics): Dump stats on how many ranges were optimized vs how many needed ad-hoc table. (write_digit_row): Add "map" param; use its range_bits to calculate the per-character offset. (dump_location_info): Print the range and column bits for each ordinary map. Use the range bits to calculate the per-character offset. Pass the map as a new param to the various calls to write_digit_row. Eliminate uses of ORDINARY_MAP_NUMBER_OF_COLUMN_BITS. * print-tree.c (print_node): Print any source range information. * rtl-error.c (diagnostic_for_asm): Likewise. * toplev.c (general_init): Initialize line_table's default_range_bits. * tree-cfg.c (move_block_to_fn): Likewise. (move_block_to_fn): Likewise. * tree-inline.c (copy_phis_for_bb): Likewise. * tree.c (tree_set_block): Likewise. (get_pure_location): New function. (set_source_range): New functions. (set_block): New function. (set_source_range): New functions. * tree.h (CAN_HAVE_RANGE_P): New. (EXPR_LOCATION_RANGE): New. (EXPR_HAS_RANGE): New. (get_expr_source_range): New inline function. (DECL_LOCATION_RANGE): New. (set_source_range): New decls. (get_decl_source_range): New inline function. gcc/ada/ChangeLog: * gcc-interface/trans.c (Sloc_to_locus): Add line_table param when calling linemap_position_for_line_and_column. gcc/c-family/ChangeLog: * c-common.c (c_fully_fold_internal): Capture existing souce_range, and store it on the result. * c-opts.c (c_common_init_options): Set global_dc->colorize_source_p. gcc/c/ChangeLog: * c-decl.c (warn_defaults_to): Pass line_table to rich_location ctor. * c-errors.c (pedwarn_c99): Likewise. (pedwarn_c90): Likewise. * c-parser.c (set_c_expr_source_range): New functions. (c_token::get_range): New method. (c_token::get_finish): New method. (c_parser_expr_no_commas): Call set_c_expr_source_range on the ret based on the range from the start of the LHS to the end of the RHS. (c_parser_conditional_expression): Likewise, based on the range from the start of the cond.value to the end of exp2.value. (c_parser_binary_expression): Call set_c_expr_source_range on the stack values for TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR. (c_parser_cast_expression): Call set_c_expr_source_range on ret based on the cast_loc through to the end of the expr. (c_parser_unary_expression): Likewise, based on the op_loc through to the end of op. (c_parser_sizeof_expression) Likewise, based on the start of the sizeof token through to either the closing paren or the end of expr. (c_parser_postfix_expression): Likewise, using the token range, or from the open paren through to the close paren for parenthesized expressions. (c_parser_postfix_expression_after_primary): Likewise, for various kinds of expression. * c-tree.h (struct c_expr): Add field "src_range". (c_expr::get_start): New method. (c_expr::get_finish): New method. (set_c_expr_source_range): New decls. * c-typeck.c (parser_build_unary_op): Call set_c_expr_source_range on ret for prefix unary ops. (parser_build_binary_op): Likewise, running from the start of arg1.value through to the end of arg2.value. gcc/cp/ChangeLog: * error.c (pedwarn_cxx98): Pass line_table to rich_location ctor. gcc/fortran/ChangeLog: * error.c (gfc_warning): Pass line_table to rich_location ctor. (gfc_warning_now_at): Likewise. (gfc_warning_now): Likewise. (gfc_error_now): Likewise. (gfc_fatal_error): Likewise. (gfc_error): Likewise. (gfc_internal_error): Likewise. gcc/testsuite/ChangeLog: * gcc.dg/diagnostic-token-ranges.c: New file. * gcc.dg/diagnostic-tree-expr-ranges-2.c: New file. * gcc.dg/plugin/diagnostic-test-expressions-1.c: New file. * gcc.dg/plugin/diagnostic-test-show-trees-1.c: New file. * gcc.dg/plugin/diagnostic_plugin_show_trees.c: New file. * gcc.dg/plugin/diagnostic_plugin_test_show_locus.c (get_loc): Add line_table param when calling linemap_position_for_line_and_column. (test_show_locus): Pass line_table to rich_location ctors. (plugin_init): Remove setting of global_dc->colorize_source_p. * gcc.dg/plugin/diagnostic_plugin_test_tree_expression_range.c: New file. * gcc.dg/plugin/plugin.exp (plugin_test_list): Add diagnostic_plugin_test_tree_expression_range.c, diagnostic-test-expressions-1.c, diagnostic_plugin_show_trees.c, and diagnostic-test-show-trees-1.c. libcpp/ChangeLog: * errors.c (cpp_diagnostic): Pass pfile->line_table to rich_location ctor. (cpp_diagnostic_with_line): Likewise. * include/cpplib.h (struct cpp_token): Update comment for src_loc to indicate that the range of the token is "baked into" the source_location. * include/line-map.h (source_location): Update the descriptive comment to reflect the packing scheme for short ranges, adding worked examples of location encoding. (struct line_map_ordinary): Drop field "column_bits" in favor of field "m_column_and_range_bits"; add field "m_range_bits". (ORDINARY_MAP_NUMBER_OF_COLUMN_BITS): Delete. (location_adhoc_data): Add source_range field. (struct line_maps): Add fields "default_range_bits", "num_optimized_ranges" and "num_unoptimized_ranges". (get_combined_adhoc_loc): Add source_range param. (get_range_from_loc): New declaration. (pure_location_p): New prototype. (COMBINE_LOCATION_DATA): Add source_range param. (SOURCE_LINE): Update for renaming of column_bits. (SOURCE_COLUMN): Likewise. Shift the column right by the map's range_bits. (LAST_SOURCE_LINE_LOCATION): Update for renaming of column_bits. (linemap_position_for_line_and_column): Add line_maps * params. (rich_location::rich_location): Likewise. * lex.c (_cpp_lex_direct): Capture the range of the token, baking it into token->src_loc via a call to COMBINE_LOCATION_DATA. * line-map.c (LINE_MAP_MAX_COLUMN_NUMBER): Reduce from 1U << 17 to 1U << 12. (location_adhoc_data_hash): Add the src_range into the hash value. (location_adhoc_data_eq): Require equality of the src_range values. (can_be_stored_compactly_p): New function. (get_combined_adhoc_loc): Add src_range param, and store it, via a bit-packing scheme for short ranges, otherwise within the lookaside table. Remove the requirement that data is non-NULL. (get_range_from_adhoc_loc): New function. (get_range_from_loc): New function. (pure_location_p): New function. (linemap_add): Ensure that start_location has zero for the range_bits, unless we're past LINE_MAP_MAX_LOCATION_WITH_COLS. Initialize range_bits to zero. Assert that the start_location is "pure". (linemap_line_start): Assert that the column_and_range_bits >= range_bits. Update determinination of whether we need to start a new map using the effective column bits, without the range bits. Use the set's default_range_bits in new maps, apart from those with column_bits == 0, which should also have 0 range_bits. Increase the column bits for new maps by the range bits. When adding lines to an existing map, use set->highest_line directly rather than offsetting highest by SOURCE_COLUMN. Add assertions to sanity-check the return value. (linemap_position_for_column): Offset to_column by range_bits. Update set->highest_location if necessary. (linemap_position_for_line_and_column): Add line_maps * param. Update the calculation to offset the column by range_bits, and conditionalize it on being <= LINE_MAP_MAX_LOCATION_WITH_COLS. Bound it by LINEMAPS_MACRO_LOWEST_LOCATION. Update set->highest_location if necessary. (linemap_position_for_loc_and_offset): Handle ad-hoc locations; pass "set" to linemap_position_for_line_and_column. (linemap_macro_map_loc_unwind_toward_spelling): Add line_maps param. Handle ad-hoc locations. (linemap_location_in_system_header_p): Pass on "set" to call to linemap_macro_map_loc_unwind_toward_spelling. (linemap_macro_loc_to_spelling_point): Retain ad-hoc locations. Pass on "set" to call to linemap_macro_map_loc_unwind_toward_spelling. (linemap_resolve_location): Retain ad-hoc locations. Pass on "set" to call to linemap_macro_map_loc_unwind_toward_spelling. (linemap_unwind_toward_expansion): Pass on "set" to call to linemap_macro_map_loc_unwind_toward_spelling. (linemap_expand_location): Extract the data pointer before extracting the location. (rich_location::rich_location): Add line_maps param; use it to extract the range from the source_location. * location-example.txt: Regenerate, showing new representation. From-SVN: r230331
2015-11-13Minor clean up.Arnaud Charlet1-0/+1
From-SVN: r230307
2015-11-12sem_ch13.adb (Analyze_Attribute_Definition_Clause): For a variable, if this ↵Eric Botcazou1-15/+12
is not an overlay, set on Treat_As_Volatile on it. 2015-11-12 Eric Botcazou <ebotcazou@adacore.com> * sem_ch13.adb (Analyze_Attribute_Definition_Clause): For a variable, if this is not an overlay, set on Treat_As_Volatile on it. * gcc-interface/decl.c (E_Variable): Do not force the type to volatile for address clauses. Tweak and adjust various RM references. 2015-11-12 Eric Botcazou <ebotcazou@adacore.com> * checks.ads: Minor comment fix. From-SVN: r230233
2015-11-12einfo.ads (Overlays_Constant): Document usage for E_Constant.Eric Botcazou1-8/+0
2015-11-12 Eric Botcazou <ebotcazou@adacore.com> * einfo.ads (Overlays_Constant): Document usage for E_Constant. * freeze.adb (Warn_Overlay): Small reformatting. (Check_Address_Clause): Deal specifically with deferred constants. For a variable or a non-imported constant overlaying a constant object and with initialization value, either remove the initialization or issue a warning. Fix a couple of typos. * sem_util.adb (Note_Possible_Modification): Overhaul the condition for the warning on modified constants and use Find_Overlaid_Entity instead of doing it manually. * sem_ch13.adb (Analyze_Attribute_Definition_Clause): Compute and set Overlays_Constant once on entry. Do not treat the overlaid entity as volatile. Do not issue the warning on modified constants here. * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Constant>: Remove over-restrictive condition for the special treatment of deferred constants. <E_Variable>: Remove obsolete associated code. From-SVN: r230229
2015-11-12trans.c (gnat_to_gnu): Do not materialize renamed subprograms if only ↵Eric Botcazou2-3/+4
annotating types. 2015-11-12 Eric Botcazou <ebotcazou@adacore.com> * gcc-interface/trans.c (gnat_to_gnu) <N_Subprogram_Renaming_Decl>: Do not materialize renamed subprograms if only annotating types. From-SVN: r230228
2015-11-12decl.c (gnat_to_gnu_entity): Create IMPORTED_DECL nodes to describe the ↵Arnaud Charlet5-5/+77
subprogram renamings which are... 2015-11-12 Pierre-Marie de Rodat <derodat@adacore.com> * gcc-interface/decl.c (gnat_to_gnu_entity): Create IMPORTED_DECL nodes to describe the subprogram renamings which are relevant at debug time. * gcc-interface/gigi.h (get_debug_scope): Add declaration. * gcc-interface/trans.c (Identifier_to_gnu): Consider N_Defining_Operator_Symbol as valid entities. (gnat_to_gnu): Handle N_Defining_Operator_Symbol the same way as other entities. Introduce a specific handling for N_Subprogram_Renaming_Declaration: call gnat_to_gnu_entity on the entity defined for relevant ones. (process_decls): Process subprogram renaming declarations during the second pass only. * gcc-interface/utils.c (get_debug_scope): Make it external. Consider N_Defining_Operator_Symbol as valid entities. (gnat_write_global_declarations): Output debugging information for top-level imported declarations. * gcc-interface/Makefile.in: Fix typo. From-SVN: r230227
2015-11-11decl.c: Remove unused header files.Andrew MacLeod5-31/+0
ada * gcc-interface/decl.c: Remove unused header files. * gcc-interface/misc.c: Likewise. * gcc-interface/targtyps.c: Likewise. * gcc-interface/trans.c: Likewise. * gcc-interface/utils.c: Likewise. c * c-array-notation.c: Remove unused header files. * c-aux-info.c: Likewise. * c-convert.c: Likewise. * c-decl.c: Likewise. * c-errors.c: Likewise. * c-lang.c: Likewise. * c-objc-common.c: Likewise. * c-parser.c: Likewise. * c-typeck.c: Likewise. * gccspec.c: Likewise. c-family * array-notation-common.c: Remove unused header files. * c-ada-spec.c: Likewise. * c-cilkplus.c: Likewise. * c-common.c: Likewise. * c-cppbuiltin.c: Likewise. * c-dump.c: Likewise. * c-format.c: Likewise. * c-gimplify.c: Likewise. * c-indentation.c: Likewise. * c-lex.c: Likewise. * c-omp.c: Likewise. * c-opts.c: Likewise. * c-pch.c: Likewise. * c-ppoutput.c: Likewise. * c-pragma.c: Likewise. * c-pretty-print.c: Likewise. * c-semantics.c: Likewise. * c-ubsan.c: Likewise. * cilk.c: Likewise. * stub-objc.c: Likewise. cp * call.c: Remove unused header files. * class.c: Likewise. * constexpr.c: Likewise. * cp-array-notation.c: Likewise. * cp-cilkplus.c: Likewise. * cp-gimplify.c: Likewise. * cp-lang.c: Likewise. * cp-objcp-common.c: Likewise. * cp-ubsan.c: Likewise. * cvt.c: Likewise. * cxx-pretty-print.c: Likewise. * decl.c: Likewise. * decl2.c: Likewise. * dump.c: Likewise. * error.c: Likewise. * except.c: Likewise. * expr.c: Likewise. * friend.c: Likewise. * g++spec.c: Likewise. * init.c: Likewise. * lambda.c: Likewise. * lex.c: Likewise. * mangle.c: Likewise. * method.c: Likewise. * name-lookup.c: Likewise. * optimize.c: Likewise. * parser.c: Likewise. * pt.c: Likewise. * ptree.c: Likewise. * repo.c: Likewise. * rtti.c: Likewise. * search.c: Likewise. * semantics.c: Likewise. * tree.c: Likewise. * typeck.c: Likewise. * typeck2.c: Likewise. * vtable-class-hierarchy.c: Likewise. Fortran * array.c: Remove unused header files. * convert.c: Likewise. * cpp.c: Likewise. * decl.c: Likewise. * f95-lang.c: Likewise. * frontend-passes.c: Likewise. * iresolve.c: Likewise. * match.c: Likewise. * module.c: Likewise. * options.c: Likewise. * parse.c: Likewise. * target-memory.c: Likewise. * trans-array.c: Likewise. * trans-common.c: Likewise. * trans-const.c: Likewise. * trans-decl.c: Likewise. * trans-expr.c: Likewise. * trans-intrinsic.c: Likewise. * trans-io.c: Likewise. * trans-openmp.c: Likewise. * trans-stmt.c: Likewise. * trans-types.c: Likewise. * trans.c: Likewise. go * go-backend.c: Remove unused header files. * go-gcc.cc: Likewise. * go-lang.c: Likewise. * gospec.c: Likewise. Java * boehm.c: Remove unused header files. * builtins.c: Likewise. * class.c: Likewise. * constants.c: Likewise. * decl.c: Likewise. * except.c: Likewise. * expr.c: Likewise. * java-gimplify.c: Likewise. * jcf-dump.c: Likewise. * jcf-io.c: Likewise. * jcf-parse.c: Likewise. * jvgenmain.c: Likewise. * lang.c: Likewise. * mangle.c: Likewise. * mangle_name.c: Likewise. * resource.c: Likewise. * typeck.c: Likewise. * verify-glue.c: Likewise. * verify-impl.c: Likewise. * zextract.c: Likewise. jit * dummy-frontend.c: Remove unused header files. * jit-builtins.c: Likewise. * jit-playback.c: Likewise. * jit-recording.c: Likewise. * jit-spec.c: Likewise. * libgccjit.c: Likewise. lto * lto-lang.c: Remove unused header files. * lto-object.c: Likewise. * lto-partition.c: Likewise. * lto-symtab.c: Likewise. * lto.c: Likewise. objc * objc-act.c: Remove unused header files. * objc-encoding.c: Likewise. * objc-gnu-runtime-abi-01.c: Likewise. * objc-lang.c: Likewise. * objc-map.c: Likewise. * objc-next-runtime-abi-01.c: Likewise. * objc-next-runtime-abi-02.c: Likewise. * objc-runtime-shared-support.c: Likewise. objcp * objcp-decl.c: Remove unused header files. * objcp-lang.c: Likewise. From-SVN: r230166
2015-11-08Merge of the scalar-storage-order branch.Eric Botcazou5-23/+128
From-SVN: r229965