aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada
AgeCommit message (Collapse)AuthorFilesLines
2015-11-30* gcc-interface/trans.c (gigi): Fix initialization order.Eric Botcazou2-9/+14
From-SVN: r231068
2015-11-30osint.adb: Add use type clause for CRTL.size_t.Eric Botcazou3-48/+52
* osint.adb: Add use type clause for CRTL.size_t. (C_String_Length): Return CRTL.size_t instead of Integer. (To_Path_String_Access): Take CRTL.size_t instead of Integer. (Get_Libraries_From_Registry): Use CRTL throughout. (To_Canonical_Dir_Spec): Use CRTL.size_t instead of Integer. (To_Canonical_File_List): Likewise. (To_Canonical_File_Spec): Likewise. (To_Canonical_Path_Spec): Likewise. (To_Host_Dir_Spec): Likewise. (To_Host_File_Spec): Likewise. (Update_Path): Use CRTL throughout. * s-shasto.adb: Add with clause for System.CRTL. (Initialize): Rename CRTL.strncpy instead of importing it manually. From-SVN: r231066
2015-11-30gigi.h (create_var_decl): Adjust prototype.Eric Botcazou5-152/+187
* 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 Botcazou4-33/+133
* 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 Botcazou2-1/+7
From-SVN: r231063
2015-11-30ada-tree.h (TYPE_MAX_ALIGN): New macro.Eric Botcazou5-66/+71
* 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 Klose2-47/+11
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 Klose2-1/+6
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-26Back out latest change.Eric Botcazou2-16/+0
From-SVN: r230935
2015-11-25[multiple changes]Arnaud Charlet8-13/+60
2015-11-25 Eric Botcazou <ebotcazou@adacore.com> * gnatlink.adb (Gnatlink): Do not reinstate -fsjlj for the linker from the switches saved in the ALI file but from the exception settings. 2015-11-25 Arnaud Charlet <charlet@adacore.com> * lib-xref-spark_specific.adb (Add_SPARK_Scope): Take entry families into account. * a-exetim.ads, a-exetim-default.ads, a-exetim-mingw.ads (Clock, Clock_For_Interrupts): preconditions added. * a-extiin.ads (Clock): preconditions added. * par-ch3.adb (P_Declarative_Items): In case of misplaced aspect specifications, ensure that flag Done is properly set to continue parsing. From-SVN: r230879
2015-11-25[multiple changes]Arnaud Charlet5-17/+51
2015-11-25 Arnaud Charlet <charlet@adacore.com> * exp_util.adb (Remove_Side_Effects): Minimize extra temporaries and use of 'Reference when needed. 2015-11-25 Doug Rupp <rupp@adacore.com> * sigtramp-vxworks-target.inc (__x86_64__): Restore context for the sake of uniformity. * init.c (__gnat_inum_to_ivec): Add some casting to avoid warnings when sizeof(long) != sizeof(int) 2015-11-25 Yannick Moy <moy@adacore.com> * lib-xref-spark_specific.adb (SPARK_Entities): Add entries for consideration. (Add_SPARK_Scope): Take tasks into account. (Detect_And_Add_SPARK_Scope): Take tasks into account. (Enclosing_Subprogram_Or_Library_Package): Take tasks into account. From-SVN: r230878
2015-11-25[multiple changes]Arnaud Charlet5-51/+74
2015-11-25 Bob Duff <duff@adacore.com> * sem_elab.adb (Check_Internal_Call_Continue): Code clean ups. 2015-11-25 Eric Botcazou <ebotcazou@adacore.com> * sem_util.ads (Has_Compatible_Alignment): Add Layout_Done parameter. * sem_util.adb (Has_Compatible_Alignment): Likewise. (Has_Compatible_Alignment_Internal): Likewise. Do not set the result to Unknown for packed types if Layout_Done is true. * checks.adb (Apply_Address_Clause_Check): Adjust call and pass False to Has_Compatible_Alignment. * sem_ch13.adb (Validate_Address_Clauses): Likewise but pass True. From-SVN: r230877
2015-11-25[multiple changes]Arnaud Charlet4-31/+61
2015-11-25 Vincent Celier <celier@adacore.com> * gnatcmd.adb: When <target>-gnat is called with switch -P and a GPR tool is invoked, invoke the GPR tool with switch --target=<target>. 2015-11-25 Hristian Kirtchev <kirtchev@adacore.com> * opt.adb, bcheck.adb: Minor reformatting. From-SVN: r230876
2015-11-25[multiple changes]Arnaud Charlet5-10/+116
2015-11-25 Jerome Lambourg <lambourg@adacore.com> * init.c: Enable the signal trampoline on x86_64-vx7 * sigtramp-vxworks-target.inc: Implement the signal trampoline for x86_64 * tracebak.c: Remove the hook to use the generic unwinder on x86_64-vx7. 2015-11-25 Vincent Celier <celier@adacore.com> * gnatcmd.adb: When "gnat name -P" is called, invoke gprname directly if available. From-SVN: r230875
2015-11-25init.c (__gnat_is_stack_guard): Do not use mach calls for IOS simulator.Tristan Gingold2-4/+8
2015-11-25 Tristan Gingold <gingold@adacore.com> * init.c (__gnat_is_stack_guard): Do not use mach calls for IOS simulator. From-SVN: r230874
2015-11-24DWARF: materialize subprogram renamings in Ada as imported declarationsPierre-Marie de Rodat2-0/+12
... 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-24sem_ch3.adb, [...]: Minor reformatting, rewording, and typo corrections.Gary Dismukes10-24/+30
2015-11-24 Gary Dismukes <dismukes@adacore.com> * sem_ch3.adb, sem_type.adb, sem_ch7.adb, sem_ch9.adb, checks.adb, sem_prag.adb, contracts.adb, g-strhas.ads, sem_ch6.adb: Minor reformatting, rewording, and typo corrections. From-SVN: r230794
2015-11-24decl.c (gnat_to_gnu_entity): In ASIS mode, do a minimal translation for root ↵Eric Botcazou3-10/+63
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 Botcazou2-0/+6
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 Botcazou2-4/+24
(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-23system-aix.ads: Add Frontend_Exceptions flag.Olivier Hainque43-41/+128
2015-11-23 Olivier Hainque <hainque@adacore.com> * system-aix.ads: Add Frontend_Exceptions flag. * system-aix64.ads: Likewise. * system-darwin-ppc.ads: Likewise. * system-darwin-ppc64.ads: Likewise. * system-darwin-x86.ads: Likewise. * system-darwin-x86_64.ads: Likewise. * system-dragonfly-x86_64.ads: Likewise. * system-freebsd-x86.ads: Likewise. * system-freebsd-x86_64.ads: Likewise. * system-hpux-ia64.ads: Likewise. * system-hpux.ads: Likewise. * system-linux-alpha.ads: Likewise. * system-linux-armeb.ads: Likewise. * system-linux-armel.ads: Likewise. * system-linux-hppa.ads: Likewise. * system-linux-ia64.ads: Likewise. * system-linux-mips.ads: Likewise. * system-linux-mips64el.ads: Likewise. * system-linux-mipsel.ads: Likewise. * system-linux-ppc.ads: Likewise. * system-linux-ppc64.ads: Likewise. * system-linux-s390.ads: Likewise. * system-linux-s390x.ads: Likewise. * system-linux-sh4.ads: Likewise. * system-linux-sparc.ads: Likewise. * system-linux-sparcv9.ads: Likewise. * system-linux-x86.ads: Likewise. * system-linux-x86_64.ads: Likewise. * system-mingw-x86_64.ads: Likewise. * system-mingw.ads: Likewise. * system-rtems.ads: Likewise. * system-solaris-sparc.ads: Likewise. * system-solaris-sparcv9.ads: Likewise. * system-solaris-x86.ads: Likewise. * system-solaris-x86_64.ads: Likewise. * system-vxworks-arm.ads: Likewise. * system-vxworks-m68k.ads: Likewise. * system-vxworks-mips.ads: Likewise. * system-vxworks-ppc.ads: Likewise. * system-vxworks-sparcv9.ads: Likewise. * system-vxworks-x86.ads: Likewise. * system.ads: Likewise. From-SVN: r230753
2015-11-23opt.ads (Exception_Mechanism): Now three values: Front_End_SJLJ, ↵Olivier Hainque20-127/+298
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-19sem_elab.adb (Check_Internal_Call_Continue): Correction to previous change...Bob Duff2-1/+7
2015-11-19 Bob Duff <duff@adacore.com> * sem_elab.adb (Check_Internal_Call_Continue): Correction to previous change: correctly handle generic formals/actuals that look like renamings. From-SVN: r230617
2015-11-18trans.c (elaborate_all_entities_for_package): New function extracted from...Eric Botcazou2-29/+79
* 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 Botcazou7-316/+404
* 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 Botcazou2-30/+43
* 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 Botcazou2-2/+8
* 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 Botcazou2-0/+8
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-18sem_ch4.adb (Try_Container_Indexing): When constructing the parameter list ↵Ed Schonberg3-3/+32
for the potentially overloaded calls to... 2015-11-18 Ed Schonberg <schonberg@adacore.com> * sem_ch4.adb (Try_Container_Indexing): When constructing the parameter list for the potentially overloaded calls to indexing functions, do not propagate overloadings if the actual is a named association: overloadings appear directly on the expression in the association. 2015-11-18 Ed Schonberg <schonberg@adacore.com> * sem_type.adb (Interface_Present_In_Ancestor): If the type is incomplete, the list of ancestors is found either on the full view or the non-limited view of the type. From-SVN: r230547
2015-11-18[multiple changes]Arnaud Charlet19-394/+774
2015-11-18 Nicolas Roche <roche@adacore.com> * sysdep.c (__gnat_localtime_tzoff): On Windows platform GetTimeZoneInformation function is thread-safe. Thus there is no need to lock the runtime in the implementation of __gnat_localtime_tzoff on that platform. 2015-11-18 Eric Botcazou <ebotcazou@adacore.com> * s-arit64.adb (To_Neg_Int): Add a special case for 2**63 input. 2015-11-18 Hristian Kirtchev <kirtchev@adacore.com> * contracts.adb (Analyze_Contracts): New routine. (Analyze_Enclosing_Package_Body_Contract): Removed. (Analyze_Entry_Or_Subprogram_Contract): Add formal parameter Freeze_Id. Propagate the entity of the freezing body to vaious analysis routines. (Analyze_Initial_Declaration_Contract): Removed. (Analyze_Object_Contract): Add formal parameter Freeze_Id. Propagate the entity of the freezing body to vaious analysis routines. (Analyze_Previous_Contracts): New routine. * contracts.ads (Analyze_Enclosing_Package_Body_Contract): Removed. (Analyze_Contracts): New routine. (Analyze_Entry_Or_Subprogram_Contract): Add formal parameter Freeze_Id and update the comment on usage. (Analyze_Initial_Declaration_Contract): Removed. (Analyze_Object_Contract): Add formal parameter Freeze_Id and update the comment on usage. (Analyze_Previous_Contracts): New routine. * sem_ch3.adb (Analyze_Declarations): Use Analyze_Contracts to analyze all contracts of eligible constructs. * sem_ch6.adb (Analyze_Generic_Subprogram_Body): A body no longer freezes the contract of its initial declaration. This effect is achieved through different means. (Analyze_Subprogram_Body_Helper): A body now freezes the contracts of all eligible constructs that precede it. A body no longer freezes the contract of its initial declaration. This effect is achieved through different means. * sem_ch7.adb (Analyze_Package_Body_Helper): A body now freezes the contracts of all eligible constructs that precede it. A body no longer freezes the contract of its initial declaration. This effect is achieved through different means. * sem_ch9.adb (Analyze_Entry_Body): A body now freezes the contracts of all eligible constructs that precede it. A body no longer freezes the contract of its initial declaration. This effect is achieved through different means. (Analyze_Protected_Body): A body now freezes the contracts of all eligible constructs that precede it. A body no longer freezes the contract of its initial declaration. This effect is achieved through different means. (Analyze_Task_Body): A body now freezes the contracts of all eligible constructs that precede it. A body no longer freezes the contract of its initial declaration. This effect is achieved through different means. * sem_prag.adb (Add_Item_To_Name_Buffer): Single protected/task objects now output their respective current instance of xxx type messages. (Analyze_Contract_Cases_In_Decl_Part): Add formal parameter Freeze_Id. Emit a clarification message when an undefined entity may the byproduct of contract freezing. (Analyze_Part_Of_In_Decl_Part): Add formal parameter Freeze_Id. Emit a clarification message when an undefined entity may the byproduct of contract freezing. (Analyze_Pre_Post_Condition_In_Decl_Part): Add formal parameter Freeze_Id. Emit a clarification message when an undefined entity may the byproduct of contract freezing. (Analyze_Refined_State_In_Decl_Part): Do not report unused body states as constituents of single protected/task types may not bave been identified yet. (Collect_Subprogram_Inputs_Outputs): Reimplemented. (Contract_Freeze_Error): New routine. (Process_Overloadable): Use predicate Is_Single_Task_Object. * sem_prag.ads (Analyze_Contract_Cases_In_Decl_Part): Add formal parameter Freeze_Id and update the comment on usage. (Analyze_Part_Of_In_Decl_Part): Add formal parameter Freeze_Id and update the comment on usage. (Analyze_Pre_Post_Condition_In_Decl_Part): Add formal parameter Freeze_Id and update the comment on usage. * sem_util.adb (Check_Unused_Body_States): Remove global variable Legal_Constits. The routine now reports unused body states regardless of whether constituents are legal or not. (Collect_Body_States): A constituent of a single protected/task type is not a visible state of a package body. (Collect_Visible_States): A constituent of a single protected/task type is not a visible state of a package body. (Has_Undefined_Reference): New routine. (Is_Single_Concurrent_Object): Reimplemented. (Is_Single_Protected_Object): New routine. (Is_Single_Task_Object): New routine. (Is_Visible_Object): New routine. (Report_Unused_Body_States): Moved to Check_Unused_Body_States. * sem_util.ads (Check_Unused_Body_States): Update the comment on usage. (Has_Undefined_Reference): New routine. (Is_Single_Protected_Object): New routine. (Is_Single_Task_Object): New routine. (Report_Unused_Body_States): Moved to Check_Unused_Body_States. 2015-11-18 Pierre-Marie de Rodat <derodat@adacore.com> * Makefile.rtl, impunit.adb: Add g-strhas.ads. * g-strhas.ads: New file. * s-strhas.ads: Add a comment to redirect users to g-strhas.ads. 2015-11-18 Bob Duff <duff@adacore.com> * sem_elab.adb (Check_Internal_Call_Continue): Fix the case where the call in question is to a renaming of a subprogram that can be safely called without ABE. * checks.adb: Minor edits. From-SVN: r230546
2015-11-18[multiple changes]Arnaud Charlet12-7/+334
2015-11-18 Hristian Kirtchev <kirtchev@adacore.com> * atree.adb (Elist11): New routine. (Set_Elist11): New routine. * atree.ads (Elist11): New routine. (Set_Elist11): New routine. * atree.h: Define Elist11. * contracts.adb (Analyze_Object_Contract): Verify the legality of all references to a variable given that the variable is a constituent of a single protected/task type. * einfo.adb: Part_Of_References now utilizes Elist11. (Part_Of_References): New routine. (Set_Part_Of_References): New routine. (Write_Field11_Name): Add output for Part_Of_References. * einfo.ads New attribute Part_Of_References along with usage in entities. (Part_Of_References): New routine along with pragma Inline. (Set_Part_Of_References): New routine along with pragma Inline. * sem_prag.adb (Analyze_Constituent): Record a possible reference to a concurrent constituent. (Analyze_Global_Item): Record a possible reference to a concurrent constituent. (Analyze_Input_Output): Record a possible reference to a concurrent constituent. * sem_res.adb (Resolve_Entity_Name): Record a possible reference to a concurrent constituent. * sem_util.adb (Check_Part_Of_Reference): New routine. (Record_Possible_Part_Of_Reference): New routine. * sem_util.ads (Check_Part_Of_Reference): New routine. (Record_Possible_Part_Of_Reference): New routine. 2015-11-18 Ed Schonberg <schonberg@adacore.com> * checks.adb (Apply_Arithmetic_Overflow_Minimized_Eliminated): An if_expression is the proper place to apply the overflow minimization procedure if its context is not an enclosing arithmetic expression. From-SVN: r230540
2015-11-18Regenerate doc.Arnaud Charlet2-479/+863
From-SVN: r230539
2015-11-18gnat_project_manager.rst, [...]: Update doc.Arnaud Charlet7-52/+405
* gnat_ugn/gnat_project_manager.rst, gnat_ugn/building_executable_programs_with_gnat.rst, gnat_ugn/gnat_and_program_execution.rst, gnat_ugn/the_gnat_compilation_model.rst, gnat_rm/implementation_defined_pragmas.rst, gnat_rm/standard_and_implementation_defined_restrictions.rst, gnat_ugn.texi, gnat_rm.texi: Update doc. From-SVN: r230538
2015-11-18Minor code clean ups.Arnaud Charlet1-11/+9
From-SVN: r230537
2015-11-18[multiple changes]Arnaud Charlet9-48/+91
2015-11-18 Hristian Kirtchev <kirtchev@adacore.com> * contracts.adb (Add_Contract_Item): Chain pragmas Attach_Handler and Interrupt_Handler on the classifications list of a [generic] procedure N_Contract node. * contracts.ads (Add_Contract_Item): Update the comment on usage. * einfo.adb (Get_Pragma): Pragmas Attach_Handler and Interrupt_Handler are found on the classifications list of N_Contract nodes. * einfo.ads (Get_Pragma): Update the comment on usage. * sem_prag.adb (Process_Interrupt_Or_Attach_Handler): Code reformatting. Store the pragma as a contract item. 2015-11-18 Ed Schonberg <schonberg@adacore.com> * sem_ch8.adb (Available_Subtype): Use only in GNATprove mode. When generating code it may be necessary to create itypes at the point of use of a selected component, for example in the expansion of a record equality operation. 2015-11-18 Vincent Celier <celier@adacore.com> * s-os_lib.adb (Normalize_Pathname.Get_Directory): When invoking Normalize_Pathname, use the same values for parameters Resolve_Links and Case_Sensitive as the parent Normalize_Pathname. 2015-11-18 Vincent Celier <celier@adacore.com> * a-direct.adb (Containing_Directory): Return "." when the result is the current directory, not specified as an absolute path name. From-SVN: r230536
2015-11-18[multiple changes]Arnaud Charlet4-38/+121
2015-11-18 Hristian Kirtchev <kirtchev@adacore.com> * exp_aggr.adb (Is_Completely_Hidden_Discriminant): New routine. (Init_Hidden_Discriminants): Code reformatting. Do not initialize a completely hidden discriminant. * a-interr.ads (Get_CPU): Added SPARK_Mode, Volatile_Function and Global aspects on the function. 2015-11-18 Ed Schonberg <schonberg@adacore.com> * exp_intr.adb (Expand_Unc_Deallocation): If the designated type is a concurrent type, the deallocation applies to the corresponding record type, or to its class-wide type if the type is tagged. From-SVN: r230535
2015-11-18s-parame-vxworks.adb: Reduce default stack size for stack limit check to a ↵Doug Rupp3-5/+41
reasonable value 2015-11-18 Doug Rupp <rupp@adacore.com> * s-parame-vxworks.adb: Reduce default stack size for stack limit check to a reasonable value * s-tpopsp-vxworks.adb: Make Stack_Limit a task variable for vx5 and vxmils. From-SVN: r230534
2015-11-18[multiple changes]Arnaud Charlet14-15/+132
2015-11-18 Ed Schonberg <schonberg@adacore.com> * sem_ch5.adb (Analyze_Assignment): Diagnose assignment where left-hand side has a limited view of a class-wide type. * sem_ch6.adb (Detected_And_Exchange): Do not install a non-limited view if the scope of the type of the formal is visible through a limited_with_clause, even if the non-limited view is available. 2015-11-18 Emmanuel Briot <briot@adacore.com> * s-pooglo.ads: Make Global_Pool_Object aliased. 2015-11-18 Ed Schonberg <schonberg@adacore.com> * sem_attr.adb (Analyze_Attribute, case 'Access): If the prefix is an expression function, do not analyze the generated body if the current scope is not the scope of the expression function, as may happen if the attribute is an actual in an instantiation. * sem_ch10.adb, sem_ch12.adb, a-stzmap.adb, s-soflin.adb, a-stwima.adb: Fix typos. 2015-11-18 Arnaud Charlet <charlet@adacore.com> * exp_ch11.adb (Expand_N_Exception_Declaration): No-op when generating C code. 2015-11-18 Vincent Celier <celier@adacore.com> * g-comlin.adb (Find_Longest_Matching_Switch): Do not take into account a switch ending with '=' when the actual command line switch is not followed with a space or '='. 2015-11-18 Ed Schonberg <schonberg@adacore.com> * sem_res.adb (Resolve_Explicit_Dereference): Do not add an access check if the type of the prefix is known to exclude null. * a-coinve.adb (Get_Element_Access): The function returns an access type that excludes null, so add an explicit check for a null element pointer, which is created when Insert_Spaces is called on an indefinite vector container. From-SVN: r230533
2015-11-18re PR ada/66242 (Front-end error if exception propagation disabled)Hristian Kirtchev6-355/+286
2015-11-18 Hristian Kirtchev <kirtchev@adacore.com> PR ada/66242 * exp_ch3.adb (Default_Initialize_Object): Reimplemented. Abort defer / undefer pairs are now encapsulated in a block with an AT END handler. Partial finalization now takes restriction No_Exception_Propagation into account when generating blocks. * exp_ch7.adb Various reformattings. (Create_Finalizer): Change the generation of abort defer / undefer pairs and explain the lack of an AT END handler. (Process_Transient_Objects): Add generation of abort defer/undefer pairs. * exp_ch9.adb Various reformattings. (Build_Protected_Subprogram_Body): Use Build_Runtime_Call to construct a call to Abort_Defer. (Build_Protected_Subprogram_Call_Cleanup): Use Build_Runtime_Call to construct a call to Abort_Undefer. (Expand_N_Asynchronous_Select): Use Build_Runtime_Call to construct a call to Abort_Defer. * exp_intr.adb (Expand_Unc_Deallocation): Abort defer / undefer pairs are now encapsulated in a block with an AT END handler. Finalization now takes restriction No_Exception_Propagation into account when generating blocks. * exp_util.ads, exp_util.adb (Wrap_Cleanup_Procedure): Removed. From-SVN: r230531
2015-11-18[multiple changes]Arnaud Charlet7-6/+74
2015-11-18 Arnaud Charlet <charlet@adacore.com> * switch-c.adb (Scan_Front_End_Switches): Add a check requiring -gnatc with -gnateg. 2015-11-18 Ed Schonberg <schonberg@adacore.com> * sem_ch7.adb (Uninstall_Declarations): Before swapping private and full views, ensure that the potential use visbility of the two views is consistent. 2015-11-18 Doug Rupp <rupp@adacore.com> * s-parame-vxworks.adb: Increase default stack size for targets using stack limit checking. 2015-11-18 Jose Ruiz <ruiz@adacore.com> * a-interr.adb, a-interr.ads (Ada.Interrupts.Get_CPU): Add this function that was added to Ada 2005 returning the processor where interrupt handlers execute. 2015-11-18 Tristan Gingold <gingold@adacore.com> * exp_ch9.adb (Is_Pure_Barrier): Handle expanded component declaration of a protected definition. From-SVN: r230529
2015-11-18[multiple changes]Arnaud Charlet4-7/+20
2015-11-18 Ed Falis <falis@adacore.com> * s-soflin.adb, s-stchop-vxworks.adb: Code clean ups. 2015-11-18 Gary Dismukes <dismukes@adacore.com> * bcheck.adb: Minor editorial changes. From-SVN: r230528
2015-11-18[multiple changes]Arnaud Charlet4-4/+30
2015-11-18 Arnaud Charlet <charlet@adacore.com> * interfac.ads (Unsigned_24): New type. * sem_ch13.adb (Validate_Unchecked_Conversion): Disable error on unconstrained arrays in Relaxed_RM_Semantics mode. 2015-11-18 Vincent Celier <celier@adacore.com> * bcheck.adb (Check_Consistent_Dynamic_Elaboration_Checking): No warning is withed unit is the interface of a Stand-Alone Library. From-SVN: r230527
2015-11-18[multiple changes]Arnaud Charlet4-32/+56
2015-11-18 Thomas Quinot <quinot@adacore.com> * s-os_lib.ads, s-os_lib.adb(Normalize_Pathname): Support the case of an unresolved Directory argument, by recursively resolving it against the current dir. 2015-11-18 Ed Schonberg <schonberg@adacore.com> * sem_ch6.adb (Process_Formals): A function declaration that returns a class-wide type must have freeing deferred, so that it is not frozen before the class-wide type and its root type are frozen. This is significant when there may be a limited view of the class_wide type in another package. From-SVN: r230526
2015-11-18[multiple changes]Arnaud Charlet7-32/+110
2015-11-18 Hristian Kirtchev <kirtchev@adacore.com> * einfo.adb (Has_Non_Null_Refinement): Rename to Has_Non_Null_Visible_Refinement. (Has_Null_Refinement): Rename to Has_Null_Visible_Refinement. * einfo.ads Update the documentation of attribute Has_Non_Null_Refinement and attribute Has_Null_Refinement. (Has_Non_Null_Refinement): Rename to Has_Non_Null_Visible_Refinement and update occurrences in entities. (Has_Null_Refinement): Rename to Has_Null_Visible_Refinement and update occurrences in entities. * sem_prag.adb (Check_In_Out_States): Update the calls to Has_[Non_]Null_Refinement. (Check_Input_States): Update the calls to Has_[Non_]Null_Refinement. (Check_Output_States): Update the calls to Has_[Non_]Null_Refinement. (Check_Proof_In_States): Update the calls to Has_[Non_]Null_Refinement. (Collect_Global_Item): Update the calls to Has_[Non_]Null_Refinement. (Is_Null_Refined_State): Update the calls to Has_[Non_]Null_Refinement. (Match_Item): Update the calls to Has_[Non_]Null_Refinement. * sem_util.adb (Has_Non_Null_Refinement): New routine. (Has_Null_Refinement): New routine. * sem_util.ads (Has_Non_Null_Refinement): New routine. (Has_Null_Refinement): New routine. 2015-11-18 Gary Dismukes <dismukes@adacore.com> * exp_util.adb: Minor reformatting and typo fixes. From-SVN: r230525
2015-11-18sem_ch4.adb: Minor reformatting.Hristian Kirtchev6-42/+102
2015-11-18 Hristian Kirtchev <kirtchev@adacore.com> * sem_ch4.adb: Minor reformatting. 2015-11-18 Hristian Kirtchev <kirtchev@adacore.com> * exp_util.adb (Expand_Subtype_From_Expr): Add new formal parameter Related_Id and propagate it to Make_Subtype_From_Expr. (Make_Subtype_From_Expr): Add new formal parameter Related_Id. Create external entities when requested by the caller. * exp_util.ads (Expand_Subtype_From_Expr): Add new formal parameter Related_Id. Update the comment on usage. (Make_Subtype_From_Expr): Add new formal parameter Related_Id. Update the comment on usage. * sem_ch3.adb (Analyze_Object_Declaration): Add local variable Related_Id. Generate an external constrained subtype when the object is a public symbol. 2015-11-18 Hristian Kirtchev <kirtchev@adacore.com> * sem_prag.adb (Analyze_Pragma): Update the grammars of pragmas Abstract_State, Depends, Global, Initializes, Refined_Depends, Refined_Global and Refined_State. From-SVN: r230524
2015-11-18[multiple changes]Arnaud Charlet7-22/+99
2015-11-18 Hristian Kirtchev <kirtchev@adacore.com> * sem_util.adb (Has_Full_Default_Initialization): Perform the test for the presence of pragma Default_Initial_Condition prior to the specialized type checks. Add a missing case where the lack of a pragma argument yields full default initialization. 2015-11-18 Hristian Kirtchev <kirtchev@adacore.com> * sem_res.adb (Resolve_Entity_Name): Do not check for elaboration issues when a variable appears as the name of an object renaming declaration as this constitutes an aliasing, not a read. 2015-11-18 Ed Schonberg <schonberg@adacore.com> * checks.adb (Overlap_Check): An actual that is an aggregate cannot overlap with another actual, and no check should be generated for it. * targparm.ads: Fix typos. 2015-11-18 Pascal Obry <obry@adacore.com> * adaint.c: Routine __gnat_killprocesstree only implemented on Linux and Windows. 2015-11-18 Pascal Obry <obry@adacore.com> * g-ctrl_c.adb: Minor style fixes. From-SVN: r230523
2015-11-18[multiple changes]Arnaud Charlet6-4/+162
2015-11-18 Pascal Obry <obry@adacore.com> * adaint.c, s-os_lib.adb, s-os_lib.ads (Kill_Process_Tree): New. 2015-11-18 Hristian Kirtchev <kirtchev@adacore.com> * sem_util.adb (Check_Nonvolatile_Function_Profile): Place the error message concerning the return type on the result definition. (Is_Volatile_Function): A function with a parameter of a protected type is a protected function if it is defined within a protected definition. 2015-11-18 Ed Schonberg <schonberg@adacore.com> * sem_ch4.adb (Try_Container_Indexing): When building the parameter list for the function call on indexing functions, preserve overloading of the parameters, which may themselves be generalized indexing operations. From-SVN: r230522
2015-11-14re PR ada/68345 (gnat build broken on dragonfly due to omission of r229342)Arnaud Charlet2-2/+6
2015-11-13 Arnaud Charlet <charlet@adacore.com> PR ada/68345 * s-osinte-dragonfly.ads (Get_Page_Size): C function returns an int. From-SVN: r230373
2015-11-13Source range tracking in libcpp and C FE, with bit-packing optimizationDavid Malcolm2-1/+7
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-13[multiple changes]Arnaud Charlet3-24/+46
2015-11-13 Hristian Kirtchev <kirtchev@adacore.com> * exp_attr.adb: Minor reformatting. 2015-11-13 Pascal Obry <obry@adacore.com> * adaint.c: Ensure that it is possible to get killed process status on Windows. From-SVN: r230318