aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2020-12-15c++: module mapperNathan Sidwell4-1/+448
To avoid always requiring an active mapper to connect to, we provide a default in-process mapper with similar functionality to the sample server. This is that code. Also included is the client-side connection mechanism, which determines what server to use and how to connect to it. gcc/cp/ * Make-lang.in (CXX_AND_OBJCXX_OBJS): Add mapper-client & mapper-resolver. * mapper-client.h: New. * mapper-client.cc: New. * mapper-resolver.cc: New.
2020-12-15Add libcodyNathan Sidwell1-2/+6
In order to separate compiler from build system, C++ Modules, as implemented in GCC introduces a communication channel between those two entities. This is implemented by libcody. It is anticipated that other implementations will also implement this protocol, or use libcody to provide it. * Makefile.def: Add libcody. * configure.ac: Add libcody. * Makefile.in: Regenerated. * configure: Regenerated. gcc/ * Makefile.in (CODYINC, CODYLIB, CODYLIB_H): New. Use them. libcody/ * configure.ac: New. * CMakeLists.txt: New. * CODING.md: New. * CONTRIB.md: New. * LICENSE: New. * LICENSE.gcc: New. * Makefile.in: New. * Makesub.in: New. * README.md: New. * buffer.cc: New. * build-aux/config.guess: New. * build-aux/config.sub: New. * build-aux/install-sh: New. * client.cc: New. * cmake/libcody-config-ix.cmake * cody.hh: New. * config.h.in: New. * config.m4: New. * configure: New. * configure.ac: New. * dox.cfg.in: New. * fatal.cc: New. * gdbinit.in: New. * internal.hh: New. * netclient.cc: New. * netserver.cc: New. * packet.cc: New. * resolver.cc: New. * server.cc: New. * tests/01-serialize/connect.cc: New. * tests/01-serialize/decoder.cc: New. * tests/01-serialize/encoder.cc: New. * tests/02-comms/client-1.cc: New. * tests/02-comms/pivot-1.cc: New. * tests/02-comms/server-1.cc: New. * tests/Makesub.in: New. * tests/jouster: New.
2020-12-15c++: module-related tweakNathan Sidwell1-2/+2
In manually applying a name-lookup patch, I managed to transpose two calls. That caused a test failure. Fixed thusly. gcc/cp/ * name-lookup.c (do_namespace_alias): Set originating module before pushing.
2020-12-15[Ada] Fix serial port baud rate setting on GNU/LinuxPascal Obry1-8/+102
gcc/ada/ * libgnat/g-sercom__linux.adb (Set): Use cfsetospeed and cfsetispeed to set the baud rate. Clear non-blocking serial port status when blocking is requested.
2020-12-15[Ada] Small adjustment to System.Val_RealEric Botcazou1-5/+4
gcc/ada/ * libgnat/s-valrea.adb (Integer_to_Real): Always use Extra.
2020-12-15[Ada] Simplify check for extra parensPiotr Trojanek1-7/+9
gcc/ada/ * par-ch5.adb (P_Condition): Simplify condition for warning about extra parens and make it easier to understand.
2020-12-15[Ada] Refactor repeated complains about missing -gnat2005 switchPiotr Trojanek9-156/+64
gcc/ada/ * errout.ads (Error_Msg_Ada_2005_Extension): New routine (spec). * errout.adb (Error_Msg_Ada_2005_Extension): New routine (body). * par-ch10.adb: Reuse new routine; correct casing for "LIMITED WITH". * par-ch11.adb: Likewise. * par-ch12.adb: Likewise. * par-ch3.adb: Likewise. * par-ch4.adb: Likewise; replace "box" with "<>". * par-ch6.adb: Likewise. * par-ch9.adb: Likewise; correct casing for "THEN ABORT".
2020-12-15[Ada] Small adjustment to parameterization of System.Value_REric Botcazou7-23/+54
gcc/ada/ * doc/gnat_ugn/gnat_and_program_execution.rst: Minor fix. * gnat_ugn.texi: Regenerate. * libgnat/s-valuer.ads (Precision_Limit): New formal parameter. * libgnat/s-valuer.adb (Precision_Limit): Remove. (Scan_Decimal_Digits): Robustify overflow check. (Scan_Integral_Digits): Likewise. * libgnat/s-valrea.adb: Add assertion on the size of the unsigned type and instantiate System.Value_R with the mantissa limit. (Integer_to_Real): Add Extra parameter and take it into account. (Scan_Real): Pass Extra to Integer_to_Real. (Value_Real): Likewise. * libgnat/s-valued.adb: Add assertion on the size of the unsigned type and instantiate System.Value_R with the mantissa limit. * libgnat/s-valuef.adb: Likewise.
2020-12-15[Ada] Postcondition checks performed before finalizationJustin Squirek12-64/+998
gcc/ada/ * contracts.adb, contracts.ads (Build_Postconditions_Procedure): Add declarations for Postcond_Enabled, Result_Object_For_Postcondition, and Return_Success_For_Postcond, and place all postconditions within an if statement to control their execution for interactions when cleanup actions get generated. (Get_Postcond_Enabled): Created to fetch object declared to handle new expansion of postconditions. (Get_Result_Object_For_Postcond): Created to fetch object declared to handle new expansion of postconditions. (Get_Return_Success_For_Postcond): Created to fetch object declared to handle new expansion of postconditions. * einfo.adb, einfo.ads: Modify flag Stores_Attribute_Old_Prefix to apply to constants, variables, and types. * exp_ch6.adb (Add_Return): Add assignment to Return_Success_For_Postcond. (Expand_Non_Function_Return): Add assignment to Return_Success_For_Postcond (Expand_Simple_Function_Return): Add assignment to Result_Object_For_Postcond and Return_Success_For_Postcond. * exp_ch7.adb (Build_Finalization_Master): Mark finalization masters which finalize types created store 'Old objects as storing 'Old objects. (Build_Finalizer): Created to generated a unified and special expansion for finalization when postconditions are present. (Build_Finalizer_Helper): Renamed Build_Finalizer and added parameter to facilitate the creation of separate finalization routines for 'Old objects and general objects. (Create_Finalizer): Add condition for the insertion of the finalizer spec to avoid malformed trees. (Expand_Cleanup_Actions): Move _postconditions and related declarations to the new declarative section. Fix the loop to properly stop at the subprogram declaration for the postconditions procedure and exclude its body from being moved to the new list of declarations to avoid freezing issues. * exp_prag.adb (Expand_Attributes): Mark temporary created to store 'Old objects as storing a 'Old attribute. * sem_ch6.adb (Find_What_Applies_To): Remove strange exception to postconditions when traversing the scope stack. * sem_prag.adb (Find_Related_Declaration_Or_Body): Use the newly created Enclosing_HSS function to find the HSS for a potentially nested statement. * sem_util.adb, sem_util.ads (Declare_Indirect_Temp): Mark types created to store 'Old objects as storing 'Old attributes. (Enclosing_HSS): Created to find the enclosing handled sequence of statements for a given statement. * snames.ads-tmpl: Add multiple names to aid in the expansion of finalization and to control the evaluation of postconditions. Including _finalization_controller, a new routine to centralize finalization actions and postcondition evaluation.
2020-12-15[Ada] Complain about missing -gnat2020 switch on iterator_filterPiotr Trojanek1-6/+6
gcc/ada/ * par-ch5.adb (P_Loop_Parameter_Specification): Complain about missing -gnat2020 switch. (P_Iterator_Specification): Likewise.
2020-12-15[Ada] Reuse Append_New in parsing aggregatesPiotr Trojanek1-30/+6
gcc/ada/ * par-ch4.adb (P_Aggregate_Or_Paren_Expr): Simplify with Append_New.
2020-12-15[Ada] Implement tiered support for floating-point input operationsEric Botcazou49-706/+1265
gcc/ada/ * Makefile.rtl (GNATRTL_NONTASKING_OBJS): Remove s-fatsfl$(objext) and add s-valflt$(objext), s-vallfl$(objext), s-valllf$(objext). * exp_attr.adb (Find_Fat_Info): Merge Short_Float and Float cases. * exp_imgv.adb (Expand_Value_Attribute): Replace RE_Value_Real with RE_Value_Long_Long_Float for fixed-point types and use appropriate base type for floating-point types. * rtsfind.ads (RTU_Id): Remove System_Fat_IEEE_Long_Float, System_Fat_IEEE_Short_Float and System_Val_Real, add System_Val_Flt, System_Val_LFlt and System_Val_LLF. (RE_Id): Remove RE_Attr_IEEE_Long, RE_Fat_IEEE_Long, RE_Attr_IEEE_Short, RE_Fat_IEEE_Short, RE_Attr_Short_Float, add RE_Value_Float, RE_Value_Long_Float, RE_Value_Long_Long_Float, (RE_Unit_Table): Likewise. * libgnat/a-ticoau.ads: Add with clause for Float_Aux and make the package generic. (Get): Change parameter types to Num. (Put): Likewise. (Gets): Likewise. (Puts): Likewise. * libgnat/a-ticoau.adb: Remove clause and renaming for Float_Aux. (Get): Change parameter types to Num. (Gets): Likewise. (Put): Likewise. (Puts): Likewise. Add conversion to Long_Long_Float. * libgnat/a-ticoio.adb: Remove with clause for Ada.Text_IO, add with clause for Float_Aux, add with and use clauses for System.Val_Flt, System.Val_LFlt and System.Val_LLF. Instantiate Float_Aux and Complex_Aux on Float, Long_Float, and Long_Long_Float. (OK_Float): New boolean constant. (OK_Long_Float): Likewise. (Get): Call appropriate Get routine from auxiliary package. (Get): Call appropriate Gets routine from auxiliary package. (Put): Call appropriate Put routine from auxiliary package. (Put): Call appropriate Puts routine from auxiliary package. * libgnat/a-tideau.adb: Remove with and use clause for Float_Aux. * libgnat/a-tifiau.adb: Likewise. * libgnat/a-tifiio.adb: Add with and use clause for System.Val_LLF. Instantiate Float_Aux on Long_Long_Float. (Get): Adjust call to Get routine from auxiliary package. (Get): Adjust call to Gets routine from auxiliary package. (Put): Adjust call to Put routine from auxiliary package. (Put): Adjust call to Puts routine from auxiliary package. * libgnat/a-tifiio__128.adb: Likewise. (Get): Likewise. (Get): Likewise. (Put): Likewise. (Put): Likewise. * libgnat/a-tiflau.ads: Make the package generic. (Get): Change parameter type to Num. (Put): Likewise. (Gets): Likewise. (Puts): Likewise. * libgnat/a-tiflau.adb: Remove clauses for System.Val_Real. (Get): Change parameter type to Num and call Scan routine. (Gets): Likewise. (Load_Real): Move to... (Put): Change parameter type and add conversion to Long_Long_Float. (Puts): Likewise. * libgnat/a-tiflio.adb: Add with and use clauses for System.Val_Flt, System.Val_LFlt and System.Val_LLF. Instantiate Float_Aux on Float, Long_Float and Long_Long_Float. (OK_Float): New boolean constant. (OK_Long_Float): Likewise. (Get): Call appropriate Get routine from auxiliary package. (Get): Call previous variant. (Get): Call appropriate Gets routine from auxiliary package. (Put): Call appropriate Put routine from auxiliary package. (Put): Call previous variant. (Put): Call appropriate Puts routine from auxiliary package. * libgnat/a-tigeau.ads (Load_Real): New procedure. * libgnat/a-tigeau.adb (Load_Real): ...here. * libgnat/a-wtcoau.ads: Add with clause for Float_Aux and make the package generic. (Get): Change parameter types to Num. (Put): Likewise. (Gets): Likewise. (Puts): Likewise. * libgnat/a-wtcoau.adb: Remove clause and renaming for Float_Aux. (Get): Change parameter types to Num. (Gets): Likewise. (Put): Likewise. (Puts): Likewise. Add conversion to Long_Long_Float. * libgnat/a-wtcoio.ads: Remove use clause for Complex_Types and use qualified names throughout accordingly. * libgnat/a-wtcoio.adb: Remove clause for Ada.Unchecked_Conversion, add with clause for Float_Aux, add clauses for System.Val_Flt, System.Val_LFlt and System.Val_LLF. Add clause for Complex_Types. Instantiate Float_Aux and Complex_Aux on Float, Long_Float, and Long_Long_Float. Remove LLF subtype and TFT instantiation. (OK_Float): New boolean constant. (OK_Long_Float): Likewise. (Get): Call appropriate Get routine from auxiliary package. (Get): Call appropriate Gets routine from auxiliary package. (Put): Call appropriate Put routine from auxiliary package. (Put): Call appropriate Puts routine from auxiliary package. * libgnat/a-wtdeau.adb: Remove with and use clause for Float_Aux. * libgnat/a-wtfiau.adb: Likewise. * libgnat/a-wtfiio.adb: Add with and use clause for System.Val_LLF. Instantiate Float_Aux on Long_Long_Float. (Get): Adjust call to Get routine from auxiliary package. (Get): Adjust call to Gets routine from auxiliary package. (Put): Adjust call to Put routine from auxiliary package. (Put): Adjust call to Puts routine from auxiliary package. * libgnat/a-wtfiio__128.adb: Likewise. (Get): Likewise. (Get): Likewise. (Put): Likewise. (Put): Likewise. * libgnat/a-wtflau.ads: Make the package generic. (Get): Change parameter type to Num. (Put): Likewise. (Gets): Likewise. (Puts): Likewise. * libgnat/a-wtflau.adb: Remove clauses for System.Val_Real. (Get): Change parameter type to Num and call Scan routine. Set Ptr parameter lazily. (Gets): Likewise. (Load_Real): Move to... (Put): Change parameter type and add conversion to Long_Long_Float. Bump buffer length to Max_Real_Image_Length. (Puts): Likewise. * libgnat/a-wtflio.adb: Add with and use clauses for System.Val_Flt, System.Val_LFlt and System.Val_LLF. Instantiate Float_Aux on Float, Long_Float and Long_Long_Float. (OK_Float): New boolean constant. (OK_Long_Float): Likewise. (Get): Call appropriate Get routine from auxiliary package. Add pragma Unsuppress (Range_Check) and manual validity check. (Get): Call appropriate Gets routine from auxiliary package. Add pragma Unsuppress (Range_Check) and manual validity check. (Put): Call appropriate Put routine from auxiliary package. (Put): Call appropriate Puts routine from auxiliary package. * libgnat/a-wtgeau.ads (Load_Real): New procedure. * libgnat/a-wtgeau.adb (Load_Real): ...here. * libgnat/a-ztcoau.ads: Add with clause for Float_Aux and make the package generic. (Get): Change parameter types to Num. (Put): Likewise. (Gets): Likewise. (Puts): Likewise. * libgnat/a-ztcoau.adb: Remove clause and renaming for Float_Aux. (Get): Change parameter types to Num. (Gets): Likewise. (Put): Likewise. (Puts): Likewise. Add conversion to Long_Long_Float. * libgnat/a-ztcoio.ads: Remove use clause for Complex_Types and use qualified names throughout accordingly. * libgnat/a-ztcoio.adb: Remove clause for Ada.Unchecked_Conversion, add with clause for Float_Aux, add clauses for System.Val_Flt, System.Val_LFlt and System.Val_LLF. Add clause for Complex_Types. Instantiate Float_Aux and Complex_Aux on Float, Long_Float, and Long_Long_Float. Remove LLF subtype and TFT instantiation. (OK_Float): New boolean constant. (OK_Long_Float): Likewise. (Get): Call appropriate Get routine from auxiliary package. (Get): Call appropriate Gets routine from auxiliary package. (Put): Call appropriate Put routine from auxiliary package. (Put): Call appropriate Puts routine from auxiliary package. * libgnat/a-ztdeau.adb: Remove with and use clause for Float_Aux. * libgnat/a-ztfiau.adb: Likewise. * libgnat/a-ztfiio.adb: Add with and use clause for System.Val_LLF. Instantiate Float_Aux on Long_Long_Float. (Get): Adjust call to Get routine from auxiliary package. (Get): Adjust call to Gets routine from auxiliary package. (Put): Adjust call to Put routine from auxiliary package. (Put): Adjust call to Puts routine from auxiliary package. * libgnat/a-ztfiio__128.adb: Likewise. (Get): Likewise. (Get): Likewise. (Put): Likewise. (Put): Likewise. * libgnat/a-ztflau.ads: Make the package generic. (Get): Change parameter type to Num. (Put): Likewise. (Gets): Likewise. (Puts): Likewise. * libgnat/a-ztflau.adb: Remove clauses for System.Val_Real. (Get): Change parameter type to Num and call Scan routine. Set Ptr parameter lazily. (Gets): Likewise. (Load_Real): Move to... (Put): Change parameter type and add conversion to Long_Long_Float. Bump buffer length to Max_Real_Image_Length. (Puts): Likewise. * libgnat/a-ztflio.adb: Add with and use clauses for System.Val_Flt, System.Val_LFlt and System.Val_LLF. Instantiate Float_Aux on Float, Long_Float and Long_Long_Float. (OK_Float): New boolean constant. (OK_Long_Float): Likewise. (Get): Call appropriate Get routine from auxiliary package. Add pragma Unsuppress (Range_Check) and manual validity check. (Get): Call appropriate Gets routine from auxiliary package. Add pragma Unsuppress (Range_Check) and manual validity check. (Put): Call appropriate Put routine from auxiliary package. (Put): Call appropriate Puts routine from auxiliary package. * libgnat/a-ztgeau.ads (Load_Real): New procedure. * libgnat/a-ztgeau.adb (Load_Real): ...here. * libgnat/s-fatsfl.ads: Delete. * libgnat/s-valflt.ads: New package. * libgnat/s-vallfl.ads: Likewise. * libgnat/s-valllf.ads: Likewise. * libgnat/s-valrea.ads: Make generic. Add assertions, defensive code and clarify intent. (Scan_Real): Change parameter type to Num. (Value_Real): Likewise. * libgnat/s-valrea.adb: Instantiate Value_R on Uns. (Integer_to_Real): Change parameter and result to Num. Call Float_Control.Reset only if the mantissa is 64 bits. Use a divide to compute the final value if the scale is negative. (Scan_Real): Change result to Num. (Value_Real): Likewise. * libgnat/s-valuer.adb: Add assertions, defensive code and clarify intent. (F_Limit): Delete. (I_Limit): Likewise. (Precision_Limit): Always use the integer limit. * libgnat/s-fatgen.adb: Add pragma Annotate.
2020-12-15[Ada] Mark generic body outside of SPARKYannick Moy2-2/+2
gcc/ada/ * libgnat/a-tiflio.adb: Mark body not in SPARK. * libgnat/a-tiflio.ads: Mark spec in SPARK.
2020-12-15[Ada] Transform_Function_Array issuesArnaud Charlet6-32/+69
gcc/ada/ * exp_ch6.adb (Build_Procedure_Body_Form): Adjust, the declaration of the procedure form is now insert before the original function body rather than after. (Expand_N_Subprogram_Declaration): Deal with private types whose full views are arrays. * exp_unst.adb (Unnest_Subprogram): Deal with private types. (Needs_Fat_Pointer): Code cleanup. * freeze.adb (Freeze_Subprogram): Ditto. * exp_util.adb (Build_Procedure_Form): Insert the procedure form decl before and not after. * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Build missing spec when needed for Transform_Function_Array. * sem_util.adb (Get_Fullest_View): Deal with null entity.
2020-12-15[Ada] Simplify discarding nodes when processing aspect/pragma PriorityPiotr Trojanek2-19/+10
gcc/ada/ * sem_ch13.adb (Analyze_Aspect_Specifications): Simplify code for aspect Priority. * sem_prag.adb (Analyze_Pragma): Simplify code for pragma Priority.
2020-12-15[Ada] Crash on unnesting unnamed blocksArnaud Charlet1-30/+19
gcc/ada/ * exp_ch7.adb (Reset_Scopes_To_Block_Elab_Proc): Do not crash on a block with no Identifier. Code cleanups.
2020-12-15[Ada] Refactor repeated code for Value attributesPiotr Trojanek1-35/+6
gcc/ada/ * sem_attr.adb (Analyze_Attribute): Reuse existing code for attribute Value when analyzing attributes Wide_Value and Wide_Wide_Value.
2020-12-15[Ada] Fix possible infinite recursion in directory iteratorPascal Obry2-2/+5
gcc/ada/ * libgnat/g-diopit.adb (Find): Fix possible infinite recursion in Find iterator. * libgnat/g-diopit.ads (Find): Update comments accordingly.
2020-12-15[Ada] Refactor repeated code for Callable and Terminated attributesPiotr Trojanek1-7/+6
gcc/ada/ * sem_attr.adb (Analyze_Attribute): Merge identical code for Callable and Terminated attributes; refactor calls to Set_Etype occurring in both THEN and ELSE branches of an IF statement for attribute Storage_Size.
2020-12-15[Ada] Refactor repeated code for Width attributesPiotr Trojanek1-9/+6
gcc/ada/ * sem_attr.adb (Analyze_Attribute): Merge identical code for Wide_Wide_Width, Wide_Width and Width attributes.
2020-12-15[Ada] Refactor repeated code for Pred and Succ attributesPiotr Trojanek1-28/+7
gcc/ada/ * sem_attr.adb (Analyze_Attribute): Merge identical code for Pred and Succ attributes.
2020-12-15[Ada] Refactor repeated code for size attributesPiotr Trojanek1-11/+6
gcc/ada/ * sem_attr.adb (Analyze_Attribute): Merge identical code for Size, Object_Size and Value_Size attributes.
2020-12-15[Ada] Refactor repeated code for fixed point attributesPiotr Trojanek1-3/+2
gcc/ada/ * sem_attr.adb (Analyze_Attribute): Consistently call Check_Fixed_Point_Type before checking the number of attribute expressions (like it is done for floating point types); reuse Check_Fixed_Point_Type_0.
2020-12-15[Ada] Remove redundant calls to UI_To_Int in relational operandsPiotr Trojanek3-7/+5
gcc/ada/ * exp_disp.adb (Make_Tags): Remove call to UI_To_Int. * sem_attr.adb (Check_Array_Type): Likewise; also, refine type of a local variable. (Analyze_Attribute): Likewise. (Get_Enclosing_Object): Likewise. * sem_util.adb (Get_Enum_Lit_From_Pos): Likewise.
2020-12-15[Ada] Refactor repeated code for component attributesPiotr Trojanek1-3/+2
gcc/ada/ * sem_attr.adb (Analyze_Attribute): Merge identical code for First_Bit/Last_Bit and Position attributes.
2020-12-15[Ada] Refactor repeated code for real type attributes returning integersPiotr Trojanek1-5/+4
gcc/ada/ * sem_attr.adb (Analyze_Attribute): Merge identical code for Machine_Radix and Mantissa attributes.
2020-12-15[Ada] Refactor repeated code for real type attributes returning booleansPiotr Trojanek1-5/+4
gcc/ada/ * sem_attr.adb (Analyze_Attribute): Merge identical code for Machine_Overflows and Machine_Rounds attributes.
2020-12-15[Ada] Refactor repeated code for real type attributes returning realsPiotr Trojanek1-13/+8
gcc/ada/ * sem_attr.adb (Analyze_Attribute): Merge identical code for Large, Small, Safe_Large and Safe_Small attributes.
2020-12-15[Ada] Refactor repeated code for floating point attributes returning realsPiotr Trojanek1-13/+10
gcc/ada/ * sem_attr.adb (Analyze_Attribute): Merge identical code for Epsilon, Model_Epsilon, Model_Small, Safe_First and Safe_Las attributes.
2020-12-15[Ada] Refactor repeated code for floating point attributes returning intsPiotr Trojanek1-19/+14
gcc/ada/ * sem_attr.adb (Analyze_Attribute): Merge identical code for Emax, Machine_Emax, Machine_Emin, Machine_Mantissa, Model_Emin, Model_Mantissa and Safe_Emax attributes.
2020-12-15[Ada] Refactor duplicated code for Denorm and Signed_Zeros attributesPiotr Trojanek1-4/+4
gcc/ada/ * sem_attr.adb (Analyze_Attribute): Merge identical code for Denorm and Signed_Zeros attributes.
2020-12-15[Ada] Refactor duplicated code for Adjacent, Copy_Sign and RemainderPiotr Trojanek1-12/+7
gcc/ada/ * sem_attr.adb (Analyze_Attribute): Merge identical code for Adjacent, Copy_Sign and Remainder attributes. (Check_Floating_Point_Type_2): Fix style in comment.
2020-12-15[Ada] Refactor duplicated code for Compose, Leading_Part and ScalingPiotr Trojanek1-11/+6
gcc/ada/ * sem_attr.adb (Analyze_Attribute): Merge identical code for Compose, Leading_Part and Scaling attributes.
2020-12-15i386: Fix up -march=x86-64-v[234] vs. target attribute [PR98274]Jakub Jelinek2-7/+15
The following testcase fails to compile. The problem is that when ix86_option_override_internal is called the first time for command line, it sees -mtune= wasn't present on the command line and so as fallback sets ix86_tune_string to ix86_arch_string value ("x86-64-v2"), but ix86_tune_specified is false, so we don't find the tuning in the table but don't error on it. When processing the target attribute, ix86_tune_string is what it was earlier left with, but this time ix86_tune_specified is true and so we error on it. The following patch does what is done already e.g. for "x86-64" march, in particular default the tuning to "generic". 2020-12-15 Jakub Jelinek <jakub@redhat.com> PR target/98274 * config/i386/i386-options.c (ix86_option_override_internal): Set ix86_tune_string to "generic" even when it wasn't specified and ix86_arch_string is "x86-64-v2", "x86-64-v3" or "x86-64-v4". Remove useless {}s around a single statement. * gcc.target/i386/pr98274.c: New test.
2020-12-15lto: set nthreads_var to 1 if it is zeroMartin Liska1-0/+2
gcc/ChangeLog: PR lto/98275 * lto-wrapper.c: Do not use -j0 when we are unable to detect number of cores.
2020-12-15i386: Make -march=x86-64-v[234] behave more like other -march= optionsJakub Jelinek12-23/+47
If somebody has -march=x86-64-v2 (or -v3 or -v4) in $CFLAGS, $CXXFLAGS etc., then -m32 or -mabi=ms stops working. What is worse, if one configures gcc --with-arch-64=x86-64-v2 (or -v3 or -v4), then -mabi=ms stops working. I think that is a nightmare user experience. It is ok that x86-64-v[234] behave slightly different from other -march= options (in that they imply unless overridden -mtune=generic rather then -mtune= equal to the -march argument), but the error when one mixes it with -mabi=ms, or -m32 doesn't improve anything. It is true that the exact option set is only defined in the x86-64 psABI (IMHO that is a mistake too, we should copy that into the GCC documentation like we document it for any other -march= option), but there is no reason why that exact set of CPU features can't be used for other ABIs, it is just a set of CPU features. If we add micro-architecture levels to the 32-bit ABI (I doubt anyone wants to do that, but just hypothetically), then those micro-architecture levels wouldn't certainly be called x86-64-v* but perhaps i386-v*. In the tests, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 can't be expected on -m32 not because the CPU feature wouldn't be set, but because the instruction is 64-bit only and 32-bit code doesn't have __int128 etc. support. 2020-12-15 Jakub Jelinek <jakub@redhat.com> * config/i386/i386-options.c (ix86_option_override_internal): Don't error on -march=x86-64-v[234] with -m32 or -mabi=ms. * config.gcc: Don't reject --with-arch=x86-64-v[234] or --with-arch_32=x86-64-v[234]. * doc/invoke.texi (-march=x86-64-v[234]): Document what the option does for other ABIs. * gcc.target/i386/x86-64-v2.c: Don't expect __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 to be defined with -m32. * gcc.target/i386/x86-64-v2-other.c: New test. * gcc.target/i386/x86-64-v2-msabi.c: New test. * gcc.target/i386/x86-64-v3.c: Fix a comment pasto. Don't expect __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 to be defined with -m32. * gcc.target/i386/x86-64-v3-other.c: New test. * gcc.target/i386/x86-64-v3-msabi.c: New test. * gcc.target/i386/x86-64-v4.c:Don't expect __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 to be defined with -m32. * gcc.target/i386/x86-64-v4-other.c: New test. * gcc.target/i386/x86-64-v4-msabi.c: New test.
2020-12-15gcov: fix line output for nested functions in JSON formatMartin Liska1-5/+13
gcc/ChangeLog: PR gcov-profile/98273 * gcov.c (output_json_intermediate_file): Use stack of nested functions for lines in a source file. Pop when a function ends.
2020-12-15doc: Update link to KernelAddressSanitizerGerald Pfeifer1-1/+1
gcc/ChangeLog: 2020-12-15 Gerald Pfeifer <gerald@pfeifer.com> * doc/invoke.texi (Instrumentation Options): Update link to KernelAddressSanitizer.
2020-12-14gcc: xtensa: fix PR target/98285Max Filippov3-9/+68
2020-12-14 Max Filippov <jcmvbkbc@gmail.com> gcc/ * config/xtensa/predicates.md (addsubx_operand): Change accepted values from 2/4/8 to 1..3. * config/xtensa/xtensa.md (*addx, *subx): Change RTL pattern to use 'ashift' instead of 'mult'. Update operands[3] value. gcc/testsuite/ * gcc.target/xtensa/pr98285.c: New test.
2020-12-14go-test.exp: retain any characters at end of ERROR lineIan Lance Taylor1-2/+1
* go.test/go-test.exp (errchk): Retain any characters at the end of the comment.
2020-12-15Fix up testcase.liuhongt1-1/+1
gcc/testsuite * gcc.target/i386/pr78102.c: Adjust testcase.
2020-12-15Daily bump.GCC Administrator6-1/+496
2020-12-15rs6000: Update the processor defaults for FreeBSDGerald Pfeifer1-3/+2
gcc/ChangeLog: 2020-12-13 Piotr Kubaj <pkubaj@FreeBSD.org> Gerald Pfeifer <gerald@pfeifer.com> * config/rs6000/freebsd64.h (PROCESSOR_DEFAULT): Update to PROCESSOR_PPC7450. (PROCESSOR_DEFAULT64): Update to PROCESSOR_POWER8.
2020-12-14Correct/improve maybe_emit_free_warning (PR middle-end/98166, PR c++/57111, ↵Martin Sebor18-250/+1649
PR middle-end/98160). Resolves: PR middle-end/98166 - bogus -Wmismatched-dealloc on user-defined allocator and inlining PR c++/57111 - 57111 - Generalize -Wfree-nonheap-object to delete PR middle-end/98160 - ICE in default_tree_printer at gcc/tree-diagnostic.c:270 gcc/ChangeLog: PR middle-end/98166 PR c++/57111 PR middle-end/98160 * builtins.c (check_access): Call tree_inlined_location fndecl_alloc_p): Handle BUILT_IN_ALIGNED_ALLOC and BUILT_IN_GOMP_ALLOC. call_dealloc_p): Remove unused function. (new_delete_mismatch_p): Call valid_new_delete_pair_p and rework. (matching_alloc_calls_p): Handle built-in deallocation functions. (warn_dealloc_offset): Corrct the handling of user-defined operators delete. (maybe_emit_free_warning): Avoid assuming expression is a decl. Simplify. * doc/extend.texi (attribute malloc): Update. * tree-ssa-dce.c (valid_new_delete_pair_p): Factor code out into valid_new_delete_pair_p in tree.c. * tree.c (tree_inlined_location): Define new function. (valid_new_delete_pair_p): Define. * tree.h (tree_inlined_location): Declare. (valid_new_delete_pair_p): Declare. gcc/c-family/ChangeLog: PR middle-end/98166 PR c++/57111 PR middle-end/98160 * c-attribs.c (maybe_add_noinline): New function. (handle_malloc_attribute): Call it. Use ATTR_FLAG_INTERNAL. Implicitly add attribute noinline to functions not declared inline and warn on those. libstdc++-v3/ChangeLog: * testsuite/ext/vstring/requirements/exception/basic.cc: Suppress a false positive warning. * testsuite/ext/vstring/requirements/exception/propagation_consistent.cc: Same. gcc/testsuite/ChangeLog: PR middle-end/98166 PR c++/57111 PR middle-end/98160 * g++.dg/warn/Wmismatched-dealloc-2.C: Adjust test of expected warning. * g++.dg/warn/Wmismatched-new-delete.C: Same. * gcc.dg/Wmismatched-dealloc.c: Same. * c-c++-common/Wfree-nonheap-object-2.c: New test. * c-c++-common/Wfree-nonheap-object-3.c: New test. * c-c++-common/Wfree-nonheap-object.c: New test. * c-c++-common/Wmismatched-dealloc.c: New test. * g++.dg/warn/Wfree-nonheap-object-3.C: New test. * g++.dg/warn/Wfree-nonheap-object-4.C: New test. * g++.dg/warn/Wmismatched-dealloc-2.C: New test. * g++.dg/warn/Wmismatched-new-delete-2.C: New test. * g++.dg/warn/Wmismatched-new-delete.C: New test. * gcc.dg/Wmismatched-dealloc-2.c: New test. * gcc.dg/Wmismatched-dealloc-3.c: New test. * gcc.dg/Wmismatched-dealloc.c: New test.
2020-12-14disable --with-{cpu,arch,tune}-32Sebastian Pop1-10/+1
gcc/ * config.gcc (aarch64*-*-*): Remove --with-{cpu,arch,tune}-32 flags.
2020-12-14AArch64: Add support for --with-tuneWilco Dijkstra7-6/+54
Add support for --with-tune. Like --with-cpu and --with-arch, the argument is validated and transformed into a -mtune option to be processed like any other command-line option. --with-tune has no effect if a -mcpu or -mtune option is used. The validating code didn't allow --with-cpu=native, so explicitly allow that. Co-authored-by: Delia Burduv <delia.burduv@arm.com> Bootstrap OK, regress pass, OK to commit? 2020-09-03 Wilco Dijkstra <wdijkstr@arm.com> gcc/ * config.gcc (aarch64*-*-*): Add --with-tune. Support --with-cpu=native. * config/aarch64/aarch64.h (OPTION_DEFAULT_SPECS): Add --with-tune. gcc/testsuite/ * lib/target-supports.exp (check_effective_target_tune_cortex_a76): New effective target test. * gcc.target/aarch64/with-tune-config.c: New test. * gcc.target/aarch64/with-tune-march.c: Likewise. * gcc.target/aarch64/with-tune-mcpu.c: Likewise. * gcc.target/aarch64/with-tune-mtune.c: Likewise.
2020-12-14gcov: Update comments.Martin Liska1-2/+3
gcc/ChangeLog: * gcov.c (output_json_intermediate_file): Update comments.
2020-12-14[Ada] Analyze second parameter of attribute ScalingPiotr Trojanek1-0/+1
gcc/ada/ * sem_attr.adb (Analyze_Attribute): Resolve second parameter of attribute Scaling just like it is resolved for a similar attribute Compose.
2020-12-14[Ada] Refactor duplicated code for First and Last attributesPiotr Trojanek1-12/+12
gcc/ada/ * sem_attr.adb (Analyze_Attribute): Merge identical code for First/Last, First_Bit/Last_Bit and First_Valid/Last_Valid attributes.
2020-12-14[Ada] Process Truncation just like other floating point attributesPiotr Trojanek1-4/+2
gcc/ada/ * sem_attr.adb (Analyze_Attribute): Merge similar code for Truncation and other floating point attributes.