aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/gcc-interface
AgeCommit message (Collapse)AuthorFilesLines
2015-06-03trans.c (gnat_to_gnu): Fix typo in latest change.Eric Botcazou1-1/+1
* gcc-interface/trans.c (gnat_to_gnu) <N_Simple_Return_Statement>: Fix typo in latest change. From-SVN: r224066
2015-06-01* gcc-interface/Makefile.in: Fix ARM/Darwin configuration.Eric Botcazou1-3/+4
From-SVN: r223924
2015-06-01utils.c (scale_by_factor_of): When handling a function call expression, ↵Pierre-Marie de Rodat1-2/+28
process the corresponding function body. * gcc-interface/utils.c (scale_by_factor_of): When handling a function call expression, process the corresponding function body. Also handle potential addends. From-SVN: r223921
2015-06-01decl.c (gnat_to_gnu_entity): Replace pointer types with references ones for ↵Pierre-Marie de Rodat1-2/+2
functions that return references. * gcc-interface/decl.c (gnat_to_gnu_entity): Replace pointer types with references ones for functions that return references. From-SVN: r223920
2015-06-01decl.c (gnat_to_gnu_entity): For a definition of a type coming from a ↵Eric Botcazou1-3/+10
limited_with... * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Incomplete_Type>: For a definition of a type coming from a limited_with, get to the full view if it is not in the main code unit. From-SVN: r223919
2015-06-01winnt.c (i386_pe_encode_section_info): Remove obsolete kludge.Eric Botcazou1-6/+16
* config/i386/winnt.c (i386_pe_encode_section_info) <FUNCTION_DECL>: Remove obsolete kludge. ada/ * gcc-interface/utils.c (create_var_decl_1): If an assembler name is specified, let the target mangle it before settting. (create_subprog_decl): Likewise and move this treatment last. From-SVN: r223918
2015-06-01lang-specs.h (TARGET_VXWORKS_RTP): Simplify and add trailing space.Eric Botcazou1-1/+1
* gcc-interface/lang-specs.h (TARGET_VXWORKS_RTP): Simplify and add trailing space. From-SVN: r223917
2015-06-01lang-specs.h (TARGET_VXWORKS_RTP): Move substitution to before first -gnatez ↵Eric Botcazou1-2/+2
switch. * gcc-interface/lang-specs.h (TARGET_VXWORKS_RTP): Move substitution to before first -gnatez switch. From-SVN: r223916
2015-06-01decl.c (gnat_to_gnu_entity): If the record has a parent field and a ↵Eric Botcazou1-0/+6
representation clause... * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: If the record has a parent field and a representation clause, make sure that it is properly aligned. From-SVN: r223915
2015-06-01trans.c (lvalue_required_p): Deal with character and enumeration literals as ↵Eric Botcazou1-5/+8
index values. * gcc-interface/trans.c (lvalue_required_p) <N_Indexed_Component>: Deal with character and enumeration literals as index values. From-SVN: r223913
2015-06-01gigi.h (build_simple_component_ref): Declare.Eric Botcazou4-49/+111
* gcc-interface/gigi.h (build_simple_component_ref): Declare. * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Deal with address clause on aliased object with unconstrained nominal subtype. Mark the aligning variable as artificial, do not convert the address expression immediately but mark it as constant instead. * gcc-interface/utils.c (convert): If the target type contains a template, be prepared for an empty array. (maybe_unconstrained_array): Likewise. * gcc-interface/utils2.c (known_alignment) <POINTER_PLUS_EXPR>: Deal with the pattern built for aligning types. <INTEGER_CST>: Do not cap the value at BIGGEST_ALIGNMENT. (build_simple_component_ref): Make public. If the base object is a constructor that contains a template, fold the result field by field. From-SVN: r223912
2015-05-28utils.c (max_size): Add special code to deal with the subtraction of a ↵Eric Botcazou1-1/+15
"negative" value in an... * gcc-interface/utils.c (max_size) <tcc_binary>: Add special code to deal with the subtraction of a "negative" value in an unsigned type. From-SVN: r223837
2015-05-28decl.c (gnat_to_gnu_entity): Do not error out on a return type which has a ↵Eric Botcazou1-1/+2
size that overflows if... * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Subprogram_Type>: Do not error out on a return type which has a size that overflows if the return is done by invisible reference. From-SVN: r223836
2015-05-28utils.c (gnat_pushdecl): Reunify the handling of array and pointer types wrt ↵Eric Botcazou1-32/+30
DECL_ORIGINAL_TYPE and... * gcc-interface/utils.c (gnat_pushdecl): Reunify the handling of array and pointer types wrt DECL_ORIGINAL_TYPE and adjust left and right. From-SVN: r223835
2015-05-28gigi.h (gnat_stabilize_reference): Adjust.Eric Botcazou4-138/+188
* gcc-interface/gigi.h (gnat_stabilize_reference): Adjust. (rewrite_fn): Remove third parameter. (type_is_padding_self_referential): New inline predicate. (return_type_with_variable_size_p): Likewise. * gcc-interface/decl.c (allocatable_size_p): More around. (cannot_be_superflat_p): Rename into... (cannot_be_superflat ): ...this. (initial_value_needs_conversion): New predicate. (gnat_to_gnu_entity): Invoke type_is_padding_self_referential, initial_value_needs_conversion and adjust to above renaming. For a renaming, force the materialization if the inner expression is compound. Adjust calls to elaborate_reference and build a compound expression if needed. (struct er_dat): Add N field. (elaborate_reference_1): Remove N parameter and adjust. (elaborate_reference): Add INIT parameter and pass it in the call to gnat_rewrite_reference. Adjust initial expression. * gcc-interface/trans.c (Call_to_gnu): Treat renamings the same way as regular object declarations when it comes to creating a temporary. Adjust call to gnat_stabilize_reference and build a compound expression if needed. Invoke return_type_with_variable_size_p. (gnat_to_gnu): Invoke type_is_padding_self_referential. In case #4, return a call to a function unmodified if it returns with variable size and is also the initial expression in an object declaration. * gcc-interface/utils2.c (build_binary_op) <INIT_EXPR>: Use the RHS' type if it is a call to a function that returns with variable size. (build_unary_op): Invoke type_is_padding_self_referential. (gnat_stabilize_reference_1): Remove N parameter and adjust. (gnat_stabilize_reference): Add INIT parameter and pass it in the call to gnat_rewrite_reference. (gnat_rewrite_reference): Remove N, add INIT parameter and adjust. <COMPOUND_EXPR>: New case. From-SVN: r223834
2015-05-27Add --enable-default-pie option to GCC configureH.J. Lu1-0/+3
Add --enable-default-pie option to configure GCC to generate PIE by default. gcc/ * Makefile.in (COMPILER): Add @NO_PIE_CFLAGS@. (BUILD_CFLAGS): Likewise. (BUILD_CXXFLAGS): Likewise. (LINKER): Add @NO_PIE_FLAG@. (BUILD_LDFLAGS): Likewise. (libgcc.mvars): Set NO_PIE_CFLAGS to -fno-PIE for --enable-default-pie. * common.opt (fPIE): Initialize to -1. (fpie): Likewise. (no-pie): New option. (pie): Replace "Negative(shared)" with "Negative(no-pie)". * configure.ac: Add --enable-default-pie. (NO_PIE_CFLAGS): New. Check if -fno-PIE works. AC_SUBST. (NO_PIE_FLAG): New. Check if -no-pie works. AC_SUBST. * defaults.h (DEFAULT_FLAG_PIE): New. Default PIE to -fPIE. * gcc.c (NO_PIE_SPEC): New. (PIE_SPEC): Likewise. (NO_FPIE1_SPEC): Likewise. (FPIE1_SPEC): Likewise. (NO_FPIE2_SPEC): Likewise. (FPIE2_SPEC): Likewise. (NO_FPIE2_SPEC): Likewise. (FPIE_SPEC): Likewise. (NO_FPIE_SPEC): Likewise. (NO_FPIC1_SPEC): Likewise. (FPIC1_SPEC): Likewise. (NO_FPIC2_SPEC): Likewise. (FPIC2_SPEC): Likewise. (NO_FPIC2_SPEC): Likewise. (FPIC_SPEC): Likewise. (NO_FPIC_SPEC): Likewise. (NO_FPIE1_AND_FPIC1_SPEC): Likewise. (FPIE1_OR_FPIC1_SPEC): Likewise. (NO_FPIE2_AND_FPIC2_SPEC): Likewise. (FPIE2_OR_FPIC2_SPEC): Likewise. (NO_FPIE_AND_FPIC_SPEC): Likewise. (FPIE_OR_FPIC_SPEC): Likewise. (LD_PIE_SPEC): Likewise. (LINK_PIE_SPEC): Handle -no-pie. Use PIE_SPEC and LD_PIE_SPEC. * opts.c (finish_options): Update opts->x_flag_pie if it is -1. * config/darwin.h (PIE_SPEC): Renamed to ... (DARWIN_PIE_SPEC): This. (LINK_SPEC): Replace PIE_SPEC with DARWIN_PIE_SPEC. * config/darwin9.h (PIE_SPEC): Renamed to ... (DARWIN_PIE_SPEC): This. * config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Use PIE_SPEC and NO_PIE_SPEC if HAVE_LD_PIE is defined. * config/openbsd.h (ASM_SPEC): Use FPIE1_OR_FPIC1_SPEC and FPIE2_OR_FPIC2_SPEC. * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise. * config/m68k/openbsd.h (ASM_SPEC): Likewise. * gcc/config/sol2.h (ASM_PIC_SPEC): Likewise. * config/arm/freebsd.h (SUBTARGET_EXTRA_ASM_SPEC): Likewise. * config/arm/netbsd-elf.h (SUBTARGET_EXTRA_ASM_SPEC): Likewise. * config/arm/semi.h (SUBTARGET_EXTRA_ASM_SPEC): Likewise. * config/cris/linux.h (CRIS_ASM_SUBTARGET_SPEC): Likewise. * config/m32r/m32r.h (ASM_SPEC): Likewise. * config/m68k/uclinux.h (DRIVER_SELF_SPECS): Likewise. * config/rs6000/linux64.h (ASM_SPEC32): Likewise. * config/rs6000/sysv4.h (ASM_SPEC): Likewise. * config/sparc/freebsd.h (ASM_SPEC): Likewise. * config/sparc/linux.h (ASM_SPEC): Likewise. * config/sparc/linux64.h (ASM_SPEC): Likewise. * config/sparc/netbsd-elf.h (ASM_SPEC): Likewise. * config/sparc/openbsd64.h (ASM_SPEC): Likewise. * config/sparc/sp-elf.h (ASM_SPEC): Likewise. * config/sparc/sp64-elf.h (ASM_SPEC): Likewise. * config/sparc/sparc.h (ASM_SPEC): Likewise. * config/sparc/sysv4.h (ASM_SPEC): Likewise. * config/sparc/vxworks.h (ASM_SPEC): Likewise. * config/c6x/elf-common.h (ASM_SPEC): Use NO_FPIC2_SPEC, FPIC2_SPEC, FPIC1_SPEC and FPIC2_SPEC. * config/c6x/uclinux-elf.h (LINK_SPEC): Use FPIE_SPEC. * config/frv/frv.h (DRIVER_SELF_SPECS): Use FPIC_SPEC, NO_FPIC_SPEC and NO_FPIE1_AND_FPIC1_SPEC. (ASM_SPEC): Use FPIE1_OR_FPIC1_SPEC and FPIE2_OR_FPIC2_SPEC. * config/m68k/m68k.h (ASM_PCREL_SPEC): Use FPIC_SPEC and NO_FPIC_SPEC. * config/mips/gnu-user.h (NO_SHARED_SPECS): Use NO_FPIE_AND_FPIC_SPEC. * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Use FPIC_SPEC. * config/rs6000/freebsd64.h (ASM_SPEC32): Likewise. * config/rs6000/vxworks.h (ASM_SPEC): Likewise. * config/vax/linux.h (ASM_SPEC): Likewise. * doc/install.texi: Document --enable-default-pie. * doc/invoke.texi: Document -no-pie. * config.in: Regenerated. * configure: Likewise. gcc/ada/ * gcc-interface/Makefile.in (TOOLS_LIBS): Add @NO_PIE_FLAG@. libgcc/ * Makefile.in (CRTSTUFF_CFLAGS): Add $(NO_PIE_CFLAGS). From-SVN: r223796
2015-05-27trans.c (elaborate_all_entities): Do not elaborate an incomplete type coming ↵Eric Botcazou1-0/+4
from a limited_with and whose... * gcc-interface/trans.c (elaborate_all_entities): Do not elaborate an incomplete type coming from a limited_with and whose non-limited view comes from the main unit. From-SVN: r223772
2015-05-27decl.c (gnat_to_gnu_entity): Move down code applying atomic checks to the ↵Eric Botcazou1-9/+4
object. * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Move down code applying atomic checks to the object. From-SVN: r223767
2015-05-26trans.c (Attribute_to_gnu): Do not bother about NaN's if Machine_Overflows ↵Eric Botcazou1-1/+2
is true. * gcc-interface/trans.c (Attribute_to_gnu) <Attr_Min/Attr_Max>: Do not bother about NaN's if Machine_Overflows is true. From-SVN: r223717
2015-05-26trans.c (gnat_to_gnu): Really force evaluation of the expression...Eric Botcazou1-22/+15
* gcc-interface/trans.c (gnat_to_gnu) <N_Object_Declaration>: Really force evaluation of the expression, if any, when the object has its elaboration delayed. Do not create a variable at global level. From-SVN: r223716
2015-05-26trans.c (Attribute_to_gnu): Do not apply extra-precision trick to literals.Eric Botcazou2-3/+9
* gcc-interface/trans.c (Attribute_to_gnu) <Attr_Machine>: Do not apply extra-precision trick to literals. Build SAVE_EXPR manually. * gcc-interface/misc.c (enumerate_modes): Add bypass for x86/x86-64. From-SVN: r223715
2015-05-26ada-tree.h (DECL_GLOBAL_NONCONSTANT_RENAMING_P): DeleteEric Botcazou6-198/+201
* gcc-interface/ada-tree.h (DECL_GLOBAL_NONCONSTANT_RENAMING_P): Delete (DECL_RENAMED_OBJECT): Adjust comment. * gcc-interface/gigi.h (record_global_nonconstant_renaming): Delete. (invalidate_global_nonconstant_renamings): Likewise. (gnat_constant_reference_p): Likewise. (rewrite_fn): New function type. (gnat_rewrite_reference): Declare. (call_is_atomic_load): New inline predicate. * gcc-interface/decl.c (elaborate_reference_1): New function. (elaborate_reference): Likewise. (gnat_to_gnu_entity): Call elaborate_reference to elaborate renamings and simplify associated code. Set const_flag to true consistently in conjunction with used_by_ref. * gcc-interface/trans.c (Identifier_to_gnu): Always replace renaming pointers by renamed objects. (outer_atomic_access_required_p): Deal with renamings. (Compilation_Unit_to_gnu): Do not call invalidate_global_nonconstant_renamings. (gnat_to_gnu) <N_Object_Renaming_Declaration>: Adjust comment. (gnat_gimplify_expr): Deal with atomic loads. * gcc-interface/utils.c (global_nonconstant_renamings): Delete. (destroy_gnat_utils): Do not call invalidate_global_nonconstant_renamings. (record_global_nonconstant_renaming): Delete. (invalidate_global_nonconstant_renamings): Likewise. * gcc-interface/utils2.c (call_is_atomic_load): Move to gigi.h. (build_load_modify_store): Build a copy of the destination. (gnat_stabilize_reference_1): Adjust. (gnat_stabilize_reference): Call gnat_stabilize_reference_1 through gnat_rewrite_reference and move bulk of code to... (gnat_rewrite_reference): ...here. New global function. (gnat_constant_reference_p): Delete. From-SVN: r223709
2015-05-26gigi.h (gnat_stabilize_reference): Adjust prototype.Eric Botcazou4-218/+124
* gcc-interface/gigi.h (gnat_stabilize_reference): Adjust prototype. * gcc-interface/decl.c (gnat_to_gnu_entity): Do not rely on const_flag to detect constant renamings. Be prepared for specific pattern of renamed object based on function calls. Create a constant object for the renaming of a NULL_EXPR or of a CONSTRUCTOR. Adjust calls to gnat_stabilize_reference and tidy up. Remove redundant tests. (elaborate_expression_1): Remove obsolete test and tidy up. * gcc-interface/trans.c (Call_to_gnu): Do not stabilize In/Out or Out parameters passed by reference. (gnat_to_gnu) <N_Selected_Component>: Remove redundant protection again side-effects. Use gnat_protect_expr instead of gnat_stabilize_reference for general protection against side-effects. * gcc-interface/utils2.c (gnat_stable_expr_p): New predicate. (gnat_save_expr): Invoke it. (gnat_protect_expr): Likewise. (gnat_stabilize_reference_1): Likewise. Remove useless propagation of TREE_THIS_NOTRAP. (gnat_stabilize_reference): Remove parameter and adjust throughout. Delete ADDR_EXDR, COMPOUND_EXPR and CONSTRUCTOR cases. Restrict CALL_EXPR case to atomic loads and tweak ERROR_MARK case. From-SVN: r223708
2015-05-25utils.c (maybe_pad_type): Do not apply adjustment to original size for ↵Eric Botcazou1-1/+1
elementary types before issuing... * gcc-interface/utils.c (maybe_pad_type): Do not apply adjustment to original size for elementary types before issuing the size warning. From-SVN: r223657
2015-05-25targtyps.c (get_float_words_be): Rename into...Eric Botcazou7-41/+29
* gcc-interface/targtyps.c (get_float_words_be): Rename into... (get_target_float_words_be): ...this. (get_words_be): Rename into... (get_target_words_be): ...this. (get_bytes_be): Rename into... (get_target_bytes_be): ...this. (get_bits_be): Rename into... (get_target_bits_be): ...this. * gcc-interface/gigi.h (standard_datatypes): Remove ADT_ptr_void_type. (ptr_void_type_node): Delete. (get_target_float_size): Likewise. (get_target_double_size): Likewise. (get_target_long_double_size): Likewise. (get_float_words_be): Likewise. (get_words_be): Likewise. (get_bytes_be): Likewise. (get_bits_be): Likewise. (get_target_float_words_be): Declare. (get_target_words_be): Likewise. (get_target_bytes_be): Likewise. (get_target_bits_be): Likewise. * gcc-interface/decl.c (gnat_to_gnu_entity): Replace ptr_void_type_node with ptr_type_node. (intrin_return_compatible_p): Likewise. * gcc-interface/trans.c (gigi): Likewise. * gcc-interface/utils2.c (maybe_wrap_malloc): Likewise. (maybe_wrap_free): Likewise. * gcc-interface/utils.c (maybe_pad_type): Remove superfluous space. * gcc-interface/misc.c (gnat_init): Do not set ptr_void_type_node. From-SVN: r223656
2015-05-25decl.c (elaborate_expression): Take a const string suffix instead of a tree.Eric Botcazou1-63/+59
* gcc-interface/decl.c (elaborate_expression): Take a const string suffix instead of a tree. (elaborate_expression_1): Likewise. (elaborate_expression_2): Likewise. (gnat_to_gnu_entity): Adjust to above changes. (build_subst_list): Likewise. (get_entity_char): New static function. From-SVN: r223655
2015-05-25decl.c (gnat_to_gnu_entity): Move around.Eric Botcazou1-84/+79
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Constant>: Move around. <E_Exception>: Merge with E_Variable case. <E_Variable>: Remove 'object' label. From-SVN: r223654
2015-05-25decl.c (gnat_to_gnu_entity): Minor tweak.Eric Botcazou4-30/+27
* gcc-interface/decl.c (gnat_to_gnu_entity): Minor tweak. * gcc-interface/trans.c (finalize_nrv_unc_r): Use CONSTRUCTOR_ELT. * gcc-interface/utils.c (convert): Likewise and simplify. (remove_conversions): Likewise. * gcc-interface/utils2.c (compare_fat_pointers): Likewise. (build_unary_op): Likewise and simplify. From-SVN: r223653
2015-05-25gigi.h (build_atomic_load): Adjust prototype.Eric Botcazou5-142/+392
* gcc-interface/gigi.h (build_atomic_load): Adjust prototype. (build_atomic_store): Likewise. (build_load_modify_store): Declare. (VECTOR_TYPE_P): Delete. * gcc-interface/decl.c (gnat_to_gnu_entity): Replace Is_Atomic with Is_Atomic_Or_VFA throughout. <E_Array_Type>: Build a variant of the XUA type instead of forcing TYPE_VOLATILE on it. <E_Array_Subtype>: Use the main variant of the base type. Do not force TYPE_VOLATILE on the type being built. <E_Record_Type>: Likewise. <E_Array_Subtype>: Likewise. <E_Subprogram_Type>: Rename local variable. Add Atomic qualifier in conjunction with Volatile on types if needed. Force BLKmode for by-ref types only at the end of the processing. Change qualifiers only after changing the mode of the type. Set TYPE_UNIVERSAL_ALIASING_P on the type directly. (check_ok_for_atomic_type): Issue specific error message for VFA. (gnat_to_gnu_component_type): Replace Is_Atomic with Is_Atomic_Or_VFA throughout. * gcc-interface/misc.c (gnat_get_alias_set): Test TYPE_UNIVERSAL_ALIASING_P on the type directly. * gcc-interface/trans.c (lvalue_required_p): Replace Is_Atomic with Is_Atomic_Or_VFA throughout. Add missing guard. (node_is_atomic): New predicate. (node_has_volatile_full_access): Likewise. (gnat_strip_type_conversion): New function. (outer_atomic_access_required_p): New predicate. (atomic_sync_required_p): Rename into... (atomic_access_required_p): ...this. Add SYNC parameter, scan the parent node first and then look for the atomic setting. Add support for Volatile_Full_Access. (Call_to_gnu): Add atomic_access and outer_atomic_access parameters and adjusts calls to above functions. Use load-modify-store sequence for updates of In/Out and Out parameters if required, as well as for moving the result to the target if required. Add couple of missing guards. (gnat_to_gnu): Adjust calls to above functions. <N_Object_Renaming_Declaration>: If the renamed object has side-effects evaluate only its address. <N_Assignment_Statement>: Adjust call to Call_to_gnu. Use load-modify store sequence if required. <N_Function_Call>: Adjust call to Call_to_gnu. (extract_values): Adjust comment. * gcc-interface/utils2.c (build_atomic_load): Add SYNC parameter and use relaxed memory model if it is not set. (build_atomic_store): Likewise. (call_is_atomic_load): New predicate. (build_load_modify_store): New function. (build_binary_op) <MODIFY_EXPR>: Accept SAVE_EXPR on the LHS. (gnat_stabilize_reference) <CALL_EXPR>: Deal with atomic loads. From-SVN: r223652
2015-05-25ada-tree.h (DECL_RENAMING_GLOBAL_P): Rename into...Eric Botcazou6-77/+149
* gcc-interface/ada-tree.h (DECL_RENAMING_GLOBAL_P): Rename into... (DECL_GLOBAL_NONCONSTANT_RENAMING_P): ...this. * gcc-interface/gigi.h (record_global_renaming_pointer): Delete. (invalidate_global_renaming_pointers): Likewise. (record_global_nonconstant_renaming): New. (invalidate_global_nonconstant_renamings): Likewise. (get_inner_constant_reference): Likewise. (gnat_constant_reference_p): Likewise. * gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Adjust to above and register the renaming pointer only if the object is non-constant. (elaborate_expression_1): Call get_inner_constant_reference instead of get_inner_reference. * gcc-interface/trans.c (fold_constant_decl_in_expr): Minor tweak. (Identifier_to_gnu): Adjust to above and do not recheck the renamed object before substituting it. (Compilation_Unit_to_gnu): Adjust to above renaming. Minor tweaks. (gnat_to_gnu) <N_Object_Renaming_Declaration>: Do not return the result at the global level. (N_Exception_Renaming_Declaration): Likewise. * gcc-interface/utils.c (global_renaming_pointers): Rename into... (global_nonconstant_renamings): ...this. (destroy_gnat_utils): Adjust to above renaming. (record_global_renaming_pointer): Rename into... (record_global_nonconstant_renaming): ...this. (invalidate_global_renaming_pointers): Rename into... (invalidate_global_nonconstant_renamings): ...this and do not recheck the renamed object before invalidating. * gcc-interface/utils2.c (gnat_stabilize_reference): Minor tweak. (get_inner_constant_reference): New public function. (gnat_constant_reference_p): New predicate. From-SVN: r223644
2015-05-19Replace line_map union with C++ class hierarchyDavid Malcolm1-1/+1
gcc/ChangeLog: * diagnostic.c (diagnostic_report_current_module): Strengthen local "new_map" from const line_map * to const line_map_ordinary *. * genmatch.c (error_cb): Likewise for local "map". (output_line_directive): Likewise for local "map". * input.c (expand_location_1): Likewise for local "map". Pass NULL rather than &map to linemap_unwind_to_first_non_reserved_loc, since the value is never read from there, and the value written back not read from here. (is_location_from_builtin_token): Strengthen local "map" from const line_map * to const line_map_ordinary *. (dump_location_info): Strengthen locals "map" from line_map *, one to const line_map_ordinary *, the other to const line_map_macro *. * tree-diagnostic.c (loc_map_pair): Strengthen field "map" from const line_map * to const line_map_macro *. (maybe_unwind_expanded_macro_loc): Add a call to linemap_check_macro when writing to the "map" field of the loc_map_pair. Introduce local const line_map_ordinary * "ord_map", using it in place of "map" in the part of the function where we know we have an ordinary map. Strengthen local "m" from const line_map * to const line_map_ordinary *. gcc/ada/ChangeLog: * gcc-interface/trans.c (Sloc_to_locus1): Strenghthen local "map" from line_map * to line_map_ordinary *. gcc/c-family/ChangeLog: * c-common.h (fe_file_change): Strengthen param from const line_map * to const line_map_ordinary *. (pp_file_change): Likewise. * c-lex.c (fe_file_change): Likewise. (cb_define): Use linemap_check_ordinary when invoking SOURCE_LINE. (cb_undef): Likewise. * c-opts.c (c_finish_options): Use linemap_check_ordinary when invoking cb_file_change. (c_finish_options): Likewise. (push_command_line_include): Likewise. (cb_file_change): Strengthen param "new_map" from const line_map * to const line_map_ordinary *. * c-ppoutput.c (cb_define): Likewise for local "map". (pp_file_change): Likewise for param "map" and local "from". gcc/fortran/ChangeLog: * cpp.c (maybe_print_line): Strengthen local "map" from const line_map * to const line_map_ordinary *. (cb_file_change): Likewise for param "map" and local "from". (cb_line_change): Likewise for local "map". libcpp/ChangeLog: * directives.c (do_line): Strengthen local "map" from const line_map * to const line_map_ordinary *. (do_linemarker): Likewise. (_cpp_do_file_change): Assert that we're not dealing with a macro map. Introduce local "ord_map" via a call to linemap_check_ordinary, guarded within the check for non-NULL. Use it for typesafety. * files.c (cpp_make_system_header): Strengthen local "map" from const line_map * to const line_map_ordinary *. * include/cpplib.h (struct cpp_callbacks): Likewise for second parameter of "file_change" callback. * include/line-map.h (struct line_map): Convert from a struct containing a union to a base class. (struct line_map_ordinary): Convert to a subclass of line_map. (struct line_map_macro): Likewise. (linemap_check_ordinary): Strengthen return type from line_map * to line_map_ordinary *, and add a const-variant. (linemap_check_macro): New pair of functions. (ORDINARY_MAP_STARTING_LINE_NUMBER): Strengthen param from const line_map * to const line_map_ordinary *, eliminating call to linemap_check_ordinary. Likewise for the non-const variant. (ORDINARY_MAP_INCLUDER_FILE_INDEX): Likewise. (ORDINARY_MAP_IN_SYSTEM_HEADER_P): Likewise. (ORDINARY_MAP_NUMBER_OF_COLUMN_BITS): Likewise. (ORDINARY_MAP_FILE_NAME): Likewise. (MACRO_MAP_MACRO): Strengthen param from const line_map * to const line_map_macro *. Likewise for the non-const variant. (MACRO_MAP_NUM_MACRO_TOKENS): Likewise. (MACRO_MAP_LOCATIONS): Likewise. (MACRO_MAP_EXPANSION_POINT_LOCATION): Likewise. (struct maps_info): Replace with... (struct maps_info_ordinary):...this and... (struct maps_info_macro): ...this. (struct line_maps): Convert fields "info_ordinary" and "info_macro" to the above new structs. (LINEMAPS_MAP_INFO): Delete both functions. (LINEMAPS_MAPS): Likewise. (LINEMAPS_ALLOCATED): Rewrite both variants to avoid using LINEMAPS_MAP_INFO. (LINEMAPS_USED): Likewise. (LINEMAPS_CACHE): Likewise. (LINEMAPS_MAP_AT): Likewise. (LINEMAPS_ORDINARY_MAPS): Strengthen return type from line_map * to line_map_ordinary *. (LINEMAPS_ORDINARY_MAP_AT): Likewise. (LINEMAPS_LAST_ORDINARY_MAP): Likewise. (LINEMAPS_LAST_ALLOCATED_ORDINARY_MAP): Likewise. (LINEMAPS_MACRO_MAPS): Strengthen return type from line_map * to line_map_macro *. (LINEMAPS_MACRO_MAP_AT): Likewise. (LINEMAPS_LAST_MACRO_MAP): Likewise. (LINEMAPS_LAST_ALLOCATED_MACRO_MAP): Likewise. (linemap_map_get_macro_name): Strengthen param from const line_map * to const line_map_macro *. (SOURCE_LINE): Strengthen first param from const line_map * to const line_map_ordinary *, removing call to linemap_check_ordinary. (SOURCE_COLUMN): Likewise. (LAST_SOURCE_LINE_LOCATION): Likewise. (LAST_SOURCE_LINE): Strengthen first param from const line_map * to const line_map_ordinary *. (LAST_SOURCE_COLUMN): Likewise. (INCLUDED_FROM): Strengthen return type from line_map * to line_map_ordinary *., and second param from const line_map * to const line_map_ordinary *, removing call to linemap_check_ordinary. (MAIN_FILE_P): Strengthen param from const line_map * to const line_map_ordinary *, removing call to linemap_check_ordinary. (linemap_position_for_line_and_column): Strengthen param from const line_map * to const line_map_ordinary *. (LINEMAP_FILE): Strengthen param from const line_map * to const line_map_ordinary *, removing call to linemap_check_ordinary. (LINEMAP_LINE): Likewise. (LINEMAP_SYSP): Likewise. (linemap_resolve_location): Strengthen final param from const line_map ** to const line_map_ordinary **. * internal.h (CPP_INCREMENT_LINE): Likewise for local "map". (linemap_enter_macro): Strengthen return type from const line_map * to const line_map_macro *. (linemap_add_macro_token): Likewise for first param. * line-map.c (linemap_check_files_exited): Strengthen local "map" from const line_map * to const line_map_ordinary *. (new_linemap): Introduce local "map_size" and use it when calculating how large the buffer should be. Rewrite based on change of info_macro and info_ordinary into distinct types. (linemap_add): Strengthen locals "map" and "from" from line_map * to line_map_ordinary *. (linemap_enter_macro): Strengthen return type from const line_map * to const line_map_macro *, and local "map" from line_map * to line_map_macro *. (linemap_add_macro_token): Strengthen param "map" from const line_map * to const line_map_macro *. (linemap_line_start): Strengthen local "map" from line_map * to line_map_ordinary *. (linemap_position_for_column): Likewise. (linemap_position_for_line_and_column): Strengthen first param from const line_map * to const line_map_ordinary *. (linemap_position_for_loc_and_offset): Strengthen local "map" from const line_map * to const line_map_ordinary *. (linemap_ordinary_map_lookup): Likewise for return type and locals "cached" and "result". (linemap_macro_map_lookup): Strengthen return type and locals "cached" and "result" from const line_map * to const line_map_macro *. (linemap_macro_map_loc_to_exp_point): Likewise for param "map". (linemap_macro_map_loc_to_def_point): Likewise. (linemap_macro_map_loc_unwind_toward_spelling): Likewise. (linemap_get_expansion_line): Strengthen local "map" from const line_map * to const line_map_ordinary *. (linemap_get_expansion_filename): Likewise. (linemap_map_get_macro_name): Strengthen param from const line_map * to const line_map_macro *. (linemap_location_in_system_header_p): Add call to linemap_check_ordinary in region guarded by !linemap_macro_expansion_map_p. Introduce local "macro_map" via linemap_check_macro in other region, using it in place of "map" for typesafety. (first_map_in_common_1): Add calls to linemap_check_macro. (trace_include): Strengthen param "map" from const line_map * to const line_map_ordinary *. (linemap_macro_loc_to_spelling_point): Strengthen final param from const line_map ** to const line_map_ordinary **. Replace a C-style cast with a const_cast, and add calls to linemap_check_macro and linemap_check_ordinary. (linemap_macro_loc_to_def_point): Likewise. (linemap_macro_loc_to_exp_point): Likewise. (linemap_resolve_location): Strengthen final param from const line_map ** to const line_map_ordinary **. (linemap_unwind_toward_expansion): Introduce local "macro_map" via a checked cast and use it in place of *map. (linemap_unwind_to_first_non_reserved_loc): Strengthen local "map1" from const line_map * to const line_map_ordinary *. (linemap_expand_location): Introduce local "ord_map" via a checked cast and use it in place of map. (linemap_dump): Make local "map" const. Strengthen local "includer_map" from line_map * to const line_map_ordinary *. Introduce locals "ord_map" and "macro_map" via checked casts and use them in place of "map" for typesafety. (linemap_dump_location): Strengthen local "map" from const line_map * to const line_map_ordinary *. (linemap_get_file_highest_location): Update for elimination of union. (linemap_get_statistics): Strengthen local "cur_map" from line_map * to const line_map_macro *. Update uses of sizeof to use the appropriate line_map subclasses. * macro.c (_cpp_warn_if_unused_macro): Add call to linemap_check_ordinary. (builtin_macro): Strengthen local "map" from const line_map * to const line_map_macro *. (enter_macro_context): Likewise. (replace_args): Likewise. (tokens_buff_put_token_to): Likewise for param "map". (tokens_buff_add_token): Likewise. From-SVN: r223365
2015-05-09utils.c (gnat_write_global_declarations): Use type_decl method instead of ↵Eric Botcazou1-1/+1
global_decl for TYPE_DECLs. * gcc-interface/utils.c (gnat_write_global_declarations): Use type_decl method instead of global_decl for TYPE_DECLs. From-SVN: r222967
2015-04-27Makefile-lan.in (ada.mostlyclean): Remove gnatbind and gnat1.Jim Wilson1-0/+1
ada/ * gcc-interface/Makefile-lan.in (ada.mostlyclean): Remove gnatbind and gnat1. cp/ * Make-lang.in (c++.mostlyclean): Remove xg++, g++-cross, and cc1plus. fortran/ * Make-lang.in (fortran.mostlyclean): Remove gfortran and gfortran-cross. go/ * Make-lang.in (go.mostlyclean): Remove gccgo, gccgo-cross, and go1. jit/ * Make-lang.in (jit.mostlyclean): Remove shared libraries and object files. objc/ * Make-lang.in (objc.mostlyclean): Remove cc1obj. objcp/ * Make-lang.in (obj-c++.mostlyclean): Remove cc1objplus. From-SVN: r222492
2015-04-09fix Ada bootstrap for powerpc-darwin (and several regressions in ACATS and gnat)Iain Sandoe1-1/+3
gcc/ada: * gcc-interface/Makefile.in (darwin, powerpc): Enable atomics. From-SVN: r221962
2015-04-08decl.c (gnat_to_gnu_entity): Do not make a function returning an ↵Eric Botcazou2-9/+14
unconstrained type 'const' for the middle-end. * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Function>: Do not make a function returning an unconstrained type 'const' for the middle-end. * gcc-interface/trans.c (Pragma_to_gnu) <case Pragma_Warning>: Use exact condition to detect Reason => "..." pattern. From-SVN: r221916
2015-03-26* gcc-interface/trans.c (Attribute_to_gnu) <Attr_Deref>: New case.Eric Botcazou1-0/+12
From-SVN: r221711
2015-03-20re PR ada/65451 (compiler crash on volatile access type)Eric Botcazou2-42/+17
PR ada/65451 * gcc-interface/utils.c (gnat_pushdecl): Tidy up and improve comment. Make sure to chain only main variants through TYPE_NEXT_PTR_TO. From-SVN: r221531
2015-03-16utils2.c (gnat_invariant_expr): Return null if the type of the expression ↵Eric Botcazou1-0/+6
ends up being composite. * gcc-interface/utils2.c (gnat_invariant_expr): Return null if the type of the expression ends up being composite. From-SVN: r221449
2015-03-16decl.c (is_from_limited_with_of_main): New predicate.Eric Botcazou2-12/+30
* gcc-interface/decl.c (is_from_limited_with_of_main): New predicate. (gnat_to_gnu_entity) <E_Subprogram_Type>: Invoke it on return and parameter types to detect circularities in ASIS mode. * gcc-interface/trans.c (Attribute_to_gnu): Mention AI05-0151. From-SVN: r221447
2015-03-16decl.c (gnat_to_gnu_entity): Do not short-circuit the regular handling.Eric Botcazou1-2/+4
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Abstract_State>: Do not short-circuit the regular handling. From-SVN: r221446
2015-03-12trans.c (Attribute_to_gnu): On targets where a function symbol designates a ↵Olivier Hainque1-1/+28
function descriptor... 2015-03-12 Olivier Hainque <hainque@adacore.com> * gcc-interface/trans.c (Attribute_to_gnu) <Code_Address case>: On targets where a function symbol designates a function descriptor, fetch the function code address from the descriptor. From-SVN: r221391
2015-03-02debug.adb: Document new debug flag -gnatd.1.Robert Dewar1-0/+1
2015-03-02 Robert Dewar <dewar@adacore.com> * debug.adb: Document new debug flag -gnatd.1. * einfo.ads, einfo.adb (Has_Nested_Subprogram): New flag. (Has_Uplevel_Reference): New flag (Is_Static_Type): New flag. (Uplevel_Reference_Noted):New flag (Uplevel_References): New field. * elists.ads elists.adb (List_Length): New function. * exp_ch6.adb (Expand_N_Subprogram_Body): Call Unnest_Subprogram when appropriate (Process_Preconditions): Minor code reorganization and reformatting * exp_unst.ads, exp_unst.adb: New files. * gnat1drv.adb (Adjust_Global_Switches): Set Unnest_Subprogram_Mode if -gnatd.1 * namet.ads, namet.adb (Name_Find_Str): New version of Name_Find with string argument. * opt.ads (Unnest_Subprogram_Mode): New flag. * par-ch3.adb (P_Identifier_Declarations): Fixes to -gnatd.2 handling. * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Set Has_Nested_Subprogram flag. * sem_ch8.adb (Find_Direct_Name): New calling sequence for Check_Nested_Access. (Find_Selected_Component): Minor comment addition. * sem_util.adb (Check_Nested_Access): New version for use with Exp_Unst. (Note_Possible_Modification): New calling sequence for Check_Nested_Access. * sem_util.ads (Check_Nested_Access): New version for use with Exp_Unst. * gcc-interface/Make-lang.in (GNAT1_OBJS): Add exp_unst.o From-SVN: r221109
2015-03-02utils.c (gnat_pushdecl): For non-artificial pointer types...Pierre-Marie de Rodat2-30/+54
2015-03-02 Pierre-Marie de Rodat <derodat@adacore.com> * gcc-interface/utils.c (gnat_pushdecl): For non-artificial pointer types, preserve the original type and create copies just like the C front-end does. For artificial ones, do not define a name for the original type. (create_type_decl): When gnat_pushdecl made the input type the original type for the new declaration, do not define a stub declaration for it. * gcc-interface/utils2.c (build_binary_op): Accept two different pointer types when they point to the same type. From-SVN: r221108
2015-02-24[PR libgomp/64625] Remove __OFFLOAD_TABLE__ variable/formal parameter.Thomas Schwinge1-19/+16
Fixup for r219836: adjust builtin function prototypes. PR libgomp/64625 gcc/ * omp-builtins.def (BUILT_IN_GOACC_DATA_START): Specify as BT_FN_VOID_INT_SIZE_PTR_PTR_PTR, not BT_FN_VOID_INT_PTR_SIZE_PTR_PTR_PTR. (BUILT_IN_GOACC_ENTER_EXIT_DATA, BUILT_IN_GOACC_UPDATE): Specify as BT_FN_VOID_INT_SIZE_PTR_PTR_PTR_INT_INT_VAR, not BT_FN_VOID_INT_PTR_SIZE_PTR_PTR_PTR_INT_INT_VAR. (BUILT_IN_GOACC_PARALLEL): Specify as BT_FN_VOID_INT_OMPFN_SIZE_PTR_PTR_PTR_INT_INT_INT_INT_INT_VAR, not BT_FN_VOID_INT_OMPFN_PTR_SIZE_PTR_PTR_PTR_INT_INT_INT_INT_INT_VAR. * builtin-types.def (BT_FN_VOID_INT_PTR_SIZE_PTR_PTR_PTR_INT_INT_VAR) (BT_FN_VOID_INT_OMPFN_PTR_SIZE_PTR_PTR_PTR_INT_INT_INT_INT_INT_VAR): Remove function types. (BT_FN_VOID_INT_SIZE_PTR_PTR_PTR) (BT_FN_VOID_INT_SIZE_PTR_PTR_PTR_INT_INT_VAR) (BT_FN_VOID_INT_OMPFN_SIZE_PTR_PTR_PTR_INT_INT_INT_INT_INT_VAR): New function types. gcc/ada/ * gcc-interface/utils.c (DEF_FUNCTION_TYPE_VAR_8) (DEF_FUNCTION_TYPE_VAR_12): Remove macros. (DEF_FUNCTION_TYPE_VAR_7, DEF_FUNCTION_TYPE_VAR_11): New macros. gcc/c-family/ * c-common.c (DEF_FUNCTION_TYPE_VAR_8, DEF_FUNCTION_TYPE_VAR_12): Remove macros. (DEF_FUNCTION_TYPE_VAR_7, DEF_FUNCTION_TYPE_VAR_11): New macros. gcc/fortran/ * f95-lang.c (DEF_FUNCTION_TYPE_VAR_8, DEF_FUNCTION_TYPE_VAR_12): Remove macros. (DEF_FUNCTION_TYPE_VAR_7, DEF_FUNCTION_TYPE_VAR_11): New macros. * types.def (BT_FN_VOID_INT_PTR_SIZE_PTR_PTR_PTR_INT_INT_VAR) (BT_FN_VOID_INT_OMPFN_PTR_SIZE_PTR_PTR_PTR_INT_INT_INT_INT_INT_VAR): Remove function types. (BT_FN_VOID_INT_SIZE_PTR_PTR_PTR) (BT_FN_VOID_INT_SIZE_PTR_PTR_PTR_INT_INT_VAR) (BT_FN_VOID_INT_OMPFN_SIZE_PTR_PTR_PTR_INT_INT_INT_INT_INT_VAR): New function types. gcc/jit/ * jit-builtins.c (DEF_FUNCTION_TYPE_VAR_8) (DEF_FUNCTION_TYPE_VAR_12): Remove macros. (DEF_FUNCTION_TYPE_VAR_7, DEF_FUNCTION_TYPE_VAR_11): New macros. * jit-builtins.h (DEF_FUNCTION_TYPE_VAR_8) (DEF_FUNCTION_TYPE_VAR_12): Remove macros. (DEF_FUNCTION_TYPE_VAR_7, DEF_FUNCTION_TYPE_VAR_11): New macros. gcc/lto/ * lto-lang.c (DEF_FUNCTION_TYPE_VAR_8, DEF_FUNCTION_TYPE_VAR_12): Remove macros. (DEF_FUNCTION_TYPE_VAR_7, DEF_FUNCTION_TYPE_VAR_11): New macros. From-SVN: r220944
2015-02-23Fix number of arguments parameter in Ada DEF_FUNCTION_TYPE_*.Thomas Schwinge1-2/+2
gcc/ada/ * gcc-interface/utils.c (DEF_FUNCTION_TYPE_VAR_8) (DEF_FUNCTION_TYPE_VAR_12): Fix number of arguments parameter. From-SVN: r220910
2015-02-21Remove trailing space.Eric Botcazou1-1/+1
From-SVN: r220887
2015-02-20Makefile.in: Remove references to nucleus.Arnaud Charlet2-22/+6
* gcc-interface/Makefile.in: Remove references to nucleus. * gcc-interface/decl.c (gnat_to_gnu_entity, case E_Procedure): Set extern_flag to true for Inline_Always subprograms with Intrinsic convention. From-SVN: r220851
2015-02-20[multiple changes]Arnaud Charlet1-9/+21
2015-02-20 Yannick Moy <moy@adacore.com> * sem_prag.ads: Minor typo in comment. 2015-02-20 Pascal Obry <obry@adacore.com> * s-osprim-mingw.adb: Fix Get_Base_Time parameter mode. 2015-02-20 Vincent Celier <celier@adacore.com> * makeutl.adb (Get_Directories.Add_Dir): Add a directory only if it exists. 2015-02-20 Robert Dewar <dewar@adacore.com> * sem_eval.ads: Minor reformatting. 2015-02-20 Eric Botcazou <ebotcazou@adacore.com> * freeze.adb (Size_Known): Do not set the packed size for independent type or component. (Freeze_Array_Type): Check for Independent[_Components] with packing or explicit component size clause. * gnat1drv.adb (Post_Compilation_Validation_Checks): Do the validation of independence pragmas only for non-GCC back-ends. * sem_ch13.adb (Initialize): Likewise for the initialization. * sem_prag.adb (Record_Independence_Check): New procedure to record an independence check in the table. (Analyze_Pragma): Use it throughout instead of doing it manually. * gcc-interface/decl.c (gnat_to_gnu_field): Add support for independent type or component. 2015-02-20 Thomas Quinot <quinot@adacore.com> * adaint.c (__gnat_readdir): For Solaris, use 64 bit variants of struct direct and readdir. This is required for NFS filesystems mounted from servers that use 64-bit cookies. 2015-02-20 Ed Schonberg <schonberg@adacore.com> * sem_ch12.adb (Analyze_Subprogram_Instantiaion): New subprogram Build_Subprogram_Renaming, to create renaming of subprogram instance in the the declaration of the wrapper package rather than in its body, so that it is available for analysis of aspects propagated from generic to instantiation. (Check_Mismatch): An actual for a formal package that is an incomplete type matches a formal type that is incomplete. (Instantiate_Package_Body): Move code that builds subprogram renaming to Analyze_Subprogram_Instantiation. (Instantiate_Type): The generated subtype is a limited view if the actual is a limited view. (Load_Parent_Of_Generic): Retrieve instance declaration from its new position within wrapper package. 2015-02-20 Arnaud Charlet <charlet@adacore.com> * s-parame-vxworks.adb, s-os_lib.ads: Update comments. 2015-02-20 Robert Dewar <dewar@adacore.com> * s-osinte-vxworks.ads (To_Timespec): Add comment about the issue of negative arguments. From-SVN: r220850
2015-02-08decl.c (gnat_to_gnu_param): Do not strip the padding if the parameter either ↵Eric Botcazou1-4/+6
is passed by reference or if... * gcc-interface/decl.c (gnat_to_gnu_param): Do not strip the padding if the parameter either is passed by reference or if the alignment would be lowered. From-SVN: r220514
2015-02-08decl.c (is_cplusplus_method): Use Is_Primitive flag to detect primitive ↵Eric Botcazou1-4/+5
operations of tagged and untagged types. * gcc-interface/decl.c (is_cplusplus_method): Use Is_Primitive flag to detect primitive operations of tagged and untagged types. From-SVN: r220512