aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2019-12-17Use PLI to load up large constants if -mcpu=future.Michael Meissner3-6/+18
2019-12-17 Michael Meissner <meissner@linux.ibm.com> * config/rs6000/rs6000.c (num_insns_constant_gpr): Return 1 if the constant can be loaded with PLI if -mcpu=future. * config/rs6000/rs6000.md (movdi_internal64): Add alternative to use PLI to load up 34-bit constants if -mcpu=future. From-SVN: r279474
2019-12-17PR c++/79592 - missing explanation of invalid constexpr.Jason Merrill3-8/+39
We changed months back to use the pre-generic form for constexpr evaluation, but explain_invalid_constexpr_fn was still using DECL_SAVED_TREE. This mostly works, but misses some issues due to folding. So with this patch we save the pre-generic form of constexpr functions even when we know they can't produce a constant result. * constexpr.c (register_constexpr_fundef): Do store the body of a template instantiation that is not potentially constant. (explain_invalid_constexpr_fn): Look it up. (cxx_eval_call_expression): Check fundef->result. From-SVN: r279473
2019-12-17PR c++/92576 - redeclaration of variable template.Jason Merrill4-12/+17
The variable templates patch way back when forgot to add handling here. The simplest answer seems to be recursing to the underlying declaration. * decl.c (redeclaration_error_message): Recurse for variable templates. From-SVN: r279472
2019-12-17* name-lookup.c (get_std_name_hint): Add std::byte.Jason Merrill3-0/+9
From-SVN: r279471
2019-12-17re PR c++/59655 (incorrect diagnostic on templatized function with lambda ↵Jakub Jelinek5-2/+45
parameter) PR c++/59655 * pt.c (push_tinst_level_loc): If limit_bad_template_recursion, set TREE_NO_WARNING on tldcl. * decl2.c (no_linkage_error): Treat templates with TREE_NO_WARNING as defined during error recovery. * g++.dg/cpp0x/diag3.C: New test. From-SVN: r279470
2019-12-17re PR target/92841 (Optimize -fstack-protector-strong code generation a bit)Jakub Jelinek4-2/+130
PR target/92841 * config/i386/i386.md (@stack_protect_set_1_<mode>, @stack_protect_test_1_<mode>): Use output_asm_insn. (*stack_protect_set_2_<mode>, *stack_protect_set_3): New define_insns and corresponding define_peephole2s. * gcc.target/i386/pr92841.c: New test. From-SVN: r279468
2019-12-17Revert "Fix vector testcases for amdgcn."Andrew Stubbs4-12/+4
Apologies everyone. :-( From-SVN: r279466
2019-12-17Fix vector testcases for amdgcn.Andrew Stubbs4-4/+12
2019-12-17 Andrew Stubbs <ams@codesourcery.com> gcc/testsuite/ * gcc.dg/vect/pr65947-8.c: Change pass conditions for amdgcn. * gcc.dg/vect/vect-multitypes-11.c: Ensure that main isn't vectorized. * gcc.dg/vect/vect-multitypes-12.c: Likewise. From-SVN: r279465
2019-12-17symtab.c (symtab_node::get_partitioning_class): Aliases of external symbols ↵Jan Hubicka2-0/+10
are external. * symtab.c (symtab_node::get_partitioning_class): Aliases of external symbols are external. From-SVN: r279464
2019-12-17[ARM] Add support for -mpure-code in thumb-1 (v6m)Christophe Lyon12-30/+192
This patch extends support for -mpure-code to all thumb-1 processors, by removing the need for MOVT. Symbol addresses are built using upper8_15, upper0_7, lower8_15 and lower0_7 relocations, and constants are built using sequences of movs/adds and lsls instructions. The extension of the *thumb1_movhf pattern uses always the same size (6) although it can emit a shorter sequence when possible. This is similar to what *arm32_movhf already does. CASE_VECTOR_PC_RELATIVE is now false with -mpure-code, to avoid generating invalid assembly code with differences from symbols from two different sections (the difference cannot be computed by the assembler). Tests pr45701-[12].c needed a small adjustment to avoid matching upper8_15 when looking for the r8 register. Test no-literal-pool.c is augmented with __fp16, so it now uses -mfp16-format=ieee. Test thumb1-Os-mult.c generates an inline code sequence with -mpure-code and computes the multiplication by using a sequence of add/shift rather than using the multiply instruction, so we skip it in presence of -mpure-code. With -mcpu=cortex-m0, the pure-code/no-literal-pool.c fails because code like: static char *p = "Hello World"; char * testchar () { return p + 4; } generates 2 indirections (I removed non-essential directives/code) .section .rodata .LC0: .ascii "Hello World\000" .data p: .word .LC0 .section .rodata .LC2: .word p .section .text,"0x20000006",%progbits testchar: push {r7, lr} add r7, sp, #0 movs r3, #:upper8_15:#.LC2 lsls r3, #8 adds r3, #:upper0_7:#.LC2 lsls r3, #8 adds r3, #:lower8_15:#.LC2 lsls r3, #8 adds r3, #:lower0_7:#.LC2 ldr r3, [r3] ldr r3, [r3] adds r3, r3, #4 movs r0, r3 mov sp, r7 @ sp needed pop {r7, pc} By contrast, when using -mcpu=cortex-m4, the code looks like: .section .rodata .LC0: .ascii "Hello World\000" .data p: .word .LC0 testchar: push {r7} add r7, sp, #0 movw r3, #:lower16:p movt r3, #:upper16:p ldr r3, [r3] adds r3, r3, #4 mov r0, r3 mov sp, r7 pop {r7} bx lr I haven't found yet how to make code for cortex-m0 apply upper/lower relocations to "p" instead of .LC2. The current code looks functional, but could be improved. 2019-10-18 Christophe Lyon <christophe.lyon@linaro.org> gcc/ * config/arm/arm-protos.h (thumb1_gen_const_int): Add new prototype. * config/arm/arm.c (arm_option_check_internal): Remove restriction on MOVT for -mpure-code. (thumb1_gen_const_int): New function. (thumb1_legitimate_address_p): Support -mpure-code. (thumb1_rtx_costs): Likewise. (thumb1_size_rtx_costs): Likewise. (arm_thumb1_mi_thunk): Likewise. * config/arm/arm.h (CASE_VECTOR_PC_RELATIVE): Likewise. * config/arm/thumb1.md (thumb1_movsi_symbol_ref): New. (*thumb1_movhf): Support -mpure-code. gcc/testsuite/ * gcc.target/arm/pr45701-1.c: Adjust for -mpure-code. * gcc.target/arm/pr45701-2.c: Likewise. * gcc.target/arm/pure-code/no-literal-pool.c: Add tests for __fp16. * gcc.target/arm/pure-code/pure-code.exp: Remove thumb2 and movt conditions. * gcc.target/arm/thumb1-Os-mult.c: Skip if -mpure-code is used. From-SVN: r279463
2019-12-17Add pointer to PR92772Andrew Stubbs2-1/+9
2019-12-17 Andrew Stubbs <ams@codesourcery.com> * tree-vect-loop.c (vect_create_epilog_for_reduction): Mention pr92772 in the comments. From-SVN: r279460
2019-12-17Add extract_last for amdgcnAndrew Stubbs4-1/+54
2019-12-17 Andrew Stubbs <ams@codesourcery.com> gcc/ * config/gcn/gcn-valu.md (extract_last_<mode>): New expander. (fold_extract_last_<mode>): New expander. gcc/testsuite/ * lib/target-supports.exp (check_effective_target_vect_fold_extract_last): Add amdgcn. From-SVN: r279459
2019-12-17Add clz and ctz for amdgcnAndrew Stubbs3-2/+42
2019-12-17 Andrew Stubbs <ams@codesourcery.com> gcc/ * config/gcn/gcn.h (CLZ_DEFINED_VALUE_AT_ZERO): Define. (CTZ_DEFINED_VALUE_AT_ZERO): Define. * config/gcn/gcn.md (s_mnemonic): Add clz and ctz. (expander): Likewise. (countzeros): New code iterator. (<expander>si2): New insn pattern. (<expander>di2): New insn pattern. From-SVN: r279458
2019-12-17re PR target/92962 (Documentation: x86 Options - znver2 missing RDPID and ↵Jakub Jelinek3-12/+24
WBNOINVD) PR target/92962 * common/config/i386/i386-common.c (processor_alias_table): Formatting fixes. * doc/invoke.texi (bdver3, bdver4, znver1): Add missing closing paren. (znver2): Likewise. Add RDPID and WBNOINVD, remove spurious comma before CLWB. From-SVN: r279455
2019-12-17Add abs pattern to handle {si,di} mode abs to avoid pmax/cmove conversion.Hongyu Wang6-0/+75
2019-12-17 Hongyu Wang <hongyu.wang@intel.com> gcc/ PR target/92651 * config/i386/i386.h (TARGET_EXPAND_ABS): New macro. * config/i386/x86-tune.def (X86_TUNE_EXPAND_ABS): New. * config/i386/i386.md (abs<SWI48x>2): New define_expand. gcc/testsuite * gcc.target/i386/pr92651.c: New testcase. From-SVN: r279452
2019-12-17Use add for a = a + b and a = b + a when possible.H.J. Lu4-9/+41
Since except for Bonnell, 01 fb add %edi,%ebx is faster and shorter than 8d 1c 1f lea (%rdi,%rbx,1),%ebx we should use add for a = a + b and a = b + a when possible if not optimizing for Bonnell. Tested on x86-64. 2019-12-17 H.J. Lu <hjl.tools@gmail.com> gcc/ PR target/92807 * config/i386/i386.c (ix86_lea_outperforms): Check !TARGET_BONNELL. (ix86_avoid_lea_for_addr): When not optimizing for Bonnell, use add for a = a + b and a = b + a. gcc/testsuite/ PR target/92807 * gcc.target/i386/pr92807-1.c: New test. From-SVN: r279451
2019-12-17Daily bump.GCC Administrator1-1/+1
From-SVN: r279450
2019-12-16PR c++/91165 - verify_gimple ICE with cached constexpr.Jason Merrill3-16/+35
It seems we need to unshare even non-CONSTRUCTOR expressions that we are going to stick in the constexpr_call_table, so we don't end up sharing the same e.g. ADDR_EXPR between two different functions. I now think I understand why unsharing CONSTRUCTOR arguments was improving memory performance: separating the arguments from the caller function allows the caller function to be GC'd better. But it occurs to me that we don't need to unshare until we decide that we're evaluating and caching this call, so we can avoid the CONSTRUCTOR unshare/free pair for tentative arguments. Freeing the tentative TREE_VEC still seems worth doing, so free_bindings isn't going away entirely. * constexpr.c (cxx_bind_parameters_in_call): Don't unshare. (cxx_eval_call_expression): Unshare all args if we're caching. From-SVN: r279447
2019-12-16PR middle-end/92952 - gfortran.dg/lto/pr87689 FAILs at -O2Martin Sebor2-0/+15
gcc/ChangeLog: * builtins.c (compute_objsize): Adjust offset by the array low bound. From-SVN: r279445
2019-12-16Add pp_write_text_as_html_like_dot_to_streamDavid Malcolm3-0/+57
gcc/ChangeLog: * pretty-print.c (pp_write_text_as_html_like_dot_to_stream): New function. * pretty-print.h (pp_write_text_as_html_like_dot_to_stream): New decl. From-SVN: r279444
2019-12-16rs6000: Use symbolic names for the CR fields in more casesSegher Boessenkool2-2/+8
It turns out we still used hardcoded register numbers for the CR fields in some cases, and they now use the wrong numbers since we renumbered most of the registers. So let's use the symbolic names, instead. * config/rs6000/rs6000.md (movsi_to_cr_one): Use CR0_REGNO instead of hardcoding the (old, expired) register number. (*mtcrfsi): Ditto. From-SVN: r279443
2019-12-16MSP430: Add new msp430-elfbare targetJozef Lawrynowicz12-9/+89
contrib/ChangeLog: 2019-12-16 Jozef Lawrynowicz <jozef.l@mittosystems.com> * config-list.mk: Add msp430-elfbare. gcc/ChangeLog: 2019-12-16 Jozef Lawrynowicz <jozef.l@mittosystems.com> * config.gcc: s/msp430*-*-*/msp430-*-*. Handle msp430-*-elfbare. * config/msp430/msp430-devices.c (TARGET_SUBDIR): Define. (_MSPMKSTR): Define. (__MSPMKSTR): Define. (rest_of_devices_path): Use TARGET_SUBDIR value in string. * config/msp430/msp430.c (msp430_option_override): Error if -fuse-cxa-atexit is used when it has been disabled at configure time. * config/msp430/t-msp430: Define TARGET_SUBDIR when building msp430-devices.o. * doc/install.texi: Document msp430-*-elf and msp430-*-elfbare. * doc/invoke.texi: Update documentation about which path devices.csv is searched for. gcc/testsuite/ChangeLog: 2019-12-16 Jozef Lawrynowicz <jozef.l@mittosystems.com> * g++.dg/init/dso_handle1.C: Require cxa_atexit support. * g++.dg/init/dso_handle2.C: Likewise. * g++.dg/other/cxa-atexit1.C: Likewise. * gcc.target/msp430/msp430.exp: Update csv-using-installed.c test to handle msp430-elfbare configuration. libgcc/ChangeLog: 2019-12-16 Jozef Lawrynowicz <jozef.l@mittosystems.com> * config.host: s/msp430*-*-elf/msp430-*-elf*. Override default "extra_parts" variable. * configure: Regenerate. * configure.ac: Disable TM clone registry by default for msp430-elfbare. From-SVN: r279442
2019-12-16[Ada] Suppress unused warnings in the presence of errorsBob Duff2-0/+13
2019-12-16 Bob Duff <duff@adacore.com> gcc/ada/ * errout.adb (Handle_Serious_Error): Disable the above-mentioned warnings. From-SVN: r279441
2019-12-16[Ada] Minor: improve commentsBob Duff3-3/+11
2019-12-16 Bob Duff <duff@adacore.com> gcc/ada/ * errout.adb, errout.ads: Improve comments. From-SVN: r279440
2019-12-16[Ada] Minor comment fixBob Duff2-1/+5
2019-12-16 Bob Duff <duff@adacore.com> gcc/ada/ * sem_util.ads: Minor comment fix. From-SVN: r279439
2019-12-16[Ada] Check for "size for" in Special_Msg_DeleteBob Duff3-1/+19
2019-12-16 Bob Duff <duff@adacore.com> gcc/ada/ * errout.ads, errout.adb (Is_Size_Too_Small_Message): Check for "size for" instead of "size for& too small, minimum allowed is ^". From-SVN: r279438
2019-12-16[Ada] Do not set a bogus Esize on subtype built for Component_Size clauseEric Botcazou2-1/+7
2019-12-16 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * sem_ch13.adb (Analyze_Attribute_Definition_Clause): Set only the RM_Size on the subtype built for a Component_Size clause when the component type is a biased integer type. From-SVN: r279437
2019-12-16[Ada] Fix warning on _REENTRANTArnaud Charlet2-0/+6
2019-12-16 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * socket.c: Shutdown warning. From-SVN: r279436
2019-12-16[Ada] Mark Deallocator as Favor_Top_LevelArnaud Charlet2-0/+5
2019-12-16 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * libgnarl/s-tataat.ads (Deallocator): Mark as Favor_Top_Level. From-SVN: r279435
2019-12-16[Ada] AI12-0234/321 atomic operationsArnaud Charlet11-2/+620
2019-12-16 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * libgnat/s-aotase.adb, libgnat/s-aotase.ads, libgnat/s-atoope.ads, libgnat/s-atopar.adb, libgnat/s-atopar.ads, libgnat/s-atopex.adb, libgnat/s-atopex.ads: New files. * libgnat/s-atopri.ads: Add new intrinsics. * Makefile.rtl: Add new runtime files. * impunit.adb: Add new units to Ada 2020 list. From-SVN: r279434
2019-12-16[Ada] Remove new strict-alignment check added by AI12-0001Eric Botcazou2-16/+19
2019-12-16 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * freeze.adb (Check_Strict_Alignment): Remove new check on Has_Aliased_Components for array types. From-SVN: r279433
2019-12-16[Ada] Crash on constrained container in generalized indexing operationEd Schonberg2-1/+13
2019-12-16 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_ch4.adb (Try_Container_Indexing): In the case of a derived container type, use the base type to look for candidate indexing operations, because the object may be a constrained subtype or itype with no explicit declaration. Candidate indexing operations are found in the same scope and list of declarations as the declaration of the base type. From-SVN: r279432
2019-12-16[Ada] Prototype implementastion of Ada2020 Map-reduce constructEd Schonberg10-5/+371
2019-12-16 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * scng.adb (Scan): In Ada2020, a left-bracket indicates the start of an homogenous aggregate. * par-ch4.adb (P_Reduction_Attribute_Reference): New procedure. (P_Aggregate): Recognize Ada2020 bracket-delimited aggregates. (P_Primary): Ditto. * par-util.adb (Comma_Present): Return false on a right bracket in Ada2020, indicating the end of an aggregate. * snames.ads-tmpl: Introduce Name_Reduce and Attribute Reduce. * sinfo.ads, sinfo.adb (Is_Homogeneous_Aggregate): New flag on aggregates, to designate an Ada2020 array or container aggregate that is bracket-delimited in the source. * sem_attr.adb (Analyze_Attribute): For attribute Reduce, verify that two arguments are present, and verify that the prefix is a stream or an object that is iterable (array or contrainer). (Resolve_Attribute): For attribute Reduce, resolve initial value with the type of the context. Type-checking of element type of prefix is performed after expansion. * exp_attr.adb (Expand_N_Attribute_Reference): For attribute Reduce, expand into a loop: a) If prefix is an aggregate with a single iterated component association, use its iterator specification to construct a loop, b) If prefix is a name, build a loop using an element iterator loop. * scans.ads: Add brackets tokens. From-SVN: r279431
2019-12-16[Ada] AI12-0001: Independence and Representation clauses for atomic objectsEric Botcazou13-272/+398
2019-12-16 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * gcc-interface/decl.c (gnat_to_gnu_entity): Adjust calls to validate_size. (gnat_to_gnu_component_type): Likewise. (gnat_to_gnu_field): Likewise and pass string for error messages. (components_need_strict_alignment): Remove test on Is_Aliased and add test for the independence of the component. (validate_size): Add S1 and S2 string parameters and use them to give better error messages for fields. Tweak a couple of messages. * einfo.ads (Has_Independent_Components): Document more cases. (Is_Independent): Likewise. (Strict_Alignment): Document new semantics. * exp_ch9.adb (Install_Private_Data_Declarations): Also set the Is_Independent flag along with Is_Aliased on the renaming entity. * freeze.adb (Size_Known): Remove always-false test and add test for the strict-alignment on the record type. Remove redundant tests and add test for the strict-alignment on the component type. (Check_Strict_Alignment): Set the flag if the type is by-ref and remove now redundant conditions. Set the flag on an array type if it has aliased components. In the record type case, do not set type for C_Pass_By_Copy convention. (Freeze_Array_Type): Move code checking for conflicts between representation aspects and clauses to before specific handling of packed array types. Give a warnind instead of an error for a conflict with pragma Pack. Do not test Has_Pragma_Pack for the specific handling of packed array types. (Freeze_Record_Type): Move error checking of representation clause to... (Freeze_Entity): ...here after Check_Strict_Alignment is called. * sem_aggr.adb (Array_Aggr_Subtype): Also set the Is_Independent flag along with Is_Aliased on the Itype. * sem_ch13.adb (Check_Record_Representation_Clause): Do not set the RM size for a strict-alignment type. * sem_ch3.adb (Add_Interface_Tag_Components): Also set the Is_Independent flag along with Is_Aliased on the tag. (Add_Interface_Tag_Components): Likewise on the offset. (Analyze_Component_Declaration): Likewise on the component. (Analyze_Object_Declaration): Likewise on the object. (Constrain_Array): Likewise on the array. (Record_Type_Declaration: Likewise on the tag. (Array_Type_Declaration): Also set the Has_Independent_Components flag along with Has_Aliased_Components on the array. (Copy_Array_Base_Type_Attributes): Copy Has_Independent_Components. (Copy_Array_Subtype_Attributes): Copy Is_Atomic, Is_Independent and Is_Volatile_Full_Access. (Analyze_Iterator_Specification): Set Is_Independent on the loop variable according to Independent_Components on the array. * sem_ch5.adb: Likewise. * sem_ch6.adb (Process_Formals): Also set the Is_Independent flag along with Is_Aliased on the formal. gcc/testsuite/ * gnat.dg/specs/clause_on_volatile.ads, gnat.dg/specs/size_clause3.ads: Update expected diagnostics. From-SVN: r279430
2019-12-16[Ada] Fully propagate representation aspects through renamingEric Botcazou5-134/+216
2019-12-16 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * sem_ch8.adb (Analyze_Object_Renaming): Set Atomic, Independent and Volatile_Full_Access aspects on the entity of the renaming the same way as the Volatile aspect is set. * sem_util.ads (Is_Atomic_Object_Entity): Move declaration to... (Is_Independent_Object): New function. (Is_Volatile_Full_Access_Object): Likewise. * sem_util.adb (Is_Atomic_Object_Entity): ...here. (Prefix_Has_Atomic_Components): Minor tweak. (Is_Atomic_Object): Test Is_Atomic on the Etype uniformly. (Is_Atomic_Or_VFA_Object): Call Is_Volatile_Full_Access_Object. (Is_Independent_Object): New predicate. (Is_Subcomponent_Of_Atomic_Object): Remove redundant test. (Is_Volatile_Full_Access_Object): New predicate. (Is_Volatile_Prefix): Rename into... (Prefix_Has_Volatile_Components): ... and call Is_Volatile_Object. (Object_Has_Volatile_Components): Delete. (Is_Volatile_Object): Simplify. * gcc-interface/trans.c (node_is_volatile_full_access): Adjust comment. From-SVN: r279429
2019-12-16[Ada] Syntax error on improperly indented imported subprogramBob Duff13-187/+232
2019-12-16 Bob Duff <duff@adacore.com> gcc/ada/ * par.adb: Add Scopes function to do range checking on the scope stack. Call Scopes all over the parser. Add SIS_Aspect_Import_Seen flag. * par-ch6.adb (P_Subprogram): Initialize SIS_Aspect_Import_Seen to False at the start, and check it at the end. * par-ch13.adb (Get_Aspect_Specifications): Set SIS_Aspect_Import_Seen to True when appropriate. * par-ch10.adb, par-ch12.adb, par-ch2.adb, par-ch3.adb, par-ch5.adb, par-ch7.adb, par-ch9.adb, par-endh.adb, par-util.adb: Call Scopes. From-SVN: r279428
2019-12-16[Ada] Fix couple of oversights in the implementation of AI12-0128Eric Botcazou4-143/+203
2019-12-16 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * sem_prag.adb (Atomic_Components): Remove local variable and fix consistency issues. Call Component_Type on the Etype of E. (Independent_Components): Remove local variable. * sem_util.adb (Is_Subcomponent_Of_Atomic_Object): Properly deal with prefixes that are access values. * gcc-interface/trans.c (atomic_acces_t): New enumeral type. (node_is_atomic) <N_Indexed_Component>: Test the prefix. (node_has_volatile_full_access): Rename into... (node_is_volatile_full_access): ...this. (node_is_component): New predicare. (gnat_strip_type_conversion): Delete. (outer_atomic_access_required_p): Likewise. (atomic_access_required_p): Rename into... (get_atomic_access): ...this. Implement the 3 different semantics of Atomic and Volatile_Full_Access. (simple_atomic_access_required_p): New predicate. (Call_to_gnu): Remove outer_atomic_access parameter and change the type of atomic_access parameter to atomic_acces_t. Replace call to atomic_access_required_p with simple_atomic_access_required_p for the in direction and call get_atomic_access for the out direction instead of [outer_]atomic_access_required_p. (lhs_or_actual_p): Constify local variables. (present_in_lhs_or_actual_p): Likewise. (gnat_to_gnu) <N_Identifier>: Replace call to atomic_access_required_p with simple_atomic_access_required_p. <N_Explicit_Dereference>: Likewise. <N_Indexed_Component>: Likewise. <N_Selected_Component>: Likewise. <N_Assignment_Statement>: Call get_atomic_access for the name instead of [outer_]atomic_access_required_p. Adjust call to Call_to_gnu. <N_Function_Call>: Adjust call to Call_to_gnu. (get_controlling_type): Fix typo in comment. From-SVN: r279427
2019-12-16[Ada] Export the Ada version through the C interfaceEric Botcazou3-2/+22
2019-12-16 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * fe.h (Ada_Version_Type): New typedef. (Ada_Version): Declare. * opt.ads (Ada_Version_Type): Add Convention C and WARNING line. (Ada_Version): Add WARNING line. (Exception_Mechanism_Type): Likewise. From-SVN: r279426
2019-12-16[Ada] Minor reformatting and U.S. spelling adjustmentGary Dismukes3-12/+16
2019-12-16 Gary Dismukes <dismukes@adacore.com> gcc/ada/ * checks.adb, sem_util.adb: Minor reformatting and U.S. spelling adjustment. From-SVN: r279425
2019-12-16[Ada] Better error message for "is null" subunitBob Duff2-0/+20
2019-12-16 Bob Duff <duff@adacore.com> gcc/ada/ * sem_ch10.adb (Analyze_Subunit): Give an error if the subunit is not a proper body. This hides the confusing "duplicate body" message that was previously given. From-SVN: r279424
2019-12-16[Ada] Expand renamings of subcomponents of an atomic or VFA objectEric Botcazou2-5/+25
2019-12-16 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * exp_ch8.adb (Expand_N_Object_Renaming_Declaration): Document third special case of renamings requiring special handling. (Evaluation_Required): Return true for an atomic or VFA prefix. From-SVN: r279423
2019-12-16[Ada] Crash on conversion in branch of if-expressionEd Schonberg2-1/+26
2019-12-16 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * checks.adb (Apply_Float_Conversion_Check): Use node of type conversion and not its parent, when inserting the declaration for the temporary that hold the result of the conversion. Previously the declaration was inserted above the parent of the conversion, apparently as a small optimization for the subsequent traversal in Insert_Actions. Unfortunately a similar optimization takes place in Insert_Actions, assuming that the insertion point must be above the expression that creates the actions to insert. This is not correct in the presence of conditional expressions (i.e. since Ada2012), where the insertion must be in the list of actions attached to the current alternative. From-SVN: r279422
2019-12-16[Ada] Bad warning: Size in Compile_Time_Error in nested instanceBob Duff2-2/+12
2019-12-16 Bob Duff <duff@adacore.com> gcc/ada/ * sem_attr.adb (Analyze_Attribute): Use Known_RM_Size. But we still need Size_Known_At_Compile_Time, because when the size really is known, sometimes only one or the other of these is True. From-SVN: r279421
2019-12-16[Ada] Small consistency fix for Volatile_Full_Access objectsEric Botcazou3-7/+51
2019-12-16 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * sem_util.adb (Is_Atomic_Or_VFA_Object): Also return true for components whose type is Volatile_Full_Access or which are subject to the aspect/pragma individually. * sem_util.ads (Is_Atomic_Object_Entity): Small comment fix. From-SVN: r279420
2019-12-16[Ada] Do not issue restriction violations on ignored ghost codeYannick Moy3-3/+16
2019-12-16 Yannick Moy <moy@adacore.com> gcc/ada/ * exp_ch6.adb: Fix comment. * sem_res.adb (Resolve_Call): Do not check No_Recursion restriction or indirectly No_Secondary_Stack restriction, when inside an ignored ghost subprogram. From-SVN: r279419
2019-12-16[Ada] AI12-0208 Support for Ada.Numerics.Big_Numbers.Big_Integers and Big_RealsArnaud Charlet13-1100/+3454
2019-12-16 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * impunit.adb: Add a-nbnbin, a-nbnbre, a-nubinu to Ada 2020 units. * Makefile.rtl: Enable new file. * libgnat/a-nbnbin.adb, libgnat/a-nbnbin.ads, libgnat/a-nbnbre.adb, libgnat/a-nbnbre.ads, libgnat/a-nubinu.ads: New files. Provide default standalone implementation of Ada.Numerics.Big_Numbers.Big_* based on System.Generic_Bignum. * libgnat/a-nbnbin__gmp.adb: Alternate implementation of Ada.Numerics.Big_Numbers.Big_Integers based on GMP. Not enabled for now. * libgnat/s-bignum.ads, libgnat/s-bignum.adb: Now a simple wrapper on top of s-genbig.ads. * libgnat/s-genbig.ads, libgnat/s-genbig.adb: New files, making s-bignum generic for reuse in Ada.Numerics.Big_Numbers. From-SVN: r279418
2019-12-16[Ada] Correct documentation of -gnatw_C switchBob Duff3-2/+8
2019-12-16 Bob Duff <duff@adacore.com> gcc/ada/ * doc/gnat_ugn/building_executable_programs_with_gnat.rst: Correct documentation of -gnatw_C switch * gnat_ugn.texi: Regenerate. From-SVN: r279417
2019-12-16[Ada] Reword the impact of -minimal on the debuggerJoel Brobecker3-2/+15
2019-12-16 Joel Brobecker <brobecker@adacore.com> gcc/ada/ * doc/gnat_ugn/building_executable_programs_with_gnat.rst (_Switches_for_gnatbind): Reword the section explaining the impact of -minimal on debugging. * gnat_ugn.texi: Regenerate. From-SVN: r279416
2019-12-16[Ada] Typo fixes and minor reformattingGary Dismukes3-8/+17
2019-12-16 Gary Dismukes <dismukes@adacore.com> gcc/ada/ * libgnat/g-exptty.adb, libgnat/g-exptty.ads: Typo fixes and minor reformatting. From-SVN: r279415
2019-12-16[Ada] Implement RM C.6(19) clause entirely in the front-endEric Botcazou5-76/+68
2019-12-16 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * exp_ch6.adb (Requires_Atomic_Or_Volatile_Copy): New predicate. (Expand_Actuals): Use it to decide whether to add call by copy code as per the RM C.6(19) clause. * fe.h (Is_Atomic_Object): Remove. (Is_Volatile_Object): Likewise. * sem_util.ads (Is_Atomic_Object): Remove WARNING note. (Is_Volatile_Object): Likewise. * gcc-interface/trans.c (atomic_or_volatile_copy_required_p): Delete. (Call_to_gnu): Do not implement the RM C.6(19) clause. From-SVN: r279414