aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2021-12-03x86: Add -mmove-max=bits and -mstore-max=bitsH.J. Lu17-18/+276
Add -mmove-max=bits and -mstore-max=bits to enable 256-bit/512-bit move and store, independent of -mprefer-vector-width=bits: 1. Add X86_TUNE_AVX512_MOVE_BY_PIECES and X86_TUNE_AVX512_STORE_BY_PIECES which are enabled for Intel Sapphire Rapids processor. 2. Add -mmove-max=bits to set the maximum number of bits can be moved from memory to memory efficiently. The default value is derived from X86_TUNE_AVX512_MOVE_BY_PIECES, X86_TUNE_AVX256_MOVE_BY_PIECES, and the preferred vector width. 3. Add -mstore-max=bits to set the maximum number of bits can be stored to memory efficiently. The default value is derived from X86_TUNE_AVX512_STORE_BY_PIECES, X86_TUNE_AVX256_STORE_BY_PIECES and the preferred vector width. gcc/ PR target/103269 * config/i386/i386-expand.c (ix86_expand_builtin): Pass PVW_NONE and PVW_NONE to ix86_target_string. * config/i386/i386-options.c (ix86_target_string): Add arguments for move_max and store_max. (ix86_target_string::add_vector_width): New lambda. (ix86_debug_options): Pass ix86_move_max and ix86_store_max to ix86_target_string. (ix86_function_specific_print): Pass ptr->x_ix86_move_max and ptr->x_ix86_store_max to ix86_target_string. (ix86_valid_target_attribute_tree): Handle x_ix86_move_max and x_ix86_store_max. (ix86_option_override_internal): Set the default x_ix86_move_max and x_ix86_store_max. * config/i386/i386-options.h (ix86_target_string): Add prefer_vector_width and prefer_vector_width. * config/i386/i386.h (TARGET_AVX256_MOVE_BY_PIECES): Removed. (TARGET_AVX256_STORE_BY_PIECES): Likewise. (MOVE_MAX): Use 64 if ix86_move_max or ix86_store_max == PVW_AVX512. Use 32 if ix86_move_max or ix86_store_max >= PVW_AVX256. (STORE_MAX_PIECES): Use 64 if ix86_store_max == PVW_AVX512. Use 32 if ix86_store_max >= PVW_AVX256. * config/i386/i386.opt: Add -mmove-max=bits and -mstore-max=bits. * config/i386/x86-tune.def (X86_TUNE_AVX512_MOVE_BY_PIECES): New. (X86_TUNE_AVX512_STORE_BY_PIECES): Likewise. * doc/invoke.texi: Document -mmove-max=bits and -mstore-max=bits. gcc/testsuite/ PR target/103269 * gcc.target/i386/pieces-memcpy-17.c: New test. * gcc.target/i386/pieces-memcpy-18.c: Likewise. * gcc.target/i386/pieces-memcpy-19.c: Likewise. * gcc.target/i386/pieces-memcpy-20.c: Likewise. * gcc.target/i386/pieces-memcpy-21.c: Likewise. * gcc.target/i386/pieces-memset-45.c: Likewise. * gcc.target/i386/pieces-memset-46.c: Likewise. * gcc.target/i386/pieces-memset-47.c: Likewise. * gcc.target/i386/pieces-memset-48.c: Likewise. * gcc.target/i386/pieces-memset-49.c: Likewise.
2021-12-03rs6000: Fix use of wrong enum for built-in function codeBill Schmidt1-2/+2
I discovered this bug while working on patches to remove the old built-ins infrastructure. I missed a spot in converting from the rs6000_builtins enum to the rs6000_gen_builtins_enum. This fixes it. The fix is technically not right if new_builtins_are_enabled were to be set to zero, but we're not going to do that anymore, and the remnants of that code will be removed shortly. 2021-12-02 Bill Schmidt <wschmidt@linux.ibm.com> gcc/ * config/rs6000/rs6000.c (rs6000_builtin_reciprocal): Fix builtin identifiers.
2021-12-03x86: Scan leal in PR target/83782 tests for x32H.J. Lu2-2/+2
Update PR target/83782 tests to scan leal for x32 to fix: FAIL: gcc.target/i386/pr83782-1.c scan-assembler leaq[ \\t]foo\\(%rip\\),[ \\t]%rax FAIL: gcc.target/i386/pr83782-2.c scan-assembler leaq[ \\t]foo\\(%rip\\),[ \\t]%rax PR target/83782 * gcc.target/i386/pr83782-1.c: Also scan leal x32. * gcc.target/i386/pr83782-2.c: Likewise.
2021-12-04RISC-V: Add implied defines of Zk, Zkn and ZksSiYu Wu2-2/+30
gcc/ChangeLog: 2021-11-22 SiYu Wu <siyu@isrc.iscas.ac.cn> * common/config/riscv/riscv-common.c (riscv_implied_info): Add K-ext related entry. (riscv_supported_std_ext): Add 'k'. * config/riscv/arch-canonicalize (CANONICAL_ORDER): Add 'k'. (IMPLIED_EXT): Add K-ext related entry.
2021-12-04RISC-V: Add option defines for Scalar CryptographySiYu Wu3-0/+47
gcc/ChangeLog: 2021-11-21 SiYu Wu <siyu@isrc.iscas.ac.cn> * common/config/riscv/riscv-common.c (riscv_ext_version_table): Add zbk* and zk*. * config/riscv/riscv-opts.h (MASK_ZBKB): New. (MASK_ZBKC): Ditto. (MASK_ZBKX): Ditto. (MASK_ZKNE): Ditto. (MASK_ZKND): Ditto. (MASK_ZKNH): Ditto. (MASK_ZKR): Ditto. (MASK_ZKSED): Ditto. (MASK_ZKSH): Ditto. (MASK_ZKT): Ditto. (TARGET_ZBKB): Ditto. (TARGET_ZBKC): Ditto. (TARGET_ZBKX): Ditto. (TARGET_ZKNE): Ditto. (TARGET_ZKND): Ditto. (TARGET_ZKNH): Ditto. (TARGET_ZKR): Ditto. (TARGET_ZKSED): Ditto. (TARGET_ZKSH): Ditto. (TARGET_ZKT): Ditto. * config/riscv/riscv.opt (riscv_zk_subext): New.
2021-12-03sve: combine nested if predicatesTamar Christina3-15/+82
The following example void f5(float * restrict z0, float * restrict z1, float *restrict x, float * restrict y, float c, int n) { for (int i = 0; i < n; i++) { float a = x[i]; float b = y[i]; if (a > b) { z0[i] = a + b; if (a > c) { z1[i] = a - b; } } } } generates currently: ptrue p3.b, all ld1w z1.s, p1/z, [x2, x5, lsl 2] ld1w z2.s, p1/z, [x3, x5, lsl 2] fcmgt p0.s, p3/z, z1.s, z0.s fcmgt p2.s, p1/z, z1.s, z2.s fcmgt p0.s, p0/z, z1.s, z2.s and p0.b, p0/z, p1.b, p1.b The conditions for a > b and a > c become separate comparisons. After this patch we generate: ld1w z1.s, p0/z, [x2, x5, lsl 2] ld1w z2.s, p0/z, [x3, x5, lsl 2] fcmgt p1.s, p0/z, z1.s, z2.s fcmgt p1.s, p1/z, z1.s, z0.s Where the condition a > b && a > c are folded by using the predicate result of the previous compare and thus allows the removal of one of the compares. When never a mask is being generated from an BIT_AND we mask the operands of the and instead and then just AND the result. This allows us to be able to CSE the masks and generate the right combination. However because re-assoc will try to re-order the masks in the & we have to now perform a small local CSE on the vectorized loop is vectorization is successful. Note: This patch series is working incrementally towards generating the most efficient code for this and other loops in small steps. gcc/ChangeLog: * tree-vect-stmts.c (prepare_load_store_mask): Rename to... (prepare_vec_mask): ...This and record operations that have already been masked. (vectorizable_call): Use it. (vectorizable_operation): Likewise. (vectorizable_store): Likewise. (vectorizable_load): Likewise. * tree-vectorizer.h (class _loop_vec_info): Add vec_cond_masked_set. (vec_cond_masked_set_type, tree_cond_mask_hash): New. gcc/testsuite/ChangeLog: * gcc.target/aarch64/sve/pred-combine-and.c: New test.
2021-12-03Add TARGET_IFUNC_REF_LOCAL_OKH.J. Lu9-3/+95
1. On some targets, like PowerPC, reference to ifunc function resolver must be non-local so that compiler will properly emit PLT call. Add TARGET_IFUNC_REF_LOCAL_OK to allow binding indirect function resolver locally for targets which don't require special PLT call sequence. 2. Add ix86_call_use_plt_p to call local ifunc function resolvers via PLT. gcc/ PR target/51469 PR target/83782 * target.def (ifunc_ref_local_ok): Add a target hook. * varasm.c (default_binds_local_p_3): Force indirect function resolver non-local only if targetm.ifunc_ref_local_ok returns false. * config/i386/i386-expand.c (ix86_expand_call): Call ix86_call_use_plt_p to check if PLT should be used. * config/i386/i386-protos.h (ix86_call_use_plt_p): New. * config/i386/i386.c (output_pic_addr_const): Call ix86_call_use_plt_p to check if "@PLT" is needed. (ix86_call_use_plt_p): New. (TARGET_IFUNC_REF_LOCAL_OK): New. * doc/tm.texi.in: Add TARGET_IFUNC_REF_LOCAL_OK. * doc/tm.texi: Regenerated. gcc/testsuite/ PR target/51469 PR target/83782 * gcc.target/i386/pr83782-1.c: New test. * gcc.target/i386/pr83782-2.c: Likewise.
2021-12-03testsuite: Fix up pr103456.c testcase [PR103456]Jakub Jelinek1-1/+1
ubsan.exp cycles through torture options, and that includes -O2 -flto -fno-fat-lto-objects. But with those options tree dump scans don't work for post-IPA passes, for dg-do compile tests nothing after IPA is done. So we get an unresolved testcase: gcc.dg/ubsan/pr103456.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects : dump file does not exist UNRESOLVED: gcc.dg/ubsan/pr103456.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects scan-tree-dump-not objsz1 "maximum object size 0" Fixed by adding -ffat-lto-objects so that we perform the post-IPA passes. 2021-12-03 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/103456 * gcc.dg/ubsan/pr103456.c: Add -ffat-lto-objects to dg-options.
2021-12-03x86: Speed up target attribute handling by using a cacheJakub Jelinek3-2/+27
The target attribute handling is very expensive and for the common case from x86intrin.h where many functions get implicitly the same target attribute, we can speed up compilation a lot by caching it. The following patches both create a single entry cache, where they cache for a particular target attribute argument list the resulting DECL_FUNCTION_SPECIFIC_TARGET and DECL_FUNCTION_SPECIFIC_OPTIMIZATION values from ix86_valid_target_attribute_p and use the cache if the args are the same as last time and we start either from NULL values of those, or from the recorded values for those from last time. Compiling a simple: #include <x86intrin.h> int i; testcase with ./cc1 -quiet -O2 -isystem include/ test.c takes on my WS without the patches ~0.392s and with either of the patches ~0.182s, i.e. roughly half the time as before. For ./cc1plus -quiet -O2 -isystem include/ test.c it is slightly worse, the speed up is from ~0.613s to ~0.403s. The difference between the 2 patches is that the first one uses copy_list while the second one uses a vec, so I think the second one has the advantage of creating less GC garbage. I've verified both patches achieve the same content of those DECL_FUNCTION_SPECIFIC_TARGET and DECL_FUNCTION_SPECIFIC_OPTIMIZATION nodes as before on x86intrin.h by doing debug_tree on those and comparing the stderr from without these patches to with these patches. 2021-12-03 Jakub Jelinek <jakub@redhat.com> * attribs.h (simple_cst_list_equal): Declare. * attribs.c (simple_cst_list_equal): No longer static. * config/i386/i386-options.c (target_attribute_cache): New variable. (ix86_valid_target_attribute_p): Cache DECL_FUNCTION_SPECIFIC_TARGET and DECL_FUNCTION_SPECIFIC_OPTIMIZATION based on args.
2021-12-03pch: Add support for PCH for relocatable executables [PR71934]Jakub Jelinek15-51/+175
So, if we want to make PCH work for PIEs, I'd say we can: 1) add a new GTY option, say callback, which would act like skip for non-PCH and for PCH would make us skip it but remember for address bias translation 2) drop the skip for tree_translation_unit_decl::language 3) change get_unnamed_section to have const char * as last argument instead of const void *, change unnamed_section::data also to const char * and update everything related to that 4) maybe add a host hook whether it is ok to support binaries changing addresses (the only thing I'm worried is if some host that uses function descriptors allocates them dynamically instead of having them somewhere in the executable) 5) maybe add a gengtype warning if it sees in GTY tracked structure a function pointer without that new callback option Here is 1), 2), 3) implemented. Note, on stdc++.h.gch/O2g.gch there are just those 10 relocations without the second patch, with it a few more, but nothing huge. And for non-PIEs there isn't really any extra work on the load side except freading two scalar values and fseek. 2021-12-03 Jakub Jelinek <jakub@redhat.com> PR pch/71934 gcc/ * ggc.h (gt_pch_note_callback): Declare. * gengtype.h (enum typekind): Add TYPE_CALLBACK. (callback_type): Declare. * gengtype.c (dbgprint_count_type_at): Handle TYPE_CALLBACK. (callback_type): New variable. (process_gc_options): Add CALLBACK argument, handle callback option. (set_gc_used_type): Adjust process_gc_options caller, if callback, set type to &callback_type. (output_mangled_typename): Handle TYPE_CALLBACK. (walk_type): Likewise. Handle callback option. (write_types_process_field): Handle TYPE_CALLBACK. (write_types_local_user_process_field): Likewise. (write_types_local_process_field): Likewise. (write_root): Likewise. (dump_typekind): Likewise. (dump_type): Likewise. * gengtype-state.c (type_lineloc): Handle TYPE_CALLBACK. (state_writer::write_state_callback_type): New method. (state_writer::write_state_type): Handle TYPE_CALLBACK. (read_state_callback_type): New function. (read_state_type): Handle TYPE_CALLBACK. * ggc-common.c (callback_vec): New variable. (gt_pch_note_callback): New function. (gt_pch_save): Stream out gt_pch_save function address and relocation table. (gt_pch_restore): Stream in saved gt_pch_save function address and relocation table and apply relocations if needed. * doc/gty.texi (callback): Document new GTY option. * varasm.c (get_unnamed_section): Change callback argument's type and last argument's type from const void * to const char *. (output_section_asm_op): Change argument's type from const void * to const char *, remove unnecessary cast. * tree-core.h (struct tree_translation_unit_decl): Drop GTY((skip)) from language member. * output.h (unnamed_section_callback): Change argument type from const void * to const char *. (struct unnamed_section): Use GTY((callback)) instead of GTY((skip)) for callback member. Change data member type from const void * to const char *. (struct noswitch_section): Use GTY((callback)) instead of GTY((skip)) for callback member. (get_unnamed_section): Change callback argument's type and last argument's type from const void * to const char *. (output_section_asm_op): Change argument's type from const void * to const char *. * config/avr/avr.c (avr_output_progmem_section_asm_op): Likewise. Remove unneeded cast. * config/darwin.c (output_objc_section_asm_op): Change argument's type from const void * to const char *. * config/pa/pa.c (som_output_text_section_asm_op): Likewise. (som_output_comdat_data_section_asm_op): Likewise. * config/rs6000/rs6000.c (rs6000_elf_output_toc_section_asm_op): Likewise. (rs6000_xcoff_output_readonly_section_asm_op): Likewise. Instead of dereferencing directive hardcode variable names and decide based on whether directive is NULL or not. (rs6000_xcoff_output_readwrite_section_asm_op): Change argument's type from const void * to const char *. (rs6000_xcoff_output_tls_section_asm_op): Likewise. Instead of dereferencing directive hardcode variable names and decide based on whether directive is NULL or not. (rs6000_xcoff_output_toc_section_asm_op): Change argument's type from const void * to const char *. (rs6000_xcoff_asm_init_sections): Adjust get_unnamed_section callers. gcc/c-family/ * c-pch.c (struct c_pch_validity): Remove pch_init member. (pch_init): Don't initialize v.pch_init. (c_common_valid_pch): Don't warn and punt if .text addresses change. libcpp/ * include/line-map.h (class line_maps): Add GTY((callback)) to reallocator and round_alloc_size members.
2021-12-03fortran: Fix setting of array lower bound for named arraysChung-Lin Tang3-14/+35
This patch fixes a case of setting array low-bounds, found for particular uses of SOURCE=/MOLD=. This adjusts the relevant part in gfc_trans_allocate() to set e3_has_nodescriptor only for non-named arrays. 2021-12-03 Tobias Burnus <tobias@codesourcery.com> gcc/fortran/ChangeLog: * trans-stmt.c (gfc_trans_allocate): Set e3_has_nodescriptor to true only for non-named arrays. gcc/testsuite/ChangeLog: * gfortran.dg/allocate_with_source_26.f90: Adjust testcase. * gfortran.dg/allocate_with_mold_4.f90: New testcase.
2021-12-03Make sure that we get unique test names if several DejaGnu directives refer ↵Thomas Schwinge1-2/+12
to the same line [PR102735] gcc/testsuite/ PR testsuite/102735 * lib/gcc-dg.exp (process-message): Make sure that we get unique test names.
2021-12-03[Committed] New testcase for C++/71792, bitfields and autoAndrew Pinski1-0/+42
This testcase used to fail before GCC 6.4.0 due to the wrong type being used for auto when used with bitfields, the C++ front-end was using the "bitfield" type rather than the underlaying type. Committed the testcase after a quick check. PR c++/71792 gcc/testsuite/ChangeLog: * g++.dg/torture/pr71792.C: New test.
2021-12-02gcc: Fix "argument list too long" from install-pluginsRichard Purdie1-1/+1
When building in longer build paths (200+ characters), the "echo $(PLUGIN_HEADERS)" from the install-plugins target would cause an "argument list too long error" on some systems. Avoid this by calling make's sort function on the list which removes duplicates and stops the overflow from reaching the echo command. The original sort is left to handle the the .h and .def files. 2021-10-26 Richard Purdie <richard.purdie@linuxfoundation.org> gcc/ChangeLog: * Makefile.in: Fix "argument list too long" from install-plugins. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-12-02build: Implement --with-multilib-list for avr targetMatt Jacobson5-3/+27
gcc * config.gcc: For the AVR target, populate TM_MULTILIB_CONFIG. * config/avr/genmultilib.awk: Add ability to filter generated multilib list. * config/avr/t-avr: Pass TM_MULTILIB_CONFIG to genmultilib.awk. * configure.ac: Update help string for --with-multilib-list. * configure: Regenerate.
2021-12-03Daily bump.GCC Administrator12-1/+770
2021-12-02Adjust CPP_FOR_BUILDPekka Seppänen2-2/+2
Hi. CPP/CPPFLAGS were changed by commit 84401ce5fb4ecab55decb472b168100e7593e01f. That commit uses CPP as a default for CPP_FOR_BUILD. Unless CPP is defined, GNU make defaults CPP as `$(CC) -E'. Given the context, this is now incorrect, since CC_FOR_BUILD should be used. Fixes PR103011. -- Pekka gcc/Changelog: * configure: Regenerate. * configure.ac: For CPP_FOR_BUILD use $(CC_FOR_BUILD) -E instead of $(CPP).
2021-12-02[PATCH v2] configure: define TARGET_LIBC_GNUSTACK on muslIlya Lipnitskiy2-0/+6
musl only uses PT_GNU_STACK to set default thread stack size and has no executable stack support[0], so there is no reason not to emit the .note.GNU-stack section on musl builds. [0]: https://lore.kernel.org/all/20190423192534.GN23599@brightrain.aerifal.cx/T/#u gcc * configure: Regenerate. * configure.ac: Define TARGET_LIBC_GNUSTACK on musl.
2021-12-02Darwin: Rewrite host PCH support [PR 55610].Iain Sandoe1-38/+153
We need to revise the PCH memory allocation scheme to enable support for PIE on aarch64. The rewrite uses a similar scheme to the one used on Linux. We attempt to identify VM segments for each arch/OS version that are always available to the compiler (note this is not general, it only needs to work for the cc1* exes). If we cannot find the preferred segment we fall back to allowing the kernel to supply one - this is more likely to fail when the PCH read-in occurs (but that is trapped). In doing this we obviate the need to unmap any part of the compiler __DATA segment - thus fixing PR 55610. Signed-off-by: Iain Sandoe <iain@sandoe.co.uk> gcc/ChangeLog: PR target/55610 * config/host-darwin.c (TRY_EMPTY_VM_SPACE, SAFE_ALLOC_SIZE): New. (darwin_gt_pch_get_address): Rewrite to use nominated memory segments rather than part of the compiler __DATA segment. (darwin_gt_pch_use_address): Likewise.
2021-12-02doc: Remove references to FreeBSD 1 and 2Gerald Pfeifer1-4/+0
FreeBSD 1 and FreeBSD 2, both still a.out, have been end of life for over two decades and GCC has not been supporting them for ages, too, so simply remove references. gcc: * doc/install.texi (*-*-freebsd*): Remove references to FreeBSD 1 and FreeBSD 2.
2021-12-02analyzer: add regression test for leak false +ve [PR103526]David Malcolm1-0/+50
gcc/testsuite/ChangeLog: PR analyzer/103526 * gcc.dg/analyzer/pr103526.c: New test. Signed-off-by: David Malcolm <dmalcolm@redhat.com>
2021-12-02[PR103437] Make backup code for overflow conditionalVladimir N. Makarov1-17/+16
Switch off long long variant overflow code by preprocessor if the build compiler has __builtin_smul_overflow. gcc/ChangeLog: PR rtl-optimization/103437 * ira-color.c (setup_allocno_priorities): Switch off backup code for overflow if compiler has __builtin_smul_overflow. Use < for comparison with -INT_MAX.
2021-12-02libstdc++: Allow exception classes to move fully-dynamic stringsJonathan Wakely1-20/+0
The move constructor for the fully-dynamic std::basic_string was not noexcept until recently, so the std::logic_error and std::runtime_error move constructors were defined to make non-throwing copies of their string members, instead of potentially-throwing moves. Now that move construction is always noexecpt, the exception classes can always move the string. The fully-dynamic string move assignment was always noexcept, so I don't know why I special-cased the move assignment operators of the exception classes. That can be changed too. libstdc++-v3/ChangeLog: * src/c++11/cow-stdexcept.cc [_GLIBCXX_FULY_DYNAMIC_STRING] (logic_error, runtime_error): Remove custom definitions.
2021-12-02libstdc++: Remove broken std::allocator base classes [PR103340]Jonathan Wakely13-297/+64
The bitmap_allocator, __mt_alloc and __pool_alloc extensions are no longer suitable for use as the base class of std::allocator, because they have not been updated to meet the C++20 requirements. There is a patch attached to PR 103340 which addresses that, but more work would be needed to solve the linking errors that occur when the library is configured to use them. Using --enable-libstdcxx-allocator=bitmap wouldn't even bootstrap for the past few years, and I can't find any gcc-testresults reports using any of these allocators. This patch removes the configure option to use these as the std::allocator base class. The allocators are still in the tree and can be used directly, you just can't configure the library to use one of them as the base class of std::allocator. libstdc++-v3/ChangeLog: PR libstdc++/103340 PR libstdc++/103400 PR libstdc++/103381 * acinclude.m4 (GLIBCXX_ENABLE_ALLOCATOR): Remove mt, bitmap and pool options. * configure: Regenerate. * config/allocator/bitmap_allocator_base.h: Removed. * config/allocator/mt_allocator_base.h: Removed. * config/allocator/pool_allocator_base.h: Removed. * doc/xml/manual/allocator.xml: Update. * doc/xml/manual/configure.xml: Update. * doc/xml/manual/evolution.xml: Document removal. * doc/xml/manual/mt_allocator.xml: Editorial tweaks. * doc/html/manual/*: Regenerate.
2021-12-02libstdc++: Restore unconditional atomic load in COW std::stringJonathan Wakely1-3/+3
The relaxed load is already optimal, checking the __single_threaded global before doing a non-atomic load isn't an optimization. libstdc++-v3/ChangeLog: * include/bits/cow_string.h (basic_string::_M_is_leaked()): Revert change to check __is_single_threaded() before using atomic load.
2021-12-02rs6000: Enable new built-in support, with test suite and altivec.h changesBill Schmidt39-562/+124
This patch enables the new built-in infastructure for the Power back end. To avoid any patches causing regressions that would affect bisection, this is a combined patch that also includes all the test suite changes and the necessary modifications to altivec.h. The patches included here are the following: https://gcc.gnu.org/pipermail/gcc-patches/2021-November/584638.html https://gcc.gnu.org/pipermail/gcc-patches/2021-September/578613.html https://gcc.gnu.org/pipermail/gcc-patches/2021-November/584829.html https://gcc.gnu.org/pipermail/gcc-patches/2021-September/578614.html The third of these four was broken up into multiple patches for review, but effectively all pieces of it were accepted after an independent patch that modified the error handling for overloaded builtins. 2021-12-02 Bill Schmidt <wschmidt@linux.ibm.com> gcc/ * config/rs6000/altivec.h: Delete a number of #defines that are now superfluous. Alphabetize. Include rs6000-vecdefines.h. Include some synonyms. * config/rs6000/rs6000-builtin-new.def (CMPB): Flag as no32bit. (BPERMD): Flag as 32bit (needing special handling for 32-bit). (UNPACK_TD): Return unsigned long long instead of unsigned long. (GET_TEXASR): Return unsigned long instead of unsigned long long. (GET_TEXASRU): Likewise. (GET_TFHAR): Likewise. (GET_TFIAR): Likewise. (SET_TEXASR): Pass unsigned long instead of unsigned long long. (SET_TEXASRU): Likewise. (SET_TFHAR): Likewise. (SET_TFIAR): Likewise. (TABORTDC): Likewise. (TABORTDCI): Likewise. * config/rs6000/rs6000-call.c (rs6000_expand_new_builtin): Fix error handling for no32bit. Add 32bit handling for RS6000_BIF_BPERMD. * config/rs6000/rs6000-gen-builtins.c (write_init_file): Initialize new_builtins_are_live to 1. gcc/testsuite/ * gcc.target/powerpc/bfp/scalar-extract-exp-2.c: Adjust expected error message. * gcc.target/powerpc/bfp/scalar-extract-sig-2.c: Likewise. * gcc.target/powerpc/bfp/scalar-insert-exp-2.c: Likewise. * gcc.target/powerpc/bfp/scalar-insert-exp-5.c: Likewise. * gcc.target/powerpc/bfp/scalar-insert-exp-8.c: Likewise. * gcc.target/powerpc/bfp/scalar-test-neg-2.c: Likewise. * gcc.target/powerpc/bfp/scalar-test-neg-3.c: Likewise. * gcc.target/powerpc/bfp/scalar-test-neg-5.c: Likewise. * gcc.target/powerpc/byte-in-set-2.c: Likewise. * gcc.target/powerpc/cmpb-2.c: Likewise. * gcc.target/powerpc/cmpb-3.c: Likewise. * gcc.target/powerpc/cmpb32-2.c: Likewise. * gcc.target/powerpc/crypto-builtin-2.c: Likewise. * gcc.target/powerpc/fold-vec-splat-floatdouble.c: Remove invalid test and adjust xxpermdi count. * gcc.target/powerpc/fold-vec-splat-longlong.c: Remove invalid tests and adjust instruction counts. * gcc.target/powerpc/fold-vec-splat-misc-invalid.c: Adjust expected error messages. * gcc.target/powerpc/int_128bit-runnable.c: Adjust instruction counts. * gcc.target/powerpc/pr80315-1.c: Adjust expected error message. * gcc.target/powerpc/pr80315-2.c: Likewise. * gcc.target/powerpc/pr80315-3.c: Likewise. * gcc.target/powerpc/pr80315-4.c: Likewise. * gcc.target/powerpc/pr88100.c: Likewise. * gcc.target/powerpc/pragma_misc9.c: Likewise. * gcc.target/powerpc/pragma_power8.c: Undef _RS6000_VECDEFINES_H. * gcc.target/powerpc/pragma_power9.c: Likewise. * gcc.target/powerpc/test_fpscr_drn_builtin_error.c: Adjust expected error messages. * gcc.target/powerpc/test_fpscr_rn_builtin_error.c: Likewise. * gcc.target/powerpc/vec-gnb-2.c: Likewise. * gcc.target/powerpc/vsu/vec-all-nez-7.c: Likewise. * gcc.target/powerpc/vsu/vec-any-eqz-7.c: Likewise. * gcc.target/powerpc/vsu/vec-cmpnez-7.c: Likewise. * gcc.target/powerpc/vsu/vec-cntlz-lsbb-2.c: Likewise. * gcc.target/powerpc/vsu/vec-cnttz-lsbb-2.c: Likewise. * gcc.target/powerpc/vsu/vec-xl-len-13.c: Likewise. * gcc.target/powerpc/vsu/vec-xst-len-12.c: Likewise.
2021-12-02[Ada] Add warning in comment about files copied from libgnatEric Botcazou1-0/+4
gcc/ada/ * gcc-interface/Make-lang.in (ADA_GENERATED_FILES): Add warning.
2021-12-02[Ada] Remove obsolete a-assertMarc Poulhiès2-102/+0
gcc/ada/ * gcc-interface/a-assert.ads, gcc-interface/a-assert.adb: Remove.
2021-12-02[Ada] Do not back-annotate maximum size for limited typesEric Botcazou1-2/+6
gcc/ada/ * gcc-interface/decl.c (gnat_to_gnu_entity): Do not back-annotate a maximum size for the Esize of limited record and concurrent types.
2021-12-02[Ada] Fix packing for array component with discriminated partEric Botcazou3-21/+16
gcc/ada/ * gcc-interface/gigi.h (aggregate_type_contains_array_p): Delete. (type_has_variable_size): Declare. * gcc-interface/decl.c (adjust_packed): Return 0 only if the field type is an array with variable size. * gcc-interface/utils.c (aggregate_type_contains_array_p): Make static and remove SELF_REFERENTIAL parameter. (type_has_variable_size): Make public. (create_field_decl): Adjust call to aggregate_type_contains_array_p.
2021-12-02[Ada] Invalid memory access on finalization of class-wide typeJustin Squirek1-1/+4
gcc/ada/ * gcc-interface/decl.c (gnat_to_gnu_entity): Skip normal processing for Itypes that are E_Class_Wide_Subtype with Equivalent_Type set.
2021-12-02[Ada] Fix oversight in minor cleanupEric Botcazou1-15/+15
gcc/ada/ * gcc-interface/trans.c (Call_to_gnu): Rename GNAT_NAME variable into GNAT_SUBPROG to avoid later shadowing.
2021-12-02[Ada] Proof of System.Arith_32 for double arithmetic on 32bitsYannick Moy2-18/+499
gcc/ada/ * libgnat/s-arit32.adb: Add ghost instances and lemmas. (Scaled_Divide32): Add ghost code to prove. Minor code modification to return early in error when divisor is zero. * libgnat/s-arit32.ads: Add ghost instances and utilities. (Scaled_Divide32): Add contract.
2021-12-02[Ada] Reset internal flags for -gnatD and -gnatGEric Botcazou1-0/+5
gcc/ada/ * sprint.adb (Source_Dump): Set both Print_Generated_Code and Debug_Generated_Code to False at the end.
2021-12-02[Ada] Fix obsolete array aggregate warning being triggered by expanded codeMarc Poulhiès1-0/+1
gcc/ada/ * sem_aggr.adb (Resolve_Array_Aggregate): Filter out nodes not coming from source before emitting the warning.
2021-12-02[Ada] Amend proof of System.Arith_Double to remove justificationsYannick Moy2-63/+183
gcc/ada/ * libgnat/s-aridou.adb (Log_Single_Size, Big_0): New ghost constants. (Lemma_Mult_Non_Negative, Lemma_Mult_Non_Positive, Lemma_Not_In_Range_Big2xx64): New lemmas on big integers. (Double_Divide): Remove justifications. Amend for that local lemma Prove_Overflow_Case. (Scaled_Divide): Remove justifications. Insert for that local lemmas Prove_Negative_Dividend, Prove_Positive_Dividend and Prove_Q_Too_Big, and amend local lemma Prove_Overflow. To prove the loop invariant on (Shift mod 2 = 0), introduce local ghost variable Iter to count loop iterations, and relate its value to the value of Shift through Log_Single_Size, with the help of local lemma Prove_Power. Deal with proof regression by adding new local lemma Prove_First_Iteration and local ghost variable D123. * libgnat/s-arit64.ads (Multiply_With_Ovflo_Check64): Remove unnecessary Pure_Function on function as package is Pure.
2021-12-02[Ada] Add pragma Annotate for CodePeer analysisYannick Moy1-0/+3
gcc/ada/ * libgnat/s-widthi.adb: Add pragma Annotate.
2021-12-02[Ada] Proof of support units for 'Width on signed integersYannick Moy10-23/+253
gcc/ada/ * libgnat/s-widint.ads: Mark in SPARK. * libgnat/s-widlli.ads: Likewise. * libgnat/s-widllli.ads: Likewise. * libgnat/s-widlllu.ads: Likewise. * libgnat/s-widllu.ads: Disable ghost/contract. * libgnat/s-widthi.adb: Replicate and adapt the proof from s-widthu.adb. * libgnat/s-widthi.ads: Add minimal postcondition. * libgnat/s-widthu.adb: Fix comments in the modular case. * libgnat/s-widthu.ads: Add minimal postcondition. * libgnat/s-widuns.ads: Disable ghost/contract.
2021-12-02[Ada] Cleanup detection of suspension objectsPiotr Trojanek4-28/+3
gcc/ada/ * rtsfind.ads (RE_Id, RE_Unit_Table): Add RE_Suspension_Object. * sem_util.adb (Is_Descendant_Of_Suspension_Object): Use Is_RTE. (Is_Suspension_Object): Remove body. * sem_util.ads (Is_Suspension_Object): Remove spec. * snames.ads-tmpl (Name_Suspension_Object): Remove, now unreferenced.
2021-12-02[Ada] Cleanup insertion of single freezing actionsPiotr Trojanek7-13/+4
gcc/ada/ * exp_util.adb (Append_Freeze_Action): Tune whitespace to make the code look similar to Append_Freeze_Actions, which takes a List_Id. * sem_ch6.adb (Analyze_Return_Type): Cleanup with Append_Freeze_Action. * exp_ch3.adb (Build_Access_Subprogram_Wrapper_Body): Likewise. * sem_ch3.adb (Build_Access_Subprogram_Wrapper): Likewise. * contracts.adb (Add_Indirect_Call_Wrapper): Remove extra call to Ensure_Freeze_Node. (Add_Call_Helper): Likewise. * freeze.adb (Check_Inherited_Conditions): Likewise. (Attribute_Renaming): Likewise. * sem_ch8.adb: Likewise.
2021-12-02[Ada] Cleanups related to expansion of dispatching primitivesPiotr Trojanek4-7/+5
gcc/ada/ * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst (No_Dispatching_Calls): Fix whitespace in example code. * gnat_rm.texi: Regenerate. * exp_ch13.adb (Expand_N_Freeze_Entity): Replace low-level membership test with a high-level wrapper. * exp_ch3.adb (Expand_Freeze_Record_Type): Remove unnecessary initialization of list of wrapper declarations and unnecessary guard for list of their bodies (if no bodies are created then Append_Freeze_Actions is a no-op).
2021-12-02[Ada] Use bracket aggregates in Ada2022Marc Poulhiès108-624/+652
gcc/ada/ * exp_imgv.adb (Append_Table_To): Add new parameter to Make_Aggregate call. * gen_il-fields.ads (Opt_Field_Enum): Add Is_Parenthesis_Aggregate and Is_Enum_Array_Aggregate. * gen_il-gen-gen_nodes.adb (Union): Add Is_Enum_Array_Aggregate and Is_Parenthesis_Aggregate field to N_Aggregate. * libgnarl/s-interr.adb (User_Handler, User_Entry, Blocked) (Ignored, Last_Unblocker, Server_ID): Likewise. * libgnarl/s-intman.ads (Keep_Unmasked, Reserve): Likewise. * libgnarl/s-intman__posix.adb (Exception_Interrupts) (Initialize): Likewise. * libgnarl/s-mudido__affinity.adb (Create): Likewise. * libgnarl/s-osinte__linux.ads (Unmasked, Reserved): Likewise. * libgnarl/s-taprop__linux.adb (Create_Task, Set_Task_Affinity) * libgnarl/s-tasdeb.adb (Trace_On): Likewise. * libgnarl/s-tasdeb.ads (Known_Tasks): Likewise. * libgnarl/s-tasinf__linux.ads (Any_CPU, No_CPU): Likewise. * libgnarl/s-taskin.adb (Initialize_ATCB): Likewise. * libgnarl/s-taskin.ads (Ada_Task_Control_Block): Likewise. * libgnarl/s-tasren.adb (Default_Treatment) (New_State): Likewise. * libgnarl/s-tassta.adb (Trace_Unhandled_Exception_In_Task): Likewise. * libgnarl/s-tataat.adb (Index_Array): Likewise. * libgnarl/s-tpobop.adb (New_State): Likewise. * libgnat/a-calend.adb (Cumulative_Days_Before_Month) (Leap_Second_Times): Likewise. * libgnat/a-calend.ads (Days_In_Month): Likewise. * libgnat/a-cfinve.adb (Insert): Likewise. * libgnat/a-chahan.adb (Char_Map): Likewise. * libgnat/a-chtgbo.adb (Clear): Likewise. * libgnat/a-cobove.adb ("&", Insert, To_Vector): Likewise. * libgnat/a-cofove.adb (Insert, To_Vector): Likewise. * libgnat/a-cohata.ads (Hash_Table_Type): Likewise. * libgnat/a-coinve.adb (Merge, Insert, Insert_Space): Likewise. * libgnat/a-convec.adb (Insert, To_Vector): Likewise. * libgnat/a-coprnu.ads (Primes): Likewise. * libgnat/a-direct.adb (Empty_String): Use regular "" instead of aggregate. (Start_Search_Internal, Name_Case_Equivalence, Search) (Start_Search, Start_Search_Internal): Use bracket for aggregate. * libgnat/a-direct.ads (Start_Search,Search): Likewise. * libgnat/a-direio.adb (Zeroes): Likewise. * libgnat/a-nbnbre.adb (Leading_Padding, Trailing_Padding) (Numerator_Image): Likewise. * libgnat/a-ngrear.adb (Jacobi): Likewise. * libgnat/a-stbubo.adb (Get_UTF_8): Likewise. * libgnat/a-stbufo.adb (Put): Likewise. * libgnat/a-stbuun.adb (Get_UTF_8): Likewise. * libgnat/a-stbuut.adb (Put_7bit, Put_Character) (Put_Wide_Character, Put_Wide_Wide_Character): Likewise. * libgnat/a-stmaco.ads (Control_Set,Graphic_Set,Letter_Set) (Lower_Set, Upper_Set, Basic_Set, Decimal_Digit_Set) (Hexadecimal_Digit_Set, Alphanumeric_Set, Special_Set) (ISO_646_Set): Likewise. * libgnat/a-strbou.ads (Insert, Tail, "*", Replicate) (Null_Bounded_String): Likewise. * libgnat/a-strfix.ads (Head, Tail): Likewise. * libgnat/a-strmap.adb (To_Domain, Lemma_Is_Sorted): Likewise. * libgnat/a-strmap.ads (Null_Set): Likewise. * libgnat/a-strsup.adb (Super_Head, Super_Replicate) (Super_Tail): Likewise. * libgnat/a-strsup.ads (Super_Head, Super_Tail, Times) (Super_Replicate): Likewise. * libgnat/a-sttebu.adb (Put_UTF8, Wide_Put_UTF_16): Likewise. * libgnat/a-stuten.ads (BOM_16): Likewise. * libgnat/a-stwibo.ads (Null_Bounded_Wide_String): Likewise. * libgnat/a-stwima.ads (Null_Range): Likewise. * libgnat/a-stwisu.adb (Super_Head, Super_Replicate) (Super_Tail): Likewise. * libgnat/a-stzbou.ads (Null_Bounded_Wide_Wide_String): Likewise. * libgnat/a-stzmap.ads (Null_Range): Likewise. * libgnat/a-stzsup.adb (Super_Head, Super_Replicate) (Super_Tail, Super_Trim): Likewise. * libgnat/a-swmwco.ads (Control_Ranges, Graphic_Ranges) (Letter_Ranges, Lower_Ranges, Upeer_Ranges, Basic_Ranges) (Decimal_Digit_Ranges, Hexadecimal_Digit_Ranges) (Alphanumeric_Ranges, Special_Graphic_Ranges, ISO_646_Ranges) (Character_Ranges, Lower_Case_Mapping, Upper_Case_Mapping) (Basic_Mapping): Likewise. * libgnat/a-szmzco.ads (Control_Ranges, Graphic_Ranges) (Letter_Ranges, Lower_Ranges, Upeer_Ranges, Basic_Ranges) (Decimal_Digit_Ranges, Hexadecimal_Digit_Ranges) (Alphanumeric_Ranges, Special_Graphic_Ranges, ISO_646_Ranges) (Character_Ranges, Lower_Case_Mapping, Upper_Case_Mapping) (Basic_Mapping): Likewise. * libgnat/a-teioed.adb (Format_Number): Likewise. * libgnat/a-wtedit.adb (Format_Number): Likewise. * libgnat/a-ztedit.adb (Format_Number): Likewise. * libgnat/g-arrspl.adb (Separators): Likewise. * libgnat/g-catiio.adb (Month_Name_To_Number): Likewise. * libgnat/g-cgideb.adb (NL, Title): Likewise. * libgnat/g-comlin.adb (Internal_Initialize_Option_Scan) (Display_Section_Help): Likewise. * libgnat/g-comlin.ads (Opt_Parser_Data): Likewise. * libgnat/g-debpoo.adb (Set_Dead_Beef, Dump): Likewise. * libgnat/g-expect.adb (Expect, Has_Process, Send): Likewise. * libgnat/g-forstr.adb ("+", Get_Formatted): Likewise. * libgnat/g-memdum.adb (Dump): Likewise. * libgnat/g-rannum.adb (Image): Likewise. * libgnat/g-sechas.adb (Final, HMAC_Initial_Context): Likewise. * libgnat/g-sehamd.ads (Initial_State): Likewise. * libgnat/g-sehash.ads (Initial_State): Likewise. * libgnat/g-sercom.ads (Data_Rate_Value): Likewise. * libgnat/g-sercom__linux.adb (C_Data_Rate, C_Bits, C_Stop_Bits) (C_Parity): Likewise. * libgnat/g-shsh32.ads (K, Transform): Likewise. * libgnat/g-shsh64.ads (K, Transform): Likewise. * libgnat/g-socket.adb (Levels, Modes, Shutmodes, Requests) (Options, Flags, Get_Name_Info, Image): Likewise. * libgnat/g-socket.ads (Inet_Addr_Bytes_Length, Inet_Addr_Type) (IPv4_To_IPv6_Prefix, Any_Inet_Addr, Any_Inet6_Addr) (No_Inet_Addr, Broadcast_Inet_Addr, Loopback_Inet_Addr) (Loopback_Inet6_Addr, Unspecified_Group_Inet_Addr) (All_Hosts_Group_Inet_Addr, All_Routers_Group_Inet_Addr) (Unspecified_Group_Inet6_Addr, All_Hosts_Group_Inet6_Addr) (All_Routers_Group_Inet6_Addr): Likewise. * libgnat/g-socpol.adb (To_C, Status, Get_Events): Likewise. * libgnat/g-socpol.ads (Input_Event, Output_Event, Both_Event) (Error_Event): Likewise. * libgnat/g-sothco.ads (Families, Lengths, Sockaddr): Likewise. * libgnat/g-spipat.adb (OK_For_Simple_Arbno): Likewise. * libgnat/i-cobol.ads (Ada_To_COBOL, COBOL_To_Ada): Likewise. * libgnat/i-pacdec.adb (Packed_Byte): Likewise. * libgnat/i-pacdec.ads (Packed_Size): Likewise. * libgnat/s-bitops.adb (Masks): Likewise. * libgnat/s-crc32.adb (Table): Likewise. * libgnat/s-gearop.adb (Unit_Matrix, Unit_Vector): Likewise. * libgnat/s-genbig.adb (Out_data, Zero_Data, Big_Exp, Big_Mul) (To_Bignum, To_String, Image, Leading_Padding): Likewise. * libgnat/s-htable.adb (Reset): Likewise. * libgnat/s-imgcha.adb (C0, C1): Likewise. * libgnat/s-powflt.ads (Powten): Likewise. * libgnat/s-powlfl.ads (Powten): Likewise. * libgnat/s-powllf.ads (Powten): Likewise. * libgnat/s-rannum.adb (Matrix_A, Random_Float_Template, Image): Likewise. * libgnat/s-rannum.ads (Generator): Likewise. * libgnat/s-regexp.adb (Compile,Create_Primary_Table) (Create_Primary_Table_Glob, Create_Secondary_Table, Compile): Likewise. * libgnat/s-regpat.adb (Bit_Conversion, Set, Dump_Until) (Dump_Current, Dump_Error, Try, Reset_Class): Likewise. * libgnat/s-regpat.ads (Pattern_Matcher, Never_Match): Likewise. * libgnat/s-scaval__128.adb (Initialize): Likewise. * libgnat/s-statxd.adb (Fields, W_F, W_LF) (W_LLF, W_SF): Likewise. * libgnat/s-stausa.adb (Initialize, Initialize_Analyzer) (Output_Results): Likewise. * libgnat/s-strops.adb (Str_Concat_SC): Likewise. * libgnat/s-valrea.adb (Maxexp32, Maxexp64, Maxexp80): Likewise. * libgnat/s-wchcon.ads (WC_Encoding_Letters) (WC_Longest_Sequences): Likewise. * par-ch4.adb (P_Aggregate_Or_Paren_Expr): Set Is_Parenthesis_Aggregate when creating a N_Aggregate using parenthesis. * scng.adb (Scan): Lower version needed for bracket syntax from Extensions to Ada2022. * sem_aggr.adb (Resolve_Aggregate): Raise error for container aggregate using parenthesis instead of bracket. (Resolve_Array_Aggregate): Raise warning for aggregate using parenthesis in Ada2022 with obsolescent warning enabled and not in GNAT mode. * sem_util.ads (Check_Ambiguous_Aggregate): Typo fix in comment.
2021-12-02[Ada] Inline all calls in Ada.Task_IdentificationPiotr Trojanek1-0/+1
gcc/ada/ * libgnarl/a-taside.ads (Activation_Is_Complete): Add pragma Inline.
2021-12-02[Ada] Enhance freezing code for instantiationsEric Botcazou1-118/+158
gcc/ada/ * sem_ch12.adb (Freeze_Package_Instance): Consistently consider the freeze node of the parent and use large inequality for Slocs. (Freeze_Subprogram_Instance): Likewise. (Insert_Freeze_Node_For_Instance): For an instance in a package spec with no source body that immediately follows, consider the body of the package for the placement of the freeze node and go to the outer level if there is no such body.
2021-12-02[Ada] Enable expansion of dispatching equality for GNATprovePiotr Trojanek3-15/+280
gcc/ada/ * exp_ch13.ads (Expand_N_Freeze_Entity): Add note about a SPARK twin. * exp_ch3.ads (Freeze_Type): Likewise. * exp_spark.adb (Expand_SPARK_N_Freeze_Entity): Mimic what is done in Freeze_Entity. (SPARK_Freeze_Type): Mimic what is done in Freeze_Type; add call to Make_Predefined_Primitive_Eq_Spec.
2021-12-02[Ada] Separate building of equality from other dispatching routinesPiotr Trojanek2-168/+222
gcc/ada/ * exp_ch3.adb (Make_Predefined_Primitive_Specs): Move code for spec of dispatching equality. (Predefined_Primitive_Bodies): Move code for body if dispatching equality. (Make_Predefined_Primitive_Eq_Spec): Separated code for spec of dispatching equality. (Predefined_Primitive_Eq_Body): Separated code for body of dispatching equality. * exp_ch3.ads: Update.
2021-12-02[Ada] Split spec and body of expression function with Subprogram_VariantPiotr Trojanek1-15/+27
gcc/ada/ * libgnat/s-valuti.ads (Scan_Natural_Ghost): Split body from spec and put it into private part, so that GNATprove can pick it both when analysing the unit and its clients.
2021-12-02[Ada] Remove extra space after assignment symbolPiotr Trojanek5-10/+14
gcc/ada/ * exp_aggr.adb, exp_ch6.adb, par-ch4.adb, sem_ch13.adb: Remove extra space after ":=" symbol. * gen_il-gen.adb: Likewise; add missing headerbox.
2021-12-02[Ada] Don't allow entry in implicit with chain to be ghostRichard Kenner1-3/+11
gcc/ada/ * rtsfind.adb (Maybe_Add_With): Ensure that the added "with" is never marked as ignored ghost code.
2021-12-02[Ada] Simplify iteration over record componentsPiotr Trojanek4-36/+24
gcc/ada/ * freeze.adb (Freeze_Entity): Replace First_Entity/Next_Entity with First_Component/Next_Component; remove condition with Ekind equal to E_Component. * sem_ch13.adb (Check_Record_Representation_Clause): Likewise for component-or-discriminant. * sem_util.adb (Is_Fully_Initialized_Type): Likewise; rename Ent to a more specific Comp. * sem_warn.adb (Check_References): Likewise.