[gcc/marxin/heads/slp-function-v2] (327 commits) Experiment with SLP - whole function scope.
Martin Liska
marxin@gcc.gnu.org
Thu Jun 11 09:46:43 GMT 2020
The branch 'marxin/heads/slp-function-v2' was updated to point to:
d90b8a772e8... Experiment with SLP - whole function scope.
It previously pointed to:
7a3f144c1a5... Experiment with SLP - whole function scope.
Diff:
!!! WARNING: THE FOLLOWING COMMITS ARE NO LONGER ACCESSIBLE (LOST):
-------------------------------------------------------------------
7a3f144... Experiment with SLP - whole function scope.
commit 7a3f144c1a5ace29931c4c6f47ddd0119f8852d3
Author: Martin Liska <mliska@suse.cz>
Date: Wed Jun 3 11:40:17 2020 +0200
Experiment with SLP - whole function scope.
Summary of changes (added commits):
-----------------------------------
d90b8a7... Experiment with SLP - whole function scope.
8cff672... asan: fix RTX emission for ilp32
3747878... vect: Rename things related to rgroup_masks
b337242... vect: Rename fully_masked_p to using_partial_vectors_p
042f408... vect: Rename can_fully_mask_p to can_use_partial_vectors_p
8ff5739... prepare-commit-hook: Use gcc-config.diff-file.
9aadfdd... contrib: Avoid redundant 'git diff' in prepare-commit-msg h
656e363... Fix -Wformat-diag in options-save.c
184c21b... slim up mem exprs to avoid line breaks in -fverbose-asm
dcf41a4... RISC-V: Unify the output asm pattern between gpr_save and g
d0e0c13... RISC-V: Describe correct USEs for gpr_save pattern [PR95252
ec6ffbb... Daily bump.
a73051a... libstdc++: Fix some ranges algos optimizations [PR95578]
06ef9c1... [PR51447] restore the global reg var before returning from
a9eec96... coroutines: Make call argument handling more robust [PR9544
a2c2cee... PR middle-end/95353 - spurious -Wstringop-overflow writing
3a391ad... libstdc++: Extend memcmp optimization in std::lexicographic
371cc68... avoid stmt-info allocation for debug stmts
36e95a9... tree-optimization/95576 - fix compare-debug issue with SLP
b5cebc9... aarch64: Fix an ICE in register_tuple_type [PR95523]
73266be... [Ada] AI12-0364 Add a modular atomic arithmetic package
50ff02b... gcc-changelog: fix parse_git_name_status for renames.
4fed5d5... c++: Fix ICE with delayed parsing of noexcept-specifier [PR
2db262f... [Ada] AI12-0311 New checks for language-defined units
8439cae... [Ada] Don't build equivalent record aggregate if type has p
76e0721... [Ada] Ada 202x AI12-0192 "requires late initialization"
5c0c89c... [Ada] Add missing Sloc on new explicit dereferences
f95fb9d... [Ada] Additional warnings on overlapping actuals of composi
67a44a4... [Ada] Implement AI12-0162 Memberships and Unchecked_Unions
e156631... [Ada] Remove obsolete code in Resolve_Call
2378f3e... [Ada] Insert explicit dereferences when building actual sub
b9daf13... [Ada] Disable unwanted warnings in Assertion_Policy(Ignore)
9c62140... [Ada] Fix gnatmetric switches description
536c271... [Ada] Update headers
e67df67... [Ada] Improve code generated for dynamic discriminated aggr
3aeb5eb... [Ada] Remove more references to ASIS
a53b03b... [Ada] Fix typo in exception message
9c4b497... [Ada] Fix minor typo in comment of membership choice parsin
8ecc348... [Ada] Revert workaround for expansion of Enum_Rep in GNATpr
c64ac47... [Ada] Fold Enum_Rep attribute in evaluation and not in expa
4322f3d... [Ada] Classwide controlled obj not dispatching
dc419b9... [Ada] Ada_2020 AI12-0220: Pre/Postconditions on Access_To_S
057548b... [Ada] Fix assertion failure on functions with contracts
3ea9566... [Ada] Simplify detection of static membership choices
414e752... [Ada] Minor fix style and typos in comments
bbfd4f2... [Ada] Remove unreferenced GNATprove utility routine Get_Low
640ef71... [Ada] Remove Determine_License
948590a... [Ada] Incorrect accessibility checks on functions calls
71c4a2b... [Ada] Reject illegal bodies for null procedures
895cf05... [Ada] Fix incorrect insertion of post-call actions in if-ex
c392a00... [Ada] Minor reformatting and some typo fixes
f25161b... Make {SLP_TREE,STMT_VINFO}_VEC_STMTS a vector of gimple *
1396fa5... Merge evrp uses of substitute_and_fold_engine into the engi
8b6731e... Add missing store in emission of asan_stack_free.
df81764... AArch64: Adjust costing of by element MUL to be the same as
b05d556... Introduce STMT_VINFO_VEC_STMTS
6d9ef06... tmmark: verify_ssa failed [PR95569]
dc6d15e... Add gcc_assert that &global_options are not dirty modified.
771e60d... gcc-changelog: add more Review by prefixes.
1ea9a0b... gcc-changelog: Improve git_commit.py diagnostics
b952c2c... Daily bump.
733167f... libstdc++: Define converting assignment operator for std::m
d364705... libstdc++: Define std::bad_optional_access constructor as d
d7274db... PowerPC: Add future hwcap2 bits
2753f2f... PowerPC: Add future hwcap2 bits
7ba33e8... PowerPC: Add future hwcap2 bits
243e5bb... PowerPC: Add pcrel/prefixed target supports.
7762567... When specifying a non-system prefix with --with-zstd, the b
84fa38d... asan: fix wrong options for a test-case.
006f28a... coroutines: Ensure distinct DTOR trees [PR95137].
62963c6... gcc-changelog: Use non-zero exit status on error
7710368... tree-inline: Fix VLA handling [PR95552]
ab2789e... tsan: Add optional support for distinguishing volatiles
6e52b22... PowerPC: PowerPC tests: Add prefixed/pcrel tests.
ec34277... Remove dead code
9886612... d: Merge upstream dmd 13d67c575.
ef41587... c++: Tweak predeclare_vla.
bf4ab26... openmp: ensure variables in offload table are streamed out
ac22e65... Remove dead code
e12516e... Fix some ChangeLog entries
f6ee4c4... gcov-dump: fix --help spacing
4089df8... sanitizer: do not inline no-sanitize into sanitizer fn
bb3ab62... AArch64+SVE: Add support for unpacked unary ops and BIC
452283b... gcov: improve --coverage small example
862b9b2... libgcov: fix TOPN type casting
009668e... [Ada] Missing check on private overriding of dispatching pr
a2048d0... [Ada] Small enhancement in XEinfo utility
fd66407... [Ada] Implement AI12-0028: Import of variadic C functions
2d6f6e0... [Ada] Code clean ups and comments updates
3e67110... [Ada] Improve handling of null unbounded strings
1a7748a... [Ada] Remove kludge for AI05-0087
148c86d... [Ada] Small cleanup in Einfo unit
4e510a0... [Ada] Ada2020 AI12-0282: Shared variable control aspects in
c4609e7... [Ada] Improve handling of aggregates in Side_Effect_Free
10212bd... [Ada] Fix wrong type being used for range check generation
c42006e... [Ada] Expand more others aggregates statically
4228c32... [Ada] Code refactoring on calls to Set_Debug_Info_Needed
7d4d54a... [Ada] Missing documentation for Returns_By_Ref
d4fd463... [Ada] Spurious overlap error on zero-sized arrays with -gna
7bf5f4d... [Ada] Write_Invocation_Graph_Vertex: include lib item name
b97813a... [Ada] Propagate DIC, Invariant and Predicate attributes to
bf2480e... [Ada] Crash on exit statement within predicated loop
059a704... [Ada] gnatbind: Correct assertions in Add_Edge_Kind_Check
338c32f... [Ada] Add debugging message
dc8adf5... [Ada] Remove bypass for instance bodies from Is_Visible_Com
1138102... [Ada] Membership test against a non-excluding subtype
8e6ca7a... [Ada] Ada2020 AI12-0282: Shared variable control aspects in
05cb816... [Ada] gnatpp: documentation for --no-separate-return switch
881d7a9... [Ada] Add missing tag with -gnatw.d
742048a... [Ada] Refine implementation of AI05-0149 missing conversion
5402594... [Ada] Spurious error on instantiations with Taft_Amendment
6859ef4... [Ada] Annotate Ada.Synchronous_Barriers with SPARK_Mode =>
3795dac... [Ada] AI1-0201 Relational operators of static string types
c68d70e... [Ada] Ada2020: AI12-0301 Predicates and Default_Value
d68c6d7... [Ada] Disable assertion regarding Body_Before_Spec_Edge
942a384... libsanitizer: use gnu++14
4373fd2... gcc-changelog: fix deduction for root ChangeLog
d6dbb71... c-family: Fix up MEM_REF printing [PR95580]
653ab08... match.pd: Optimize ffs comparisons against constants [PR955
9a39b91... testsuite: Fix g++.dg/torture/pr95493.C FAIL on i686-linux
1d9921c... xtensa: libgcc: fix PR target/95571
df2c006... rs6000/testsuite: Allow xxperm* instead of only vperm*
2c455ae... Daily bump.
1c0fdaf... openmp: ensure variables in offload table are streamed out
ffac959... bootstrap: Fix --disable-bootstrap with older g++.
a37fbff... libstdc++: Fix failing tests
931fdcc... Add missing ChangeLog entries
187da2c... libstdc++: Implement operator<< for std::unique_ptr (LWG 29
5fceefe... d: Fix regression caused by recent refactoring
49a09af... d: Merge upstream dmd 955b8b36f.
8cd2396... PR fortran/95195 - Fortran testcase should clean up afterwa
c1057cc... PR bootstrap/95555 - powepc64 bootstrap failure due to -Wma
5dc3986... Fortran : ICE in maybe_canonicalize_comparison_1 PR92993
8be374e... forwprop: Ignore scalar mode vectors in simplify_vector_con
296d644... testsuite: Fix up pr95548.C testcase.
d6430e3... AArch64: Expand on comment of stack-clash and implicit prob
635408d... [arm] Fix vfp_operand_register for VFP HI regs
291f65f... rs6000: Replace FAIL with gcc_unreachable
e7b3f65... [arm] (header usage fix) include c++ algorithm header via s
48b799e... [Ada] Implement AI12-0073 (Ravenscar disallows Synchronous_
63408d0... [Ada] AI12-0204 Renaming of a prefixed view
072c507... [Ada] AI12-0085 Missing aspect cases for Remote_Types
a689887... [Ada] Spurious error on call to controlled primitive
5351d61... [Ada] Port a modified expansion of Enum_Rep from GNAT to GN
e344ec2... [Ada] Style cleanups in new code for Pure_Barriers
a998e58... [Ada] Implement AI12-0291 (Jorvik profile)
4b8c2c4... [Ada] AI12-0228 Properties of qualified expressions used as
8eda13a... [Ada] Fix handling of 'Enum_Rep and renamings
bbe7d67... [Ada] Remove the Has_Dynamic_Range_Check flag
6476fc3... [Ada] Implement AI12-0290 (Simple_Barriers restriction)
8b0ec65... [Ada] Issue with unnesting of 'First/Last and renaming
24eda9e... [Ada] Implement predicate checks on qualified expressions (
7b7f1ca... [Ada] Restore Snames.Name_SPARK as it used in the GNATprove
7907619... [Ada] Remove processing of SPARK_05 restriction
b4aa6e2... [Ada] AI12-0287 Legality Rules for null exclusions in renam
58c4038... [Ada] Ada.Text_IO: fix typo
8214938... [Ada] Do not warn on partial access to atomic object with a
591bdee... [Ada] Add gnatname use for multiple units files support
fccf77d... [Ada] Update doc on Enum_Rep/Enum_Val
176de68... [Ada] Better code generation for nested aggregates
c382d07... [Ada] Reuse standard expansion of 'First and 'Last in GNATp
3ebf0cb... [Ada] Reuse Get_Index_Subtype in the special expander for G
6e063ac... [Ada] AI12-0226 Make objects more consistent
ae9293f... [Ada] Silence spurious warning on instances of formal vecto
d2f7fa0... [Ada] gnatbind: Deterministic No_Entry_Calls_In_Elaboration
2f7294f... [Ada] Ada_2020: shared variable control aspects on formal d
8472d81... [Ada] Fix socket timeout correction for Windows Server 2019
54c1fdb... [Ada] Add Depends contracts to Delete procedures of formal
9490fd5... [Ada] AI12-0309 Missing checks for pragma Suppress
53d461e... Daily bump.
0a2ee40... d: Merge upstream dmd 73d8e2fec.
f08995e... i386: Improve expansion of __builtin_parity
fced594... d: Merge upstream dmd 108ca1bcd.
c3a2ba1... d: Merge upstream dmd b0df0e982
5aaccde... PR fortran/95091 - Buffer overflows with submodules and lon
761306f... d: Merge upstream dmd 1831b24ff.
b342cfd... PR fortran/95091 - Buffer overflows with submodules and lon
d8930b1... d: Merge upstream dmd cef1e7991.
557a40f... rs6000: allow cunroll to grow size according to -funroll-lo
71489d8... Introduce flag_cunroll_grow_size for cunroll
905ba62... Added test case for a PR which has been fixed in the meanti
8f94b07... Daily bump.
eca7a60... Fix ICE in ODR enum streaming [PR95548]
1ca05de... MAINTAINERS: Add myself as xtensa port maintainer
2e6a664... [PR95456] avoid memcpy (_, NULL, 0) in gcc.c
1a59f3d... Daily bump.
5bc13e5... d: Merge upstream dmd 740f3d1ea.
3a73a6a... Temporarily remove an unintentionally commited test.
cecc73a... c++: Make braced-init-list as template arg work with aggr i
bcd96c9... PR fortran/95530, PR fortran/95537 - Buffer overflows with
6088327... coroutines: co_returns are statements, not expressions.
1c7bcef... diagnostics: Consistently add fixit hint for implicit built
0cdc55f... d: Merge upstream dmd f5638c7b8.
5094c44... c++: Fix pretty-print of pointer minus integer.
640e05e... fortran/95509 - fix spellcheck-operator.f90 regression
1afc467... [OpenACC 'exit data'] Strip 'GOMP_MAP_STRUCT' mappings
1809628... [OpenACC 'exit data'] Simplify 'GOMP_MAP_STRUCT' handling
9643f5b... Add 'libgomp.oacc-c-c++-common/struct-copyout-{1,2}.c'
5905cbd... d: Merge upstream dmd 56f0a65c4.
300452d... Adjust text of expected warnings to g:b825a22890740f341eae5
89b49a9... [Ada] Replace ? by ?? in Error_Msg_N
f67a6e9... [Ada] Update comments wrt Ada 83 handling
4ccf713... [Ada] Support 'Reduce under -gnatX
3af132b... [Ada] Add note about gnatcov reliance on thunk names
faf2500... [Ada] Subtype inherits Atomic flag from base type
bf44027... [Ada] Fix punctuation in description of Enum_Rep attribute
32115be... [Ada] Make the Has_Dynamic_Range_Check flag obsolete
0ad46f0... [Ada] Do not create an empty list of nodes that confuses GN
f8ca4dd... [Ada] Optimize Normalize_Pathname
c8e89a6... [Ada] Spurious assert failure in Walk_Library_Items
2db2527... [Ada] Use Is_Incomplete_Type instead of a low-level Ekind t
5055499... [Ada] Simplify iteration over components
c7d1931... [Ada] Fix incorrect initialization for array of non-standar
a275441... [Ada] Put_Image attribute: Rtsfind cleanups
d1987ff... [Ada] Move routine for detecting special Text_IO packages f
ca124a6... [Ada] Add comment about function only used in CodePeer
2107ca0... [Ada] Spurious error on address clause in task body
a8aecf3... [Ada] Add missing Global contract to Ada.Containers.Functio
a9969d7... [Ada] AI12-0207 Convention of anonymous access types
632d4a4... [Ada] AI12-0336 Meaning of Time_Offset
bec1369... [Ada] Fix assertion failure on double rederivation of priva
e0fd1b9... [Ada] Put_Image attribute
c3c80e3... [Ada] AI12-0144 Make Discrete_Random more flexible
61fa3fd... [Ada] AI12-0237 Getting the representation of an enumeratio
79d09a4... [Ada] AI12-0318 No_IO should apply to Ada.Directories
f191b2c... [Ada] AI12-0235 System.Storage_Pools should be pure
efd0843... [Ada] Add No_Truncation flag on view conversion for GNAT-LL
5620a9c... [Ada] Assertion_Policy (Ignore) ignores invariants
6c8e70f... [Ada] Rename parameter of routines in Checks
a4c1787... [Ada] Minor wording changes wrt Ada 202x
d3da83f... d: Merge upstream dmd 6d5bffa54
9758d19... tree-optimization/95539 - fix SLP_TREE_REPRESENTATIVE vs. d
9a182ef... expand: Simplify removing subregs when expanding a copy [PR
892b51c... ix86: Improve __builtin_c[lt]z followed by extension [PR955
6ea6c49... Add new/delete to struct occurence
80d6f89... middle-end/95493 - bogus MEM_ATTRS for variable array acces
6c6931a... Fix bitmask conflict between PTA_AVX512VP2INTERSECT and PTA
3add342... Daily bump.
f2242ec... libstdc++: Remove workarounds for constrained nested class
b825a22... Implement a solution for PR middle-end/10138 and PR middle-
2cbc99d... d: Merge upstream dmd 48d704f08
4e05c91... libstdc++: Specialize copy/copy_n for istreambuf_iterator a
8e788ac... d: Merge upstream dmd 47ed0330f
7ece3bd... c++: Fix complex constexpr virtual cases [PR93310].
0ddb93c... c++: Fix FE devirt with diamond inheritance [PR95158]
8c727bd... PR fortran/95500 - Segfault compiling extra interface on in
4f2d05e... coroutines: Fix missed ramp function return copy elision [P
e7ef9a4... Add test for PR95464.c.
2c838a3... [OpenACC 'exit data'] Evaluate 'copyfrom' individually for
a02f1ad... [OpenACC 'exit data'] Evaluate 'finalize' individually for
db7179e... Fix 'sizeof' usage in 'libgomp.oacc-c-c++-common/deep-copy-
06ec617... [OpenACC] Repair/restore 'is_tgt_unmapped' checking
2112d32... [OpenACC] Don't open-code 'gomp_remove_var' in 'acc_unmap_d
4662f7f... [OpenACC] Remove 'tgt' reference counting from 'acc_unmap_d
af8fd1a... Extend 'libgomp.oacc-c-c++-common/pr92854-1.c' some more [P
f233418... [OpenACC] Use 'tgt' returned from 'gomp_map_vars'
8d7794c... [OpenACC] XFAIL behavior of over-eager 'finalize' clause
2e24d45... [OpenACC] Missing unlocking on error paths in attach/detach
dc95415... [OpenACC] Missing unlocking on error paths in attach/detach
1e378ed... 'libgomp.oacc-fortran/{error_,}stop-{1,2,3}.f': initialize
2803d2f... d: Split up d-frontend.cc into multiple parts.
5261cf8... Add processing STRICT_LOW_PART for matched reloads.
ab56390... aarch64: PR target/95526: Fix gimplification of varargs
1980ffe... ipa-sra: Do not remove statements necessary because of non-
9a810e5... [ARM]: Correct the grouping of operands in MVE vector scatt
d34f510... [PATCH][GCC] arm: Fix the MVE ACLE vbicq intrinsics.
b15369e... add vect_get_slp_vect_def
a0dae76... Add explicit SLP_TREE_LANES
e1008cd... libstdc++: Make std::copy_n work with negative and non-inte
a3a70bf... Simplify SLP code wrt SLP_TREE_DEF_TYPE
43088bb... Fix zero-masking for vcvtps2ph when dest operand is memory.
53ec04c... [Ada] AI12-0184: Long Long C Data types
301e2a1... [Ada] New package Ada.Task_Initialization
9531ffd... [Ada] Ada_2020: contracts for formal subprograms
25a76d6... [Ada] Add missing conversion in call to Finalize primitive
3ab26de... [Ada] Get rid of Disable_FE_Inline_Always
198064c... [Ada] Fix a couple of oversights in previous change
110d082... [Ada] Put_Image attribute
a3fbece... [Ada] Alignment clause ignored on completion derived from p
e5e53c7... [Ada] Remove OpenACC support
a6b37ab... [Ada] Remove obsolete reference to gigi in comment
4f31d6d... [Ada] Implement AI12-0275 (Make subtype_mark optional in ob
96cd894... [Ada] Fix glitch for N_Delta_Aggregate/N_Case_Expression/N_
354cce5... [Ada] Avoid redefining IS_DIR_SEPARATOR macro
c21938b... [Ada] Wrong walk order in Walk_Library_Items
1e01ddd... [Ada] Import Adafinal as convention Ada
0b27ccc... [Ada] Incorrect source line range on subprogram body with c
593627b... [Ada] Revamp dump and aux output names
d2f87b2... [Ada] Set convention and inlined flag on default null proce
a0c94bd... [Ada] Missing accessibility check on access discriminant in
7c02e40... [Ada] Fix Is_Absolute_Path on Windows
51bc44b... [Ada] Update the documentation in checks.ads about range ch
d46b330... [Ada] Small tweak to special handling of private index type
528576d... [Ada] New procedure Register_Global_Unhandled_Action
32cc672... [Ada] Update URL and bug report instructions
b5682bf... [Ada] Avoid buffer overflow in Long_Long_Float_Text_IO
b68c167... [Ada] Remove System.Parameters.Single_Lock
bbe376e... [Ada] Continuation of "Get rid of more references to Univer
8b3bf48... [Ada] Add another ad-hoc case to the Has_Private_View mecha
8a91f77... [Ada] Fix fallout of cleanup to Has_Private_View mechanism
9f3a179... [Ada] Minor editorial fixes
54ecfb1... cselim: Extend to check non-trapping for more references [P
9b4e77e... Fix missing assemble_external in ASM_OUTPUT_FDESC
0ecf522... Missing __divtf3@@GCC_4.4.0 on ia64
c0b99f6... Fix uppercase in trunc<mode><pmov_dst_3>2.
eeb54a1... c++: Reject some further reinterpret casts in constexpr [PR
9a5b743... Daily bump.
1dc83b4... Provide diagnostic hints for missing C++ cinttypes string c
9eea5d2... Provide diagnostic hints for missing C inttypes.h string co
34e4962... diagnostics: Add function call parens matching to c_parser.
29e304f... optimize tanh(x) / sinh (x) to 1/ cosh (x)
817738f... Update gcc sv.po.
c0d738a... identify lfs prefixed case PR95347
c06280a... c++: more constrained nested partial specialization
aee6907... c++: constrained nested partial specialization [PR92103]
3fb68f2... Optimize ODR enum streaming
cf7eac5... coroutines: Allow parameter packs in co_await/yield express
b19d8aa... Fix missing dependencies for selftests which occasionally c
ef4e0c3... c++: Fix VLA in template [PR95232]
8d57c30... Simple patch only add assumed-rank to the list of possible
887c45f... tree-optimization/95487 - use a truth type for scatter mask
6d36cc2... jit: implement BT_CONST_VOLATILE_PTR [PR 95306]
779ae32... tree-optimization/95495 - use SLP_TREE_REPRESENTATIVE in as
079632d... Prefer simple case changes in spelling suggestions
f05c84a... simplify visited flag unsetting in SLP scalar cost computat
93535a2... [OpenMP] Fix mapping of artificial variables (PR94874)
dda7167... Cleanup LTO tag streaming.
commit d90b8a772e856dcbffa8e147438bf1a84e721cf4
Author: Martin Liska <mliska@suse.cz>
Date: Wed Jun 3 11:40:17 2020 +0200
Experiment with SLP - whole function scope.
commit 8cff672cb9a132d3d3158c2edfc9a64b55292b80
Author: Martin Liska <mliska@suse.cz>
Date: Thu Jun 11 09:34:41 2020 +0200
asan: fix RTX emission for ilp32
gcc/ChangeLog:
PR sanitizer/95634
* asan.c (asan_emit_stack_protection): Fix emission for ilp32
by using Pmode instead of ptr_mode.
Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
commit 37478789dc446a28ffc642ee121e8c3959e5fe47
Author: Kewen Lin <linkw@gcc.gnu.org>
Date: Thu Jun 4 13:57:19 2020 +0800
vect: Rename things related to rgroup_masks
Power supports vector memory access with length (in bytes) instructions.
Like existing fully masking for SVE, it is another approach to vectorize
the loop using partially-populated vectors.
As Richard Sandiford pointed out, we can rename the rgroup struct
rgroup_masks to rgroup_controls, rename its members mask_type to type,
masks to controls to be more generic.
Besides, this patch also renames some functions like vect_set_loop_mask
to vect_set_loop_control, release_vec_loop_masks to
release_vec_loop_controls, vect_set_loop_masks_directly to
vect_set_loop_controls_directly.
Bootstrapped/regtested on aarch64-linux-gnu.
gcc/ChangeLog:
* tree-vect-loop-manip.c (vect_set_loop_mask): Renamed to ...
(vect_set_loop_control): ... this.
(vect_maybe_permute_loop_masks): Rename rgroup_masks related things.
(vect_set_loop_masks_directly): Renamed to ...
(vect_set_loop_controls_directly): ... this. Also rename some
variables with ctrl instead of mask. Rename vect_set_loop_mask to
vect_set_loop_control.
(vect_set_loop_condition_masked): Rename rgroup_masks related things.
Also rename some variables with ctrl instead of mask.
* tree-vect-loop.c (release_vec_loop_masks): Renamed to ...
(release_vec_loop_controls): ... this. Rename rgroup_masks related
things.
(_loop_vec_info::~_loop_vec_info): Rename release_vec_loop_masks to
release_vec_loop_controls.
(can_produce_all_loop_masks_p): Rename rgroup_masks related things.
(vect_get_max_nscalars_per_iter): Likewise.
(vect_estimate_min_profitable_iters): Likewise.
(vect_record_loop_mask): Likewise.
(vect_get_loop_mask): Likewise.
* tree-vectorizer.h (struct rgroup_masks): Renamed to ...
(struct rgroup_controls): ... this. Also rename mask_type
to type and rename masks to controls.
commit b3372425ecf3e225d7a2b3c73e061e11498b6f74
Author: Kewen Lin <linkw@gcc.gnu.org>
Date: Thu Jun 4 10:09:01 2020 +0800
vect: Rename fully_masked_p to using_partial_vectors_p
Power supports vector memory access with length (in bytes) instructions.
Like existing fully masking for SVE, it is another approach to vectorize
the loop using partially-populated vectors.
As Richard Sandiford suggested, this patch is to update the existing
fully_masked_p field to using_partial_vectors_p. Introduce one macro
LOOP_VINFO_USING_PARTIAL_VECTORS_P for partial vectorization checking
usage, update the LOOP_VINFO_FULLY_MASKED_P with
LOOP_VINFO_USING_PARTIAL_VECTORS_P && !masks.is_empty() and still use
it for mask-based partial vectors approach specific checks.
Bootstrapped/regtested on aarch64-linux-gnu.
gcc/ChangeLog:
* tree-vect-loop-manip.c (vect_set_loop_condition): Rename
LOOP_VINFO_FULLY_MASKED_P to LOOP_VINFO_USING_PARTIAL_VECTORS_P.
(vect_gen_vector_loop_niters): Likewise.
(vect_do_peeling): Likewise.
* tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Rename
fully_masked_p to using_partial_vectors_p.
(vect_analyze_loop_costing): Rename LOOP_VINFO_FULLY_MASKED_P to
LOOP_VINFO_USING_PARTIAL_VECTORS_P.
(determine_peel_for_niter): Likewise.
(vect_estimate_min_profitable_iters): Likewise.
(vect_transform_loop): Likewise.
* tree-vectorizer.h (LOOP_VINFO_FULLY_MASKED_P): Updated.
(LOOP_VINFO_USING_PARTIAL_VECTORS_P): New macro.
commit 042f4082979aa22e08c008ed4c5b4bab3915a9c2
Author: Kewen Lin <linkw@gcc.gnu.org>
Date: Wed Jun 3 17:15:14 2020 +0800
vect: Rename can_fully_mask_p to can_use_partial_vectors_p
Power supports vector memory access with length (in bytes) instructions.
Like existing fully masking for SVE, it is another approach to vectorize
the loop using partially-populated vectors.
As Richard Sandiford pointed out, we should extend the existing flag
can_fully_mask_p to be more generic, to indicate whether we have
any chances with partial vectors for this loop. So this patch
is to rename this flag to can_use_partial_vectors_p to be more
meaningful, also rename the macro LOOP_VINFO_CAN_FULLY_MASK_P
to LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P.
Bootstrapped/regtested on aarch64-linux-gnu.
gcc/ChangeLog:
* tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Rename
can_fully_mask_p to can_use_partial_vectors_p.
(vect_analyze_loop_2): Rename LOOP_VINFO_CAN_FULLY_MASK_P to
LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P. Rename saved_can_fully_mask_p
to saved_can_use_partial_vectors_p.
(vectorizable_reduction): Rename LOOP_VINFO_CAN_FULLY_MASK_P to
LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P.
(vectorizable_live_operation): Likewise.
* tree-vect-stmts.c (permute_vec_elements): Likewise.
(check_load_store_masking): Likewise.
(vectorizable_operation): Likewise.
(vectorizable_store): Likewise.
(vectorizable_load): Likewise.
(vectorizable_condition): Likewise.
* tree-vectorizer.h (LOOP_VINFO_CAN_FULLY_MASK_P): Renamed to ...
(LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P): ... this.
(_loop_vec_info): Rename can_fully_mask_p to can_use_partial_vectors_p.
commit 8ff57396d6dea4976b05902919070aa0e562354d
Author: Martin Liska <mliska@suse.cz>
Date: Thu Jun 11 10:02:26 2020 +0200
prepare-commit-hook: Use gcc-config.diff-file.
contrib/ChangeLog:
* prepare-commit-msg: Replace ENV variable with a git config
value.
commit 9aadfdd650bc32150c9800b73fb3e5ac83fc5a72
Author: Jonathan Wakely <jwakely@redhat.com>
Date: Thu Jun 11 09:57:58 2020 +0200
contrib: Avoid redundant 'git diff' in prepare-commit-msg hook
contrib/ChangeLog:
* prepare-commit-msg: Use 'tee' to save the diff to a file
instead of running 'git diff' twice.
commit 656e363bccc1926b223eb78962338d638ba72d32
Author: Martin Liska <mliska@suse.cz>
Date: Thu Jun 11 09:12:25 2020 +0200
Fix -Wformat-diag in options-save.c
The patch removes bunch of warnings:
options-save.c:12004:29: warning: unquoted identifier or keyword âglobal_optionsâ in format [-Wformat-diag]
12004 | internal_error ("Error: global_options are modified in local context\n");
gcc/ChangeLog:
* optc-save-gen.awk: Quote error string.
commit 184c21bf1cd04a108ed9bd04635e7d57ac39f616
Author: Alexandre Oliva <oliva@adacore.com>
Date: Wed Jun 10 23:58:23 2020 -0300
slim up mem exprs to avoid line breaks in -fverbose-asm
An asm operand with a "VIEW_CONVERT_EXPR<struct {
[...]
}>" will output the definition of the struct as asm code. Oops.
Enable TDF_SLIM in print_mem_expr to avoid such line breaks.
for gcc/ChangeLog
* print-rtl.c (print_mem_expr): Enable TDF_SLIM in dump_flags.
commit dcf41a4e6033213f5e5f80da23080df961d83996
Author: Kito Cheng <kito.cheng@sifive.com>
Date: Wed Jun 10 19:41:06 2020 -0700
RISC-V: Unify the output asm pattern between gpr_save and gpr_restore pattern.
gcc/ChangeLog:
* config/riscv/riscv-protos.h (riscv_output_gpr_save): Remove.
* config/riscv/riscv-sr.c (riscv_sr_match_prologue): Update
value.
* config/riscv/riscv.c (riscv_output_gpr_save): Remove.
* config/riscv/riscv.md (gpr_save): Update output asm pattern.
commit d0e0c1300f9f08608873df5571e14a61308dd0c0
Author: Kito Cheng <kito.cheng@sifive.com>
Date: Wed Jun 10 19:40:59 2020 -0700
RISC-V: Describe correct USEs for gpr_save pattern [PR95252]
- Verified on rv32emc/rv32gc/rv64gc bare-metal target and rv32gc/rv64gc
linux target with qemu.
gcc/ChangeLog:
* config/riscv/predicates.md (gpr_save_operation): New.
* config/riscv/riscv-protos.h (riscv_gen_gpr_save_insn): New.
(riscv_gpr_save_operation_p): Ditto.
* config/riscv/riscv-sr.c (riscv_remove_unneeded_save_restore_calls):
Ignore USEs for gpr_save patter.
* config/riscv/riscv.c (gpr_save_reg_order): New.
(riscv_expand_prologue): Use riscv_gen_gpr_save_insn to gen gpr_save.
(riscv_gen_gpr_save_insn): New.
(riscv_gpr_save_operation_p): Ditto.
* config/riscv/riscv.md (S3_REGNUM): New.
(S4_REGNUM): Ditto.
(S5_REGNUM): Ditto.
(S6_REGNUM): Ditto.
(S7_REGNUM): Ditto.
(S8_REGNUM): Ditto.
(S9_REGNUM): Ditto.
(S10_REGNUM): Ditto.
(S11_REGNUM): Ditto.
(gpr_save): Model USEs correctly.
gcc/testsuite/ChangeLog:
* gcc.target/riscv/pr95252.c: New.
commit ec6ffbb919cdde26da3fbc949e65d564c70a3084
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date: Thu Jun 11 00:16:45 2020 +0000
Daily bump.
commit a73051a0ea9ce8281e748a74dd924a6eb8fb3723
Author: Patrick Palka <ppalka@redhat.com>
Date: Wed Jun 10 17:37:53 2020 -0400
libstdc++: Fix some ranges algos optimizations [PR95578]
ranges::copy and a number of other ranges algorithms have unwrapping
optimizations for iterators of type __normal_iterator, move_iterator and
reverse_iterator. But in the checks that guard these optimizations we
currently only test that the iterator of the iterator/sentinel pair has
the appropriate type before proceeding with the corresponding
optimization, and do not also test the sentinel type.
This breaks the testcase in this PR because this testcase constructs via
range adaptors a range whose begin() is a __normal_iterator and whose
end() is a custom sentinel type, and then performs ranges::copy on it.
From there we bogusly perform the __normal_iterator unwrapping
optimization on this iterator/sentinel pair, which immediately leads to
a constraint failure since the custom sentinel type does not model
sentinel_for<int*>.
This patch fixes this issue by refining each of the problematic checks
to also test that the iterator and sentinel types are the same before
applying the corresponding unwrapping optimization. Along the way, some
code simplifications are made.
libstdc++-v3/ChangeLog:
PR libstdc++/95578
* include/bits/ranges_algo.h (__lexicographical_compare_fn):
Also check that the iterator and sentinel have the same type before
applying the unwrapping optimization for __normal_iterator.
Split the check into two, one for the first iterator/sentinel
pair and another for second iterator/sentinel pair. Remove uses
of __niter_base, and remove uses of std::move on a
__normal_iterator.
* include/bits/ranges_algobase.h (__equal_fn): Likewise.
(__copy_or_move): Likewise. Perform similar adjustments for
the reverse_iterator and move_iterator optimizations. Inline
the checks into the if-constexprs, and use using-declarations to
make them less visually noisy. Remove uses of __niter_wrap.
(__copy_or_move_backward): Likewise.
* testsuite/25_algorithms/copy/95578.cc: New test.
* testsuite/25_algorithms/copy_backward/95578.cc: New test.
* testsuite/25_algorithms/equal/95578.cc: New test.
* testsuite/25_algorithms/lexicographical_compare/95578.cc: New test.
* testsuite/25_algorithms/move/95578.cc: New test.
* testsuite/25_algorithms/move_backward/95578.cc: New test.
commit 06ef9c119c56568e5f77a5189aa382cb97c95a9e
Author: Alexandre Oliva <oliva@adacore.com>
Date: Wed Jun 10 17:56:36 2020 -0300
[PR51447] restore the global reg var before returning from main
A runtime system might legitimately hold in rbx a value expected to be
preserved across the call to main, but its use as a global register
variable stops main from preserving it.
for gcc/testsuite/ChangeLog
PR rtl-optimization/51447
* gcc.c-torture/execute/pr51447.c (main): Preserve call-saved
register.
commit a9eec9625ea7165292958be04899b057804192fb
Author: Iain Sandoe <iain@sandoe.co.uk>
Date: Wed Jun 10 00:15:28 2020 +0100
coroutines: Make call argument handling more robust [PR95440]
build_new_method_call is supposed to be able to handle a null
arguments list pointer (when the method has no parms). There
were a couple of places where uses of the argument list pointer
were not defended against NULL.
gcc/cp/ChangeLog:
PR c++/95440
* call.c (add_candidates): Use vec_safe_length() for
testing the arguments list.
(build_new_method_call_1): Use vec_safe_is_empty() when
checking for an empty args list.
gcc/testsuite/ChangeLog:
PR c++/95440
* g++.dg/coroutines/pr95440.C: New test.
commit a2c2cee92e5defff9bf23d3b1184ee96e57e5fdd
Author: Martin Sebor <msebor@redhat.com>
Date: Wed Jun 10 12:00:08 2020 -0600
PR middle-end/95353 - spurious -Wstringop-overflow writing to a trailing array plus offset
Also resolves:
PR middle-end/92939 - missing -Wstringop-overflow on negative index from the end of array
gcc/ChangeLog:
PR middle-end/95353
PR middle-end/92939
* builtins.c (inform_access): New function.
(check_access): Call it. Add argument.
(addr_decl_size): Remove.
(get_range): New function.
(compute_objsize): New overload. Only use compute_builtin_object_size
with raw memory function.
(check_memop_access): Pass new argument to compute_objsize and
check_access.
(expand_builtin_memchr, expand_builtin_strcat): Same.
(expand_builtin_strcpy, expand_builtin_stpcpy_1): Same.
(expand_builtin_stpncpy, check_strncat_sizes): Same.
(expand_builtin_strncat, expand_builtin_strncpy): Same.
(expand_builtin_memcmp): Same.
* builtins.h (check_nul_terminated_array): Declare extern.
(check_access): Add argument.
(struct access_ref, struct access_data): New structs.
* gimple-ssa-warn-restrict.c (clamp_offset): New helper.
(builtin_access::overlap): Call it.
* tree-object-size.c (decl_init_size): Declare extern.
(addr_object_size): Correct offset computation.
* tree-object-size.h (decl_init_size): Declare.
* tree-ssa-strlen.c (handle_integral_assign): Remove a call
to maybe_warn_overflow when assigning to an SSA_NAME.
gcc/testsuite/ChangeLog:
PR middle-end/95353
PR middle-end/92939
* c-c++-common/Wstringop-truncation.c: Remove an xfail.
* gcc.dg/Warray-bounds-46.c: Remove a bogus warning.
* gcc.dg/Wrestrict-9.c: Disable -Wstringop-overflow.
* gcc.dg/Wstringop-overflow-12.c: Remove xfails.
* gcc.dg/Wstringop-overflow-28.c: Same.
* gcc.dg/builtin-stringop-chk-4.c: Same.
* gcc.dg/builtin-stringop-chk-5.c: Same.
* gcc.dg/builtin-stringop-chk-8.c: Same.
* gcc.dg/strlenopt-74.c: Avoid buffer overflow.
* gcc.dg/Wstringop-overflow-34.c: New test.
* gcc.dg/Wstringop-overflow-35.c: New test.
* gcc.dg/Wstringop-overflow-36.c: New test.
* gcc.dg/Wstringop-overflow-37.c: New test.
* gcc.dg/Wstringop-overflow-38.c: New test.
commit 3a391adf7a38780f8d01dbac08a2a143fc80b469
Author: François Dumont <fdumont@gcc.gnu.org>
Date: Wed Jun 10 17:48:46 2020 +0100
libstdc++: Extend memcmp optimization in std::lexicographical_compare
Make the memcmp optimization work for std::deque iterators and safe
iterators.
Co-authored-by: Jonathan Wakely <jwakely@redhat.com>
libstdc++-v3/ChangeLog:
2020-06-08 François Dumont <fdumont@gcc.gnu.org>
Jonathan Wakely <jwakely@redhat.com>
* include/bits/deque.tcc (__lex_cmp_dit): New.
(__lexicographical_compare_aux1): Define overloads for deque
iterators.
* include/bits/stl_algobase.h (__lexicographical_compare::__3way):
New static member function.
(__lexicographical_compare<true>::__3way): Likewise.
(__lexicographical_compare<true>::__lc): Use __3way.
(__lexicographical_compare_aux): Rename to
__lexicographical_compare_aux1 and declare overloads for deque
iterators.
(__lexicographical_compare_aux): Define new forwarding function
that calls __lexicographical_compare_aux1 and declare new overloads
for safe iterators.
(lexicographical_compare): Do not use __niter_base on
parameters.
* include/debug/safe_iterator.tcc
(__lexicographical_compare_aux): Define overloads for safe
iterators.
* testsuite/25_algorithms/lexicographical_compare/1.cc: Add
checks with random access iterators.
* testsuite/25_algorithms/lexicographical_compare/deque_iterators/1.cc:
New test.
commit 371cc683371bedb0e53ebcee0c0e89604a1e74b1
Author: Richard Biener <rguenther@suse.de>
Date: Wed Jun 10 18:07:37 2020 +0200
avoid stmt-info allocation for debug stmts
The following avoids allocating stmt info structs for debug stmts.
2020-06-10 Richard Biener <rguenther@suse.de>
* tree-vect-loop.c (vect_determine_vectorization_factor):
Skip debug stmts.
(_loop_vec_info::_loop_vec_info): Likewise.
(vect_update_vf_for_slp): Likewise.
(vect_analyze_loop_operations): Likewise.
(update_epilogue_loop_vinfo): Likewise.
* tree-vect-patterns.c (vect_determine_precisions): Likewise.
(vect_pattern_recog): Likewise.
* tree-vect-slp.c (vect_detect_hybrid_slp): Likewise.
(_bb_vec_info::_bb_vec_info): Likewise.
* tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized):
Likewise.
commit 36e95a9e539a08275a0a6ef542a7fae5baa5710f
Author: Richard Biener <rguenther@suse.de>
Date: Wed Jun 10 15:16:23 2020 +0200
tree-optimization/95576 - fix compare-debug issue with SLP vectorization
The following avoids leading debug stmts in BB vectorizer regions.
2020-06-10 Richard Biener <rguenther@suse.de>
PR tree-optimization/95576
* tree-vect-slp.c (vect_slp_bb): Skip leading debug stmts.
* g++.dg/vect/pr95576.cc: New testcase.
commit b5cebc9ab7f6ab47067dc04cae17bf9921a62a18
Author: z00219097 <z.zhanghaijian@huawei.com>
Date: Wed Jun 10 16:58:51 2020 +0100
aarch64: Fix an ICE in register_tuple_type [PR95523]
When registering the tuple type in register_tuple_type, the
TYPE_ALIGN (tuple_type) will be changed by -fpack-struct=n. We need to
maintain natural alignment in handle_arm_sve_h.
2020-06-10 Haijian Zhang <z.zhanghaijian@huawei.com>
gcc/
PR target/95523
* config/aarch64/aarch64-sve-builtins.h
(sve_switcher::m_old_maximum_field_alignment): New member.
* config/aarch64/aarch64-sve-builtins.cc
(sve_switcher::sve_switcher): Save maximum_field_alignment in
m_old_maximum_field_alignment and clear maximum_field_alignment.
(sve_switcher::~sve_switcher): Restore maximum_field_alignment.
gcc/testsuite/
PR target/95523
* gcc.target/aarch64/sve/pr95523.c: New test.
commit 73266be246a1bf1781b8ef6ee1395e8602681350
Author: Arnaud Charlet <charlet@adacore.com>
Date: Thu Mar 12 09:46:55 2020 -0400
[Ada] AI12-0364 Add a modular atomic arithmetic package
2020-06-10 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* libgnat/s-aomoar.ads, libgnat/s-aomoar.adb: New files.
* libgnat/s-atopar.ads: Move...
* libgnat/s-aoinar.ads: Here.
* libgnat/s-atopar.adb: Move...
* libgnat/s-aoinar.adb: Here.
* impunit.adb: Update list of runtime files.
* Makefile.rtl (GNATRTL_NONTASKING_OBJS=): Adjust.
commit 50ff02b534195c12298c64311d03a8b2d2dc261f
Author: Martin Liska <mliska@suse.cz>
Date: Wed Jun 10 16:07:10 2020 +0200
gcc-changelog: fix parse_git_name_status for renames.
Renamed files are listed in the following format:
M gcc/ada/Makefile.rtl
M gcc/ada/impunit.adb
R097 gcc/ada/libgnat/s-atopar.adb gcc/ada/libgnat/s-aoinar.adb
R095 gcc/ada/libgnat/s-atopar.ads gcc/ada/libgnat/s-aoinar.ads
A gcc/ada/libgnat/s-aomoar.adb
A gcc/ada/libgnat/s-aomoar.ads
So 'R' is followed by a percentage number.
contrib/ChangeLog:
* gcc-changelog/git_commit.py: Fix renamed files in
parse_git_name_status.
* gcc-changelog/test_email.py: Add test for it.
commit 4fed5d5dd85e3f5d812d125f692351646a0417cb
Author: Marek Polacek <polacek@redhat.com>
Date: Tue Jun 9 18:08:45 2020 -0400
c++: Fix ICE with delayed parsing of noexcept-specifier [PR95562]
Here we ICE because a DEFERRED_PARSE expression leaked to tsubst_copy.
We create these expressions for deferred noexcept-specifiers in
cp_parser_save_noexcept; they are supposed to be re-parsed in
cp_parser_late_noexcept_specifier. In this case we never got around
to re-parsing it because the noexcept-specifier was attached to a
pointer to a function, not to a function declaration. But we should
not have delayed the parsing here in the first place; we already
avoid delaying the parsing for alias-decls, typedefs, and friend
function declarations. (Clang++ also doesn't delay the parsing
for pointers to function.)
gcc/cp/ChangeLog:
PR c++/95562
* parser.c (cp_parser_direct_declarator): Clear
CP_PARSER_FLAGS_DELAY_NOEXCEPT if the declarator kind is not
cdk_id.
gcc/testsuite/ChangeLog:
PR c++/95562
* g++.dg/cpp0x/noexcept60.C: New test.
commit 2db262f29a4b1495885b1f23335b6dc363bf1143
Author: Arnaud Charlet <charlet@adacore.com>
Date: Wed Mar 11 07:56:34 2020 -0400
[Ada] AI12-0311 New checks for language-defined units
2020-06-10 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* snames.ads-tmpl (Name_Characters_Assertion_Check,
Name_Containers_Assertion_Check,
Name_Interfaces_Assertion_Check, Name_IO_Assertion_Check,
Name_Numerics_Assertion_Check, Name_Strings_Assertion_Check,
Name_System_Assertion_Check): New constants.
* types.ads (Characters_Assertion_Check,
Containers_Assertion_Check, Interfaces_Assertion_Check,
IO_Assertion_Check, Numerics_Assertion_Check,
Strings_Assertion_Check, System_Assertion_Check): New constants.
(All_Checks): Update accordingly.
commit 8439cae845f2148c2df5aefa120b968ec73dd07e
Author: Ghjuvan Lacambre <lacambre@adacore.com>
Date: Wed Mar 11 08:55:56 2020 +0100
[Ada] Don't build equivalent record aggregate if type has predicates
2020-06-10 Ghjuvan Lacambre <lacambre@adacore.com>
gcc/ada/
* exp_ch3.adb (Build_Equivalent_Record_Aggregate): Return Empty
if Etype of record component has predicates.
commit 76e0721abb9283c9127921850bee619f354701c9
Author: Arnaud Charlet <charlet@adacore.com>
Date: Sat Mar 7 10:05:11 2020 -0500
[Ada] Ada 202x AI12-0192 "requires late initialization"
2020-06-10 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* exp_ch3.adb (Build_Init_Statements): Implement the notion of
"require late initialization".
commit 5c0c89cb163ec78c3dd1ca7cdffe026c706bedd7
Author: Eric Botcazou <ebotcazou@adacore.com>
Date: Tue Mar 10 12:14:49 2020 +0100
[Ada] Add missing Sloc on new explicit dereferences
2020-06-10 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* sem_util.adb (Copy_And_Maybe_Dereference): Temporarily copy
the parent node of the original tree when dereferencing.
commit f95fb9d019147b2af0c8107d6c6a6e2b6034d9fe
Author: Ed Schonberg <schonberg@adacore.com>
Date: Mon Mar 9 16:36:55 2020 -0400
[Ada] Additional warnings on overlapping actuals of composite types
2020-06-10 Ed Schonberg <schonberg@adacore.com>
gcc/ada/
* sem_warn.adb (Warn_On_Overlapping_Actuals): Add a warning when
two actuals in a call overlap, both are composite types that may
be passed by reference, and only one of them is writable.
commit 67a44a4c109e6b2e684e96c346ec0f0fc1f56591
Author: Eric Botcazou <ebotcazou@adacore.com>
Date: Tue Mar 10 09:09:25 2020 +0100
[Ada] Implement AI12-0162 Memberships and Unchecked_Unions
2020-06-10 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* exp_ch4.adb (Expand_N_In): Use an expression with actions to
insert the PE raise statement for the Unchecked_Union case.
commit e156631a27d599f118ef2d384c6974172cd0c74d
Author: Eric Botcazou <ebotcazou@adacore.com>
Date: Mon Mar 9 10:14:53 2020 +0100
[Ada] Remove obsolete code in Resolve_Call
2020-06-10 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* sem_ch4.adb (Analyze_Call): Use idiomatic condition.
* sem_res.adb (Resolve_Call): Remove obsolete code.
commit 2378f3eb81a5a7d4a31cd36ea99d9202eb21f0ef
Author: Eric Botcazou <ebotcazou@adacore.com>
Date: Sun Mar 8 19:25:51 2020 +0100
[Ada] Insert explicit dereferences when building actual subtype
2020-06-10 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* sem_util.adb (Copy_And_Maybe_Dereference): New function.
(Build_Access_Record_Constraint): Use it to copy the prefix.
(Build_Actual_Array_Constraint): Likewise.
(Build_Actual_Record_Constraint): Likewise.
commit b9daf13c9350cc02c120971a472092d474d63e8f
Author: Bob Duff <duff@adacore.com>
Date: Sun Mar 8 17:50:49 2020 -0400
[Ada] Disable unwanted warnings in Assertion_Policy(Ignore) mode
2020-06-10 Bob Duff <duff@adacore.com>
gcc/ada/
* sem_prag.adb (Invariant): Remove the pragma removing code. It
doesn't work to remove the pragma, because various flags are set
during Build_Invariant_Procedure_Declaration and
Build_Invariant_Procedure_Body that need to be set to avoid the
spurious warnings.
* exp_util.adb (Make_Invariant_Call): Avoid calling the
invariant-checking procedure if the body is empty. This is an
optimization.
commit 9c62140e826a5cda62b49ad7712e7bc297ab77f6
Author: Vasiliy Fofanov <fofanov@adacore.com>
Date: Mon Mar 9 11:22:17 2020 +0100
[Ada] Fix gnatmetric switches description
2020-06-10 Vasiliy Fofanov <fofanov@adacore.com>
gcc/ada/
* doc/gnat_ugn/gnat_utility_programs.rst: Fix gnatmetric
switches description.
commit 536c271ca7d5707fdedb85e1f999379f1f4e896f
Author: Arnaud Charlet <charlet@adacore.com>
Date: Sat Mar 7 15:20:04 2020 -0500
[Ada] Update headers
2020-06-10 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* repinfo-input.ads, repinfo-input.adb, repinfo.adb,
repinfo.ads: Update header.
commit e67df677b4d7672f0e3d1055ec0443fafb3e9aee
Author: Eric Botcazou <ebotcazou@adacore.com>
Date: Fri Mar 6 21:58:39 2020 +0100
[Ada] Improve code generated for dynamic discriminated aggregate
2020-06-10 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* exp_aggr.adb (In_Place_Assign_OK): Do not necessarily return
false for a type with discriminants.
(Convert_To_Assignments): Use Parent_Node and Parent_Kind more
consistently. In the in-place assignment case, first apply a
discriminant check if need be, and be prepared for a rewritten
aggregate as a result.
commit 3aeb5ebe953a78223ef7ac9abee9b7adb709b29f
Author: Arnaud Charlet <charlet@adacore.com>
Date: Fri Mar 6 05:33:41 2020 -0500
[Ada] Remove more references to ASIS
2020-06-10 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* atree.adb, contracts.adb, debug.adb, freeze.adb,
repinfo-input.adb, repinfo.adb, sem_attr.adb, sem_ch10.adb,
sem_ch13.adb, sem_ch3.adb, sem_ch5.adb, sem_ch6.adb,
sem_ch8.adb, sem_ch9.adb, sem_disp.adb, sem_eval.adb,
sem_prag.adb: Remove more references to ASIS.
commit a53b03b5a7b2cdb00aed0618117f6b855eb3891a
Author: Arnaud Charlet <charlet@adacore.com>
Date: Fri Mar 6 06:13:36 2020 -0500
[Ada] Fix typo in exception message
2020-06-10 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* libgnat/s-secsta.adb (Round_Up): Fix typo in exception
message.
commit 9c4b4975bb425c86c56b3aa791890ed9edabe0f6
Author: Piotr Trojanek <trojanek@adacore.com>
Date: Fri Mar 6 10:32:15 2020 +0100
[Ada] Fix minor typo in comment of membership choice parsing
2020-06-10 Piotr Trojanek <trojanek@adacore.com>
gcc/ada/
* par-ch4.adb (P_Membership_Test): Fix typo in a grammar rule.
commit 8ecc34842c6884a508aaf56328ee76576c348cf7
Author: Piotr Trojanek <trojanek@adacore.com>
Date: Thu Mar 5 11:57:50 2020 +0100
[Ada] Revert workaround for expansion of Enum_Rep in GNATprove mode
2020-06-10 Piotr Trojanek <trojanek@adacore.com>
gcc/ada/
* exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Remove
expansion of First and Last attributes.
commit c64ac479d37f32198f75eee496d32c175fc4260b
Author: Piotr Trojanek <trojanek@adacore.com>
Date: Thu Mar 5 11:46:59 2020 +0100
[Ada] Fold Enum_Rep attribute in evaluation and not in expansion
2020-06-10 Piotr Trojanek <trojanek@adacore.com>
gcc/ada/
* exp_attr.adb (Expand_N_Attribute_Reference): Remove folding
for Enum_Rep attribute.
* exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Remove
duplicated code for folding Enum_Rep attribute.
* sem_attr.adb (Eval_Attribute): Relax condition for folding
Enum_Rep attribute; previously dead code is now executed when
the attribute prefix is an enumeration literal; refine type in
processing of Enum_Val.
commit 4322f3d99b7e5875de59c04939c4a4def1ffde5c
Author: Javier Miranda <miranda@adacore.com>
Date: Tue Mar 3 14:27:18 2020 -0500
[Ada] Classwide controlled obj not dispatching
2020-06-10 Javier Miranda <miranda@adacore.com>
gcc/ada/
* sem_ch3.adb (Analyze_Declarations): Adjust the machinery that
takes care of late body overriding of initialize, adjust,
finalize. Remove ASIS mode code.
commit dc419b9f8d6f998186706aa1afa50db1ca7efae5
Author: Ed Schonberg <schonberg@adacore.com>
Date: Mon Mar 2 14:58:59 2020 -0500
[Ada] Ada_2020 AI12-0220: Pre/Postconditions on Access_To_Subprogram types
2020-06-10 Ed Schonberg <schonberg@adacore.com>
gcc/ada/
* einfo.ads (Access_Subprogram_Wrapper): New attribute of
Subprogram_Type entities. Denotes subprogram constructed for
Access_To_Subprogram types that include pre- and postconditions.
* einfo.adb: Subprogram bodies for Access_Subprogram_Wrapper.
* exp_ch6.adb (Expand_Call): An indirect call through an
Access_To_subprogram that includes contracts is rewritten as a
call to the corresponding Access_ ubprogram_Wrapper. Handle
derived types that inherit contract from parent.
* sem_prag.adb (Build_Access_Subprogram_Wrapper): Build
subprogram declaration for subprogram that incorporates the
contracts of an Access_To_Subprogram type declaration. Build
corresponding body and attach it to freeze actions for type.
* sem_util.ads, sem_util.adb (Is_Access_Subprogram_Wrapper):
Utility that uses signature of the subprogram to determine
whether it is a generated wrapper for an Access_To_Subprogram
type.
commit 057548bc5f3a067f881cd6985419956b0f2696fc
Author: Ghjuvan Lacambre <lacambre@adacore.com>
Date: Wed Mar 4 14:40:01 2020 +0100
[Ada] Fix assertion failure on functions with contracts
2020-06-10 Ghjuvan Lacambre <lacambre@adacore.com>
gcc/ada/
* par-ch6.adb (P_Subprogram): Make sure the specification
belongs to a procedure.
commit 3ea95664954775a1a85c9ea097877754984807aa
Author: Piotr Trojanek <trojanek@adacore.com>
Date: Thu Feb 20 12:10:53 2020 +0100
[Ada] Simplify detection of static membership choices
2020-06-10 Piotr Trojanek <trojanek@adacore.com>
gcc/ada/
* sem_ch13.adb (All_Membership_Choices_Static): Assert an AST
property documented in sinfo.ads and simplify an excessive
condition.
commit 414e7520e608aaef1cac17bfeddd13af893ef81c
Author: Piotr Trojanek <trojanek@adacore.com>
Date: Wed Mar 4 13:28:14 2020 +0100
[Ada] Minor fix style and typos in comments
2020-06-10 Piotr Trojanek <trojanek@adacore.com>
gcc/ada/
* exp_attr.adb (Expand_N_Attribute_Reference): Fix a copy-paste
mistake in comment.
* sem_res.adb (Flag_Effectively_Volatile_Objects): Fix a type in
the SPARK RM rule number.
* exp_ch4.adb, sem_util.adb: Fix style in single line comments.
commit bbfd4f21c04a7e41c68e1841fcbd97853a94eb40
Author: Piotr Trojanek <trojanek@adacore.com>
Date: Thu Feb 27 17:48:42 2020 +0100
[Ada] Remove unreferenced GNATprove utility routine Get_Low_Bound
2020-06-10 Piotr Trojanek <trojanek@adacore.com>
gcc/ada/
* sem_aux.ads, sem_aux.adb (Get_Low_Bound): Remove.
commit 640ef7149ec24b61b0a1dcb642d59cb29c7e9983
Author: Arnaud Charlet <charlet@adacore.com>
Date: Tue Mar 3 11:48:54 2020 -0500
[Ada] Remove Determine_License
2020-06-10 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* scn.adb (Determine_License): Remove.
commit 948590aa2838a8b77dc8e48eb225312865303ce9
Author: Justin Squirek <squirek@adacore.com>
Date: Wed Mar 4 05:32:57 2020 -0500
[Ada] Incorrect accessibility checks on functions calls
2020-06-10 Justin Squirek <squirek@adacore.com>
gcc/ada/
* exp_ch3.adb (Expand_N_Object_Declaration): Add condition to
handle processing of objects initialized by a call to a function
return an anonymous access type.
* exp_ch6.adb, exp_ch6.ads
(Has_Unconstrained_Access_Discriminants): Moved to sem_util.adb
(Needs_Result_Accessibility_Level): Moved to sem_util.adb
* sem_util.adb, sem_util.ads
(Has_Unconstrained_Access_Discriminants): Moved from exp_ch6.adb
(Needs_Result_Accessibility_Level): Moved from exp_ch6.adb
* sem_res.adb (Valid_Conversion): Add condition for the special
case where the operand of a conversion is the result of an
anonymous access type
commit 71c4a2b35600a1177542b293cf075d6cf6d4dae4
Author: Ghjuvan Lacambre <lacambre@adacore.com>
Date: Mon Mar 2 12:41:52 2020 +0100
[Ada] Reject illegal bodies for null procedures
2020-06-10 Ghjuvan Lacambre <lacambre@adacore.com>
gcc/ada/
* par-ch6.adb (P_Subprogram): Reject duplicate subprogram
declarations.
commit 895cf059f064bb0c86c333f9bd05fc95fa9e8d56
Author: Eric Botcazou <ebotcazou@adacore.com>
Date: Wed Mar 4 09:32:03 2020 +0100
[Ada] Fix incorrect insertion of post-call actions in if-expression
2020-06-10 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* exp_ch6.adb (Insert_Post_Call_Actions): Deal with the context
of an if-expression and with a call written in prefixed notation.
commit c392a001491bd8603556bd922d073a96b6df8724
Author: Gary Dismukes <dismukes@adacore.com>
Date: Mon Mar 2 19:13:33 2020 -0500
[Ada] Minor reformatting and some typo fixes
2020-06-10 Gary Dismukes <dismukes@adacore.com>
gcc/ada/
* einfo.ads: Minor reformatting of a comment.
* exp_aggr.adb: Minor reformatting and a grammar correction.
* exp_attr.adb: Minor reformatting and a typo fix in some
comments.
* sem_ch12.adb: Fix three typos in comments.
commit f25161bdcc2b098a4678a42bb2c581ac47625b17
Author: Richard Biener <rguenther@suse.de>
Date: Wed Jun 10 13:47:12 2020 +0200
Make {SLP_TREE,STMT_VINFO}_VEC_STMTS a vector of gimple *
This makes {SLP_TREE,STMT_VINFO}_VEC_STMTS a vector of gimple * and
not allocate a stmt_vec_info for vectorizer generated stmts since
this is now possible after removing the only use which was chaining
of vector stmts via STMT_VINFO_RELATED_STMT.
This also removes all stmt_vec_info allocations done for vector
stmts, the remaining ones are for stmts in the scalar IL and for
patterns which are not part of the IL. Thus after this the stmt
UIDs inside a basic-block are suitable for dominance checking
if you ignore (or lazy-fill) UIDs of zero of the vector stmts
inserted during transform. This property is ensured by a new
flag set when pattern analysis is complete.
2020-06-10 Richard Biener <rguenther@suse.de>
* tree-vectorizer.h (_slp_tree::vec_stmts): Make it a vector
of gimple * stmts.
(_stmt_vec_info::vec_stmts): Likewise.
(vec_info::stmt_vec_info_ro): New flag.
(vect_finish_replace_stmt): Adjust declaration.
(vect_finish_stmt_generation): Likewise.
(vectorizable_induction): Likewise.
(vect_transform_reduction): Likewise.
(vectorizable_lc_phi): Likewise.
* tree-vect-data-refs.c (vect_create_data_ref_ptr): Do not
allocate stmt infos for increments.
(vect_record_grouped_load_vectors): Adjust.
* tree-vect-loop.c (vect_create_epilog_for_reduction): Likewise.
(vectorize_fold_left_reduction): Likewise.
(vect_transform_reduction): Likewise.
(vect_transform_cycle_phi): Likewise.
(vectorizable_lc_phi): Likewise.
(vectorizable_induction): Likewise.
(vectorizable_live_operation): Likewise.
(vect_transform_loop): Likewise.
* tree-vect-patterns.c (vect_pattern_recog): Set stmt_vec_info_ro.
* tree-vect-slp.c (vect_get_slp_vect_def): Adjust.
(vect_get_slp_defs): Likewise.
(vect_transform_slp_perm_load): Likewise.
(vect_schedule_slp_instance): Likewise.
(vectorize_slp_instance_root_stmt): Likewise.
* tree-vect-stmts.c (vect_get_vec_defs_for_operand): Likewise.
(vect_finish_stmt_generation_1): Do not allocate a stmt info.
(vect_finish_replace_stmt): Do not return anything.
(vect_finish_stmt_generation): Likewise.
(vect_build_gather_load_calls): Adjust.
(vectorizable_bswap): Likewise.
(vectorizable_call): Likewise.
(vectorizable_simd_clone_call): Likewise.
(vect_create_vectorized_demotion_stmts): Likewise.
(vectorizable_conversion): Likewise.
(vectorizable_assignment): Likewise.
(vectorizable_shift): Likewise.
(vectorizable_operation): Likewise.
(vectorizable_scan_store): Likewise.
(vectorizable_store): Likewise.
(vectorizable_load): Likewise.
(vectorizable_condition): Likewise.
(vectorizable_comparison): Likewise.
(vect_transform_stmt): Likewise.
* tree-vectorizer.c (vec_info::vec_info): Initialize
stmt_vec_info_ro.
(vec_info::replace_stmt): Copy over stmt UID rather than
unsetting/setting a stmt info allocating a new UID.
(vec_info::set_vinfo_for_stmt): Assert !stmt_vec_info_ro.
commit 1396fa5b91cfa0b3708ec9df33c0bb84386081d6
Author: Aldy Hernandez <aldyh@redhat.com>
Date: Tue May 5 13:45:39 2020 +0200
Merge evrp uses of substitute_and_fold_engine into the engine itself.
This patch merges the evrp uses of the substitute and fold engine into
the engine itself, at least the parts that can be re-used by other
engine uses. It also adds a context parameter to get_value() for
further use.
gcc/
* gimple-loop-versioning.cc (loop_versioning::name_prop::get_value):
Add stmt parameter.
* gimple-ssa-evrp.c (class evrp_folder): New.
(class evrp_dom_walker): Remove.
(execute_early_vrp): Use evrp_folder instead of evrp_dom_walker.
* tree-ssa-ccp.c (ccp_folder::get_value): Add stmt parameter.
* tree-ssa-copy.c (copy_folder::get_value): Same.
* tree-ssa-propagate.c (substitute_and_fold_engine::replace_uses_in):
Pass stmt to get_value.
(substitute_and_fold_engine::replace_phi_args_in): Same.
(substitute_and_fold_dom_walker::after_dom_children): Call
post_fold_bb.
(substitute_and_fold_dom_walker::foreach_new_stmt_in_bb): New.
(substitute_and_fold_dom_walker::propagate_into_phi_args): New.
(substitute_and_fold_dom_walker::before_dom_children): Adjust to
call virtual functions for folding, pre_folding, and post folding.
Call get_value with PHI. Tweak dump.
* tree-ssa-propagate.h (class substitute_and_fold_engine):
New argument to get_value.
New virtual function pre_fold_bb.
New virtual function post_fold_bb.
New virtual function pre_fold_stmt.
New virtual function post_new_stmt.
New function propagate_into_phi_args.
* tree-vrp.c (vrp_folder::get_value): Add stmt argument.
* vr-values.c (vr_values::extract_range_from_stmt): Adjust dump
output.
(vr_values::fold_cond): New.
(vr_values::simplify_cond_using_ranges_1): Call fold_cond.
* vr-values.h (class vr_values): Add
simplify_cond_using_ranges_when_edge_is_known.
gcc/testsuite/
* gcc.dg/tree-ssa/ssa-dse-30.c: Adjust test for folding of
memmove happening later.
commit 8b6731e674c76cb48a417f2eef74ced92a17f469
Author: Martin Liska <mliska@suse.cz>
Date: Tue May 19 16:57:56 2020 +0200
Add missing store in emission of asan_stack_free.
gcc/ChangeLog:
2020-05-19 Martin Liska <mliska@suse.cz>
PR sanitizer/94910
* asan.c (asan_emit_stack_protection): Emit
also **SavedFlagPtr(FakeStack, class_id) = 0 in order to release
a stack frame.
commit df81764ba1a276d9b48f408bd2dd1e71e09e7863
Author: Tamar Christina <tamar.christina@arm.com>
Date: Wed Jun 10 11:55:46 2020 +0100
AArch64: Adjust costing of by element MUL to be the same as SAME3 MUL.
The cost model is currently treating multiplication by element as being more
expensive than 3 same multiplication. This means that if the value is on the
SIMD side we add an unneeded DUP. If the value is on the genreg side we use the
more expensive DUP instead of fmov.
This patch corrects the costs such that the two multiplies are costed the same
which allows us to generate
fmul v3.4s, v3.4s, v0.s[0]
instead of
dup v0.4s, v0.s[0]
fmul v3.4s, v3.4s, v0.4s
gcc/ChangeLog:
* config/aarch64/aarch64.c (aarch64_rtx_mult_cost): Adjust costs for mul.
gcc/testsuite/ChangeLog:
* gcc.target/aarch64/asimd-mull-elem.c: New test.
commit b05d5563f4be13b4a0d0951375a82adf483973c0
Author: Richard Biener <rguenther@suse.de>
Date: Tue Jun 9 16:07:45 2020 +0200
Introduce STMT_VINFO_VEC_STMTS
This gets rid of the linked list of STMT_VINFO_VECT_STMT and
STMT_VINFO_RELATED_STMT in preparation for vectorized stmts no
longer needing a stmt_vec_info (just for this chaining). This
has ripple-down effects in all places we gather vectorized
defs. For this new interfaces are introduced and used
throughout vectorization, simplifying code in a lot of places
and merging it with the SLP way of gathering vectorized
operands. There is vect_get_vec_defs as the new recommended
unified interface and vect_get_vec_defs_for_operand as one
for non-SLP operation. I've resorted to keep the structure
of the code the same where using vect_get_vec_defs would have
been too disruptive for this already large patch.
2020-06-10 Richard Biener <rguenther@suse.de>
* tree-vect-data-refs.c (vect_vfa_access_size): Adjust.
(vect_record_grouped_load_vectors): Likewise.
* tree-vect-loop.c (vect_create_epilog_for_reduction): Likewise.
(vectorize_fold_left_reduction): Likewise.
(vect_transform_reduction): Likewise.
(vect_transform_cycle_phi): Likewise.
(vectorizable_lc_phi): Likewise.
(vectorizable_induction): Likewise.
(vectorizable_live_operation): Likewise.
(vect_transform_loop): Likewise.
* tree-vect-slp.c (vect_get_slp_defs): New function, split out
from overload.
* tree-vect-stmts.c (vect_get_vec_def_for_operand_1): Remove.
(vect_get_vec_def_for_operand): Likewise.
(vect_get_vec_def_for_stmt_copy): Likewise.
(vect_get_vec_defs_for_stmt_copy): Likewise.
(vect_get_vec_defs_for_operand): New function.
(vect_get_vec_defs): Likewise.
(vect_build_gather_load_calls): Adjust.
(vect_get_gather_scatter_ops): Likewise.
(vectorizable_bswap): Likewise.
(vectorizable_call): Likewise.
(vectorizable_simd_clone_call): Likewise.
(vect_get_loop_based_defs): Remove.
(vect_create_vectorized_demotion_stmts): Adjust.
(vectorizable_conversion): Likewise.
(vectorizable_assignment): Likewise.
(vectorizable_shift): Likewise.
(vectorizable_operation): Likewise.
(vectorizable_scan_store): Likewise.
(vectorizable_store): Likewise.
(vectorizable_load): Likewise.
(vectorizable_condition): Likewise.
(vectorizable_comparison): Likewise.
(vect_transform_stmt): Adjust and remove no longer applicable
sanity checks.
* tree-vectorizer.c (vec_info::new_stmt_vec_info): Initialize
STMT_VINFO_VEC_STMTS.
(vec_info::free_stmt_vec_info): Relase it.
* tree-vectorizer.h (_stmt_vec_info::vectorized_stmt): Remove.
(_stmt_vec_info::vec_stmts): Add.
(STMT_VINFO_VEC_STMT): Remove.
(STMT_VINFO_VEC_STMTS): New.
(vect_get_vec_def_for_operand_1): Remove.
(vect_get_vec_def_for_operand): Likewise.
(vect_get_vec_defs_for_stmt_copy): Likewise.
(vect_get_vec_def_for_stmt_copy): Likewise.
(vect_get_vec_defs): New overloads.
(vect_get_vec_defs_for_operand): New.
(vect_get_slp_defs): Declare.
commit 6d9ef0621f8e1aaafd458dba1a8b5476e655b479
Author: Qian Chao <qianchao9@huawei.com>
Date: Wed Jun 10 04:46:56 2020 -0400
tmmark: verify_ssa failed [PR95569]
This patch fixes a latent bug exposed by eb72dc663e9070b281be83a80f6f838a3a878822.
See the discussion on the bug for details.
Bootstrapped and regtested on aarch64-linux-gnu. No new fails introduced.
2020-06-10 Qian Chao <qianchao9@huawei.com>
gcc/ChangeLog:
PR tree-optimization/95569
* trans-mem.c (expand_assign_tm): Ensure that rtmp is marked TREE_ADDRESSABLE.
gcc/testsuite/ChangeLog:
PR tree-optimization/95569
* gcc.dg/tm/pr95569.c: New test.
commit dc6d15eaa23cbae1468a6ef92371b1c856c14819
Author: Martin Liska <mliska@suse.cz>
Date: Tue Dec 10 19:41:08 2019 +0100
Add gcc_assert that &global_options are not dirty modified.
gcc/ChangeLog:
2020-03-20 Martin Liska <mliska@suse.cz>
PR tree-optimization/92860
* optc-save-gen.awk: Generate new function cl_optimization_compare.
* opth-gen.awk: Generate declaration of the function.
gcc/c-family/ChangeLog:
2020-03-20 Martin Liska <mliska@suse.cz>
PR tree-optimization/92860
* c-attribs.c (handle_optimize_attribute):
Save global options and compare it after parsing of function
attribute.
* c-pragma.c (opt_stack::saved_global_options): New field.
(handle_pragma_push_options): Save global_options.
(handle_pragma_pop_options): Compare them after pop.
commit 771e60dd073b4dc0663fa9282b854dafdd92242d
Author: Martin Liska <mliska@suse.cz>
Date: Wed Jun 10 09:57:51 2020 +0200
gcc-changelog: add more Review by prefixes.
contrib/ChangeLog:
* gcc-changelog/git_commit.py: Add more supported prefixes.
* gcc-changelog/test_email.py: Fix one flake8 error.
* gcc-changelog/test_patches.txt: Add tested for newly
supported prefixes.
commit 1ea9a0b74e60e6cdca6372403d7bd564a5410d82
Author: Jonathan Wakely <jwakely@redhat.com>
Date: Wed Jun 10 09:36:34 2020 +0200
gcc-changelog: Improve git_commit.py diagnostics
This changes some error messages to be more self-consistent and to fix
some grammar.
contrib/ChangeLog:
* gcc-changelog/git_commit.py (GitCommit.parse_changelog):
Improve error strings.
* gcc-changelog/test_email.py: Update expected errors.
commit b952c2cfcd74c284970e1b9bf1fca58f5f69ab23
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date: Wed Jun 10 00:16:47 2020 +0000
Daily bump.
commit 733167f9d5ca5b9417559b7362d91e967be95a01
Author: Jonathan Wakely <jwakely@redhat.com>
Date: Tue Jun 9 22:16:24 2020 +0100
libstdc++: Define converting assignment operator for std::move_iterator
As clarified by LWG 3265, std::move_iterator is supposed to have an
assignment operator that converts from a different specialization of
std::move_iterator, which performs an assignment. That has always been
missing from libstdc++, so assigning a different type actually performs
a converting construction, then an assignment. This is non-conforming
for the (fairly contrived) case where the converting assignment is
well-formed but the converting construction is not.
* include/bits/stl_iterator.h (move_iterator::operator=): Define.
* testsuite/24_iterators/move_iterator/dr3265.cc: New test.
commit d3647057913d3671312a79a77be02fc459d89fb6
Author: Jonathan Wakely <jwakely@redhat.com>
Date: Tue Jun 9 22:13:37 2020 +0100
libstdc++: Define std::bad_optional_access constructor as defaulted
The standard requires that std::bad_optional_access' default
constructor has a non-throwing exception specification.
* include/std/optional (bad_optional_access): Define default
constructor and destructor as defaulted.
* testsuite/20_util/optional/bad_access.cc: New test.
commit d7274dbf82001ae52e5c9a514129b49152498d40
Author: Michael Meissner <meissner@linux.ibm.com>
Date: Tue Jun 9 15:35:43 2020 -0500
PowerPC: Add future hwcap2 bits
This patch adds support for the two new HWCAP2 fields used by the
__builtin_cpu_supports function. It adds support in the target_clones
attribute for -mcpu=future.
The two new __builtin_cpu_supports tests are:
__builtin_cpu_supports ("isa_3_1")
__builtin_cpu_supports ("mma")
The bits used are the bits that the Linux kernel engineers will be using for
these new features.
gcc/
2020-06-09 Michael Meissner <meissner@linux.ibm.com>
* config/rs6000/ppc-auxv.h (PPC_PLATFORM_FUTURE): Allocate
'future' PowerPC platform.
(PPC_FEATURE2_ARCH_3_1): New HWCAP2 bit for ISA 3.1.
(PPC_FEATURE2_MMA): New HWCAP2 bit for MMA.
* config/rs6000/rs6000-call.c (cpu_supports_info): Add ISA 3.1 and
MMA HWCAP2 bits.
* config/rs6000/rs6000.c (CLONE_ISA_3_1): New clone support.
(rs6000_clone_map): Add 'future' system target_clones support.
testsuite/
2020-06-09 Michael Meissner <meissner@linux.ibm.com>
* gcc.target/powerpc/clone3.c: New test for using 'future' with
the target_clones attribute.
commit 2753f2f8b4a4534ab364595ba4b8a913cc7254a7
Author: Michael Meissner <meissner@linux.ibm.com>
Date: Tue Jun 9 15:32:52 2020 -0500
PowerPC: Add future hwcap2 bits
This patch adds support for the two new HWCAP2 fields used by the
__builtin_cpu_supports function. It adds support in the target_clones
attribute for -mcpu=future.
The two new __builtin_cpu_supports tests are:
__builtin_cpu_supports ("isa_3_1")
__builtin_cpu_supports ("mma")
The bits used are the bits that the Linux kernel engineers will be using for
these new features.
testsuite/
2020-06-05 Michael Meissner <meissner@linux.ibm.com>
* gcc.target/powerpc/clone3.c: New test for using 'future' with
the target_clones attribute.
commit 7ba33e898fa4a097c0f2b4d9cae35041a5933f9c
Author: Michael Meissner <meissner@linux.ibm.com>
Date: Tue Jun 9 15:32:02 2020 -0500
PowerPC: Add future hwcap2 bits
This patch adds support for the two new HWCAP2 fields used by the
__builtin_cpu_supports function. It adds support in the target_clones
attribute for -mcpu=future.
The two new __builtin_cpu_supports tests are:
__builtin_cpu_supports ("isa_3_1")
__builtin_cpu_supports ("mma")
The bits used are the bits that the Linux kernel engineers will be using for
these new features.
gcc/
2020-06-05 Michael Meissner <meissner@linux.ibm.com>
* config/rs6000/ppc-auxv.h (PPC_PLATFORM_FUTURE): Allocate
'future' PowerPC platform.
(PPC_FEATURE2_ARCH_3_1): New HWCAP2 bit for ISA 3.1.
(PPC_FEATURE2_MMA): New HWCAP2 bit for MMA.
* config/rs6000/rs6000-call.c (cpu_supports_info): Add ISA 3.1 and
MMA HWCAP2 bits.
* config/rs6000/rs6000.c (CLONE_ISA_3_1): New clone support.
(rs6000_clone_map): Add 'future' system target_clones support.
commit 243e5bbfef7be74bfe22747c4e51136dd38c1245
Author: Michael Meissner <meissner@linux.ibm.com>
Date: Tue Jun 9 15:17:12 2020 -0500
PowerPC: Add pcrel/prefixed target supports.
2020-06-09 Michael Meissner <meissner@linux.ibm.com>
* lib/target-supports.exp (check_effective_target_powerpc_pcrel):
New.
(check_effective_target_powerpc_prefixed_addr): New.
commit 776256757b3d12830e5449c41f1dd6c13fdf2868
Author: Michael Kuhn <gcc@ikkoku.de>
Date: Tue Jun 9 14:05:07 2020 -0600
When specifying a non-system prefix with --with-zstd, the build fails because the header and library cannot be found (see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95005).
The attached patch fixes the problem and is what we use in Spack to
make GCC build with zstd support.
gcc/
* Makefile.in (ZSTD_INC): Define.
(ZSTD_LIB): Include ZSTD_LDFLAGS.
(CFLAGS-lto-compress.o): Add ZSTD_INC.
* configure.ac (ZSTD_CPPFLAGS, ZSTD_LDFLAGS): New variables for
AC_SUBST.
* configure: Rebuilt.
commit 84fa38d20a65e6d0dd5707c275acdb5cad3ceb5a
Author: Martin Liska <mliska@suse.cz>
Date: Tue Jun 9 21:54:35 2020 +0200
asan: fix wrong options for a test-case.
gcc/testsuite/ChangeLog:
* c-c++-common/asan/inline-kernel.c: Add missing
-fno-sanitize-address option.
commit 006f28aefeb3be575239beddc7febe56dff463a2
Author: Iain Sandoe <iain@sandoe.co.uk>
Date: Tue Jun 9 19:17:14 2020 +0100
coroutines: Ensure distinct DTOR trees [PR95137].
Part of the PR notes that there are UBSAN fails for the coroutines
test suite. These are primarily related to the use of the same DTOR
tree in the two edges from the await block. Fixed by building a new
tree for each.
gcc/cp/ChangeLog:
PR c++/95137
* coroutines.cc (expand_one_await_expression): Build separate
DTOR trees for the awaitable object on the destroy and resume
paths.
commit 62963c60fc19d07615afe9d4f1b897b2f60801b2
Author: Jonathan Wakely <jwakely@redhat.com>
Date: Tue Jun 9 20:39:39 2020 +0100
gcc-changelog: Use non-zero exit status on error
Also add comment explaining what the script does.
contrib/ChangeLog:
* gcc-changelog/git_email.py: Set exit status on error.
commit 77103685ff4b50b3c4d7ee76688bdf452acc82c7
Author: Jason Merrill <jason@redhat.com>
Date: Fri Jun 5 16:36:27 2020 -0400
tree-inline: Fix VLA handling [PR95552]
The problem in this testcase comes from cloning the constructor into
complete and base variants. When we clone the body the first time,
walk_tree_1 calls copy_tree_body_r on the type of the artificial TYPE_DECL
we made for the VLA type without calling it on the decl itself, so we
overwrite the type of the TYPE_DECL without copying the decl first.
This has been broken since we started inserting a TYPE_DECL for anonymous
VLAs in r7-457.
This patch fixes walk_tree_1 to call the function on the TYPE_DECL, as we do
for other decls of a DECL_EXPR.
gcc/ChangeLog:
PR c++/95552
* tree.c (walk_tree_1): Call func on the TYPE_DECL of a DECL_EXPR.
gcc/testsuite/ChangeLog:
PR c++/95552
* g++.dg/ext/vla23.C: New test.
commit ab2789ec507a94f1a75a6534bca51c7b39037ce0
Author: Marco Elver <elver@google.com>
Date: Tue Jun 9 15:15:39 2020 +0200
tsan: Add optional support for distinguishing volatiles
Add support to optionally emit different instrumentation for accesses to
volatile variables. While the default TSAN runtime likely will never
require this feature, other runtimes for different environments that
have subtly different memory models or assumptions may require
distinguishing volatiles.
One such environment are OS kernels, where volatile is still used in
various places, and often declare volatile to be appropriate even in
multi-threaded contexts. One such example is the Linux kernel, which
implements various synchronization primitives using volatile
(READ_ONCE(), WRITE_ONCE()).
Here the Kernel Concurrency Sanitizer (KCSAN), is a runtime that uses
TSAN instrumentation but otherwise implements a very different approach
to race detection from TSAN:
https://github.com/google/ktsan/wiki/KCSAN
Due to recent changes in requirements by the Linux kernel, KCSAN
requires that the compiler supports tsan-distinguish-volatile (among
several new requirements):
https://lore.kernel.org/lkml/20200521142047.169334-7-elver@google.com/
gcc/
* params.opt: Define --param=tsan-distinguish-volatile=[0,1].
* sanitizer.def (BUILT_IN_TSAN_VOLATILE_READ1): Define new
builtin for volatile instrumentation of reads/writes.
(BUILT_IN_TSAN_VOLATILE_READ2): Likewise.
(BUILT_IN_TSAN_VOLATILE_READ4): Likewise.
(BUILT_IN_TSAN_VOLATILE_READ8): Likewise.
(BUILT_IN_TSAN_VOLATILE_READ16): Likewise.
(BUILT_IN_TSAN_VOLATILE_WRITE1): Likewise.
(BUILT_IN_TSAN_VOLATILE_WRITE2): Likewise.
(BUILT_IN_TSAN_VOLATILE_WRITE4): Likewise.
(BUILT_IN_TSAN_VOLATILE_WRITE8): Likewise.
(BUILT_IN_TSAN_VOLATILE_WRITE16): Likewise.
* tsan.c (get_memory_access_decl): Argument if access is
volatile. If param tsan-distinguish-volatile is non-zero, and
access if volatile, return volatile instrumentation decl.
(instrument_expr): Check if access is volatile.
gcc/testsuite/
* c-c++-common/tsan/volatile.c: New test.
commit 6e52b2297ecce1243c00d76b3f079b71016b8ffa
Author: Michael Meissner <meissner@linux.ibm.com>
Date: Tue Jun 9 14:48:24 2020 -0400
PowerPC: PowerPC tests: Add prefixed/pcrel tests.
testsuite/
2020-06-09 Michael Meissner <meissner@linux.ibm.com>
* lib/target-supports.exp (check_effective_target_powerpc_pcrel):
New.
(check_effective_target_powerpc_prefixed_addr): New.
commit ec34277611416aacdfdf3b8469b8e6ed43f623e6
Author: Richard Biener <rguenther@suse.de>
Date: Tue Jun 9 18:23:22 2020 +0200
Remove dead code
This removes dead code left over from the reduction vectorization
refactoring last year.
2020-06-09 Richard Biener <rguenther@suse.de>
* tree-vect-loop.c (vectorizable_induction): Remove dead code.
commit 98866120092edfd7d5a7ae008db960dae8ab1523
Author: Iain Buclaw <ibuclaw@gdcproject.org>
Date: Tue Jun 9 18:56:52 2020 +0200
d: Merge upstream dmd 13d67c575.
Reviewed-on: https://github.com/dlang/dmd/pull/11224
gcc/d/ChangeLog:
* dmd/MERGE: Merge upstream dmd 13d67c575.
* d-builtins.cc (build_frontend_type): Update call to
TypeVector::create.
* d-frontend.cc (Global::_init): Move setting of errorLimit to ...
* d-lang.cc (d_init_options): ... here. Update for new field
location of errorLimit.
(d_post_options): Likewise.
* d-port.cc (Port::readwordLE): Update signature.
(Port::readwordBE): Likewise.
(Port::readlongLE): Likewise.
(Port::readlongBE): Likewise.
* decl.cc (get_symbol_decl): Update for new field types.
commit ef41587df9839d1dfc77dbc48a0830e42b36626e
Author: Jason Merrill <jason@redhat.com>
Date: Sat Jun 6 00:07:21 2020 -0400
c++: Tweak predeclare_vla.
We only need to predeclare a VLA type if it's wrapped in a pointer type;
otherwise gimplify_type_sizes will handle it.
gcc/cp/ChangeLog:
PR c++/95552
* cp-gimplify.c (predeclare_vla): Only predeclare a VLA if it's
wrapped in a pointer type.
commit bf4ab2689bb586971d5b2ab6b13d078cd7ac45af
Author: Tobias Burnus <tobias@codesourcery.com>
Date: Tue Jun 9 16:31:22 2020 +0200
openmp: ensure variables in offload table are streamed out (PRs 94848 + 95551)
gcc/ChangeLog:
* omp-offload.c (add_decls_addresses_to_decl_constructor,
omp_finish_file): With in_lto_p, stream out all offload-table
items even if the symtab_node does not exist.
commit ac22e651efe0da924925ac33a31e5c8d73e11fef
Author: Richard Biener <rguenther@suse.de>
Date: Tue Jun 9 16:00:43 2020 +0200
Remove dead code
This removes dead code that was left over from the reduction
vectorization refactoring last year.
2020-06-09 Richard Biener <rguenther@suse.de>
* tree-vect-stmts.c (vect_transform_stmt): Remove dead code.
commit e12516e140a4e6aa75d886b165d959991e3350c3
Author: Patrick Palka <ppalka@redhat.com>
Date: Tue Jun 9 09:57:25 2020 -0400
Fix some ChangeLog entries
commit f6ee4c4fe7e288e852466ac61436048d43e11b7f
Author: Martin Liska <mliska@suse.cz>
Date: Tue Jun 9 14:39:26 2020 +0200
gcov-dump: fix --help spacing
Pushed to master.
gcc/ChangeLog:
* gcov-dump.c (print_usage): Fix spacing for --raw option
in --help.
commit 4089df8ef4a63126b0774c39b6638845244c20d2
Author: Martin Liska <mliska@suse.cz>
Date: Tue Jun 9 13:03:55 2020 +0200
sanitizer: do not inline no-sanitize into sanitizer fn
gcc/ChangeLog:
* cif-code.def (ATTRIBUTE_MISMATCH): Rename to...
(SANITIZE_ATTRIBUTE_MISMATCH): ...this.
* ipa-inline.c (sanitize_attrs_match_for_inline_p):
Handle all sanitizer options.
(can_inline_edge_p): Use renamed CIF_* enum value.
gcc/testsuite/ChangeLog:
* c-c++-common/asan/inline.c: New test.
* c-c++-common/asan/inline-kernel.c: New test.
* c-c++-common/tsan/inline.c: New test.
* c-c++-common/ubsan/inline.c: New test.
commit bb3ab62a8b4a108f01ea2eddfe31e9f733bd9cb6
Author: Joe Ramsay <joe.ramsay@arm.com>
Date: Tue Jun 9 12:23:56 2020 +0100
AArch64+SVE: Add support for unpacked unary ops and BIC
MD patterns extended for unary ops ABS, CLS, CLZ, CNT, NEG and NOT
to support unpacked vectors. Also extended patterns for BIC to
support unpacked vectors where input elements are of the same width.
gcc/ChangeLog:
2020-06-09 Joe Ramsay <joe.ramsay@arm.com>
* config/aarch64/aarch64-sve.md (<optab><mode>2): Add support for
unpacked vectors.
(@aarch64_pred_<optab><mode>): Add support for unpacked vectors.
(@aarch64_bic<mode>): Enable unpacked BIC.
(*bic<mode>3): Enable unpacked BIC.
gcc/testsuite/ChangeLog:
2020-06-09 Joe Ramsay <joe.ramsay@arm.com>
* gcc.target/aarch64/sve/logical_unpacked_abs.c: New test.
* gcc.target/aarch64/sve/logical_unpacked_bic_1.c: New test.
* gcc.target/aarch64/sve/logical_unpacked_bic_2.c: New test.
* gcc.target/aarch64/sve/logical_unpacked_bic_3.c: New test.
* gcc.target/aarch64/sve/logical_unpacked_bic_4.c: New test.
* gcc.target/aarch64/sve/logical_unpacked_neg.c: New test.
* gcc.target/aarch64/sve/logical_unpacked_not.c: New test.
commit 452283bd060eb9bae41199b4b5e7266155d40e12
Author: Martin Liska <mliska@suse.cz>
Date: Tue Jun 9 13:14:57 2020 +0200
gcov: improve --coverage small example
Pushed to master.
gcc/ChangeLog:
PR gcov-profile/95365
* doc/gcov.texi: Compile and link one example in 2 steps.
commit 862b9b225fba6cf3c63234206f2dbc47f1ab5350
Author: Martin Liska <mliska@suse.cz>
Date: Mon Jun 8 20:07:08 2020 +0200
libgcov: fix TOPN type casting
The patch fixes tree-prof.exp tests on solaris11 and i686-linux-gnu,
problem was that sizeof of a pointer is different from sizeof gcov_type.
I'm going to install it if there are no objections.
Thanks,
Martin
libgcc/ChangeLog:
PR gcov-profile/95494
* libgcov-driver.c (write_top_counters): Cast first to
intptr_t as sizeof(*) != sizeof(gcov_type).
* libgcov.h (gcov_counter_set_if_null): Remove.
(gcov_topn_add_value): Cast first to intptr_t and update
linked list directly.
commit 009668e31f4ee910eae874b24afb8eb6adf65fae
Author: Javier Miranda <miranda@adacore.com>
Date: Sun Mar 1 14:04:48 2020 -0500
[Ada] Missing check on private overriding of dispatching primitive
2020-06-09 Javier Miranda <miranda@adacore.com>
gcc/ada/
* sem_ch6.adb (New_Overloaded_Entity): Add missing call to check
subtype conformance of overriding dispatching primitive.
* sem_eval.adb (Subtypes_Statically_Match): Handle derivations
of private subtypes.
* libgnat/g-exptty.adb, libgnat/g-exptty.ads
(Set_Up_Communications): Fix the profile since null-exclusion is
missing in the access type formals.
* sem_disp.ads (Check_Operation_From_Private_View): Adding
documentation.
commit a2048d055bfe230b7074c492245ac041f739e471
Author: Eric Botcazou <ebotcazou@adacore.com>
Date: Tue Mar 3 16:13:20 2020 +0100
[Ada] Small enhancement in XEinfo utility
2020-06-09 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* einfo.ads (XEINFO section): Update format description.
(Is_Subprogram_Or_Entry): Move pragma to regular section.
(Is_Subprogram_Or_Generic_Subprogram): Likewise.
* xeinfo.adb (Get_B4): Rename to...
(Get_B0): ...this.
(Translate_Expr): New procedure extracted from...
(XEinfo): ...here. Try to apply Get_B0 first and then
call Translate_Expr to translate supported constructs.
commit fd66407104b2133f0e55deb84db787c692a21948
Author: Eric Botcazou <ebotcazou@adacore.com>
Date: Tue Mar 3 12:44:18 2020 +0100
[Ada] Implement AI12-0028: Import of variadic C functions
2020-06-09 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* exp_ch6.adb (Freeze_Subprogram): Deal with convention C_Family.
* freeze.adb (Freeze_Profile): Likewise. Add missing guard.
* sem_mech.adb (Set_Mechanisms): Likewise.
* lib-xref.adb (Output_Import_Export_Info): Ditto for C_Variadic.
* repinfo.adb (List_Subprogram_Info): Likewise.
* sem_prag.adb (Set_Convention_From_Pragma): Move main checks for
Stdcall to...
(Process_Convention): ...here. Add checks for C_Variadic.
* snames.ads-tmpl: Add Name_C_Variadic_0 .. Name_C_Variadic_16.
Use consistent format for subtype declarations.
(Convention_Id): Add Convention_C_Variadic_0 .. C_Variadic_16
and move Convention_CPP up.
(Convention_C_Family): New subtype of Convention_Id.
(Convention_C_Variadic): Likewise.
(Foreign_Convention): Use explicit upper bound.
Add pragma Inline for Is_Configuration_Pragma_Name,
Is_Function_Attribute_Name, Is_Internal_Attribute_Name
and Is_Procedure_Attribute_Name.
* snames.adb-tmpl (Get_Convention_Id): Deal with Name_Variadic_n.
(Get_Convention_Name): Deal with Convention_Variadic_n.
* types.h (Convention_Id): New typedef.
* xsnamest.adb (Name2): New variable.
(Is_Conv): New pattern.
(Get_Subt1): Likewise.
(Get_Subt2): Likewise.
Output subtypes of Convention_Id into the C header file.
commit 2d6f6e08e69209d3df5b49b738c08ce3e921bf44
Author: Arnaud Charlet <charlet@adacore.com>
Date: Tue Mar 3 11:51:49 2020 -0500
[Ada] Code clean ups and comments updates
2020-06-09 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* exp_ch3.adb, exp_ch4.adb, exp_ch6.adb, exp_ch9.adb,
exp_disp.adb, exp_util.adb: Add comments related to errors that
should be moved to semantic analysis. Also replace "?" with "??"
in warning messages.
commit 3e6711046ae71601a40636e768c8d9d7def57add
Author: Arnaud Charlet <charlet@adacore.com>
Date: Sun Mar 1 10:07:11 2020 -0500
[Ada] Improve handling of null unbounded strings
2020-06-09 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* libgnat/a-strunb__shared.ads, libgnat/a-strunb__shared.adb
(Reference, Unreference): No-op for Empty_Shared_String.
Remove unneeded calls to Reference.
commit 1a7748ad4c356f37d324a36c21054735f2ca6f89
Author: Arnaud Charlet <charlet@adacore.com>
Date: Mon Mar 2 06:58:01 2020 -0500
[Ada] Remove kludge for AI05-0087
2020-06-09 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* exp_ch5.adb (Expand_N_Assignment): Remove kludge for
AI05-0087.
* sem_ch12.adb (Validate_Derived_Type_Instance): Implement
AI05-0087 retroactively since it's a binding interpretation.
commit 148c86d1ab9a1cc02651056a2da3b67003f1a51a
Author: Eric Botcazou <ebotcazou@adacore.com>
Date: Mon Mar 2 12:46:14 2020 +0100
[Ada] Small cleanup in Einfo unit
2020-06-09 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* einfo.ads (Has_Foreign_Convention): Fix description.
(Component_Alignment): Move around.
(Has_DIC): Likewise.
(Has_Interrupt_Handler): Likewise.
(Has_Invariants): Likewise.
(Is_Atomic_Or_VFA): Likewise.
(Next_Index): Likewise.
(Scope_Depth): Likewise.
(Init_Component_Size): Likewise.
(Init_Component_Location): Likewise.
(Init_Size): Likewise.
(Inline Pragmas for functions): Add Corresponding_Function,
Corresponding_Procedure, Entry_Max_Queue_Lengths_Array,
Finalize_Storage_Only, Has_DIC, Has_Invariants,
Initialization_Statements, Is_Anonymous_Access_Type,
Next_Stored_Discriminant, Address_Clause, Alignment_Clause,
Float_Rep, Has_Foreign_Convention, Has_Non_Limited_View,
Is_Constant_Object, Is_Discriminal, Is_Finalizer, Is_Null_State,
Is_Prival, Is_Protected_Component, Is_Protected_Record_Type,
Is_Subprogram_Or_Entry, Is_Task_Record_Type, Size_Clause,
Stream_Size_Clause, Type_High_Bound, Type_Low_Bound, Known_*,
Unknown_*.
(Inline Pragmas for procedures): Add Set_Corresponding_Function,
Set_Corresponding_Procedure, Set_Finalize_Storage_Only,
Set_Float_Rep, Set_Initialization_Statements,
Init_Normalized_First_Bit, Init_Normalized_Position,
Init_Normalized_Position_Max.
* einfo.adb (Was_Hidden): Move around.
(Is_Packed_Array): Likewise.
(Model_Emin_Value): Likewise.
(Model_Epsilon_Value): Likewise.
(Model_Mantissa_Value): Likewise.
(Model_Small_Value): Likewise.
commit 4e510a0a2baa41a22a7acef872cd309ea78ef737
Author: Ed Schonberg <schonberg@adacore.com>
Date: Fri Feb 28 14:26:02 2020 -0500
[Ada] Ada2020 AI12-0282: Shared variable control aspects in generics
2020-06-09 Ed Schonberg <schonberg@adacore.com>
gcc/ada/
* sem_ch12.adb (Check_Shared_Variable_Control_Aspects): Require
exact match between formal and actual for aspects Atomic and
Volatile only for formal derived types.
commit c4609e75ef41546d7b7373cc3d6d0ba9fa15dfcd
Author: Arnaud Charlet <charlet@adacore.com>
Date: Mon Mar 2 03:58:02 2020 -0500
[Ada] Improve handling of aggregates in Side_Effect_Free
2020-06-09 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* exp_util.adb (Side_Effect_Free): Improve handling of
N_Aggregate.
commit 10212bd8f06e0f8577e15883cae6f9b7c5f381d8
Author: Ghjuvan Lacambre <lacambre@adacore.com>
Date: Fri Feb 28 14:56:31 2020 +0100
[Ada] Fix wrong type being used for range check generation
2020-06-09 Ghjuvan Lacambre <lacambre@adacore.com>
gcc/ada/
* sem_res.adb (Resolve_Qualified_Expression): Use Subtype_Mark
type.
commit c42006e91e021ec222fd1a24d30eff38554f1d4c
Author: Arnaud Charlet <charlet@adacore.com>
Date: Sun Mar 1 11:12:11 2020 -0500
[Ada] Expand more others aggregates statically
2020-06-09 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* exp_aggr.adb (Max_Aggregate_Size): New function to factorize
code.
(Convert_To_Positional, Aggr_Size_OK): Use Max_Aggregate_Size.
commit 4228c32ab0b50e10e74ff53159894708471bcdbc
Author: Arnaud Charlet <charlet@adacore.com>
Date: Sun Mar 1 06:59:11 2020 -0500
[Ada] Code refactoring on calls to Set_Debug_Info_Needed
2020-06-09 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* sem_util.ads, sem_util.adb (Set_Debug_Info_Defining_Id): New.
* exp_ch3.adb, exp_ch8.adb: Call Set_Debug_Info_Defining_Id when
relevant.
commit 7d4d54aa7c2d6dadcc24fb946b127bd1a179e3ec
Author: Justin Squirek <squirek@adacore.com>
Date: Sun Mar 1 04:18:57 2020 -0500
[Ada] Missing documentation for Returns_By_Ref
2020-06-09 Justin Squirek <squirek@adacore.com>
gcc/ada/
* einfo.ads (Returns_By_Ref): Modify documentation to reflect
that Returns_By_Ref can be applied to E_Subprogram_Type
entities.
commit d4fd46371a6fd708c4c16ccd7b56410d9cfc72e6
Author: Justin Squirek <squirek@adacore.com>
Date: Fri Feb 28 16:21:59 2020 -0500
[Ada] Spurious overlap error on zero-sized arrays with -gnateV
2020-06-09 Justin Squirek <squirek@adacore.com>
gcc/ada/
* exp_attr.adb (Expand_N_Attribute_Reference): Modify expansion
of 'Overlaps_Storage to take into account zero sized arrays.
commit 7bf5f4d985c59e4c5a64e8d7b263af92c9ec6339
Author: Bob Duff <duff@adacore.com>
Date: Fri Feb 28 13:50:49 2020 -0500
[Ada] Write_Invocation_Graph_Vertex: include lib item name
2020-06-09 Bob Duff <duff@adacore.com>
gcc/ada/
* bindo-graphs.adb, bindo-graphs.ads: For each invocation graph,
record the corresponding library graph.
* bindo-writers.adb (Write_Invocation_Graph_Vertex): Print the
lib item name. Remove library graph parameters.
* bindo-augmentors.adb, bindo-augmentors.ads,
bindo-builders.adb, bindo-diagnostics.adb,
bindo-diagnostics.ads, bindo-elaborators.adb: Remove library
graph parameters.
commit b97813ab96391d0c7bd518d31855a9db4960c770
Author: Eric Botcazou <ebotcazou@adacore.com>
Date: Fri Feb 28 12:46:58 2020 +0100
[Ada] Propagate DIC, Invariant and Predicate attributes to views
2020-06-09 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* checks.adb (Apply_Predicate_Check): Extend trick used for
aggregates to qualified aggregates and object declarations
* einfo.ads (Has_Own_DIC): Mention the underlying full view.
(Has_Own_Invariants): Likewise.
(Has_Predicates): Likewise.
* exp_util.adb (Build_DIC_Procedure_Declaration): Do not deal
with base types explicitly but with underlying full views.
(Build_Invariant_Procedure_Declaration): Likewise.
* sem_ch13.adb (Build_Predicate_Functions): Do not deal with
the full view manually but call Propagate_Predicate_Attributes
to propagate attributes to views.
(Build_Predicate_Function_Declaration): Likewise.
* sem_ch3.adb (Build_Assertion_Bodies_For_Type): Build bodies
for private full views with an underlying full view.
(Build_Derived_Private_Type): Small comment tweak.
(Complete_Private_Subtype): Call Propagate_Predicate_Attributes.
(Process_Full_View): Do not deal with base types explicitly for
DIC and Invariant attributes. Deal with underlying full views
for them. Call Propagate_Predicate_Attributes and deal with
underlying full views for them.
* sem_ch7.adb (Preserve_Full_Attributes): Do not cross propagate
DIC and Invariant attributes between full type and its base type.
Propagate Predicate attributes from the full to the private view.
* sem_ch9.adb (Analyze_Protected_Type_Declaration): Likewise.
(Analyze_Task_Type_Declaration): Likewise.
* sem_util.ads (Get_Views): Remove Full_Base parameter and add
UFull_Typ parameter.
(Propagate_Predicate_Attributes): New procedure.
* sem_util.adb (Get_Views): Remove Full_Base parameter and add
UFull_Typ parameter. Retrieve the Corresponding_Record_Type
from the underlying full view, if any.
(Propagate_DIC_Attributes): Remove useless tests.
(Propagate_Invariant_Attributes): Likewise.
(Propagate_Predicate_Attributes): New procedure.
commit bf2480e2fbf29772f8acca9d184f18dbfb6d00bc
Author: Justin Squirek <squirek@adacore.com>
Date: Fri Feb 28 10:21:38 2020 -0500
[Ada] Crash on exit statement within predicated loop
2020-06-09 Justin Squirek <squirek@adacore.com>
gcc/ada/
* exp_ch5.adb (Expand_Predicated_Loop): Perserve the original
loop identifier within the expansion.
commit 059a704a4195f49c299ab0e92f772df39a27971a
Author: Bob Duff <duff@adacore.com>
Date: Fri Feb 28 09:46:07 2020 -0500
[Ada] gnatbind: Correct assertions in Add_Edge_Kind_Check
2020-06-09 Bob Duff <duff@adacore.com>
gcc/ada/
* bindo-graphs.ads (Library_Graph_Edge_Kind): Reorder enumerals
to reflect the order of adding edges. Clarify comments.
* bindo-graphs.adb (Add_Edge_Kind_Check): Correct the
assertions. Reorder the "when"s to match the order of adding
edges, and therefore the order of enumerals in type
Library_Graph_Edge_Kind. Change names to "Old_" and "New_" to
clarify what's what. Combine Invocation_Edge into the "<="
test. Fix the "raise Program_Error" message, which was
backwards.
commit 338c32f1375440aaeb66c65d5d40906a388d20c8
Author: Bob Duff <duff@adacore.com>
Date: Thu Feb 27 10:49:47 2020 -0500
[Ada] Add debugging message
2020-06-09 Bob Duff <duff@adacore.com>
gcc/ada/
* bindo-graphs.adb (Add_Edge_Kind_Check): Add the Image of the
old and new Kinds to the raise Program_Error message.
commit dc8adf598fb3a7d6086b69e02007098bd7555d16
Author: Eric Botcazou <ebotcazou@adacore.com>
Date: Thu Feb 27 17:02:14 2020 +0100
[Ada] Remove bypass for instance bodies from Is_Visible_Component
2020-06-09 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* sem_ch3.adb (Is_Visible_Component): Do not special-case
bodies of instances.
commit 11381028a623f939cb7148d908e75ec624e00085
Author: Arnaud Charlet <charlet@adacore.com>
Date: Thu Feb 27 04:28:04 2020 -0500
[Ada] Membership test against a non-excluding subtype
2020-06-09 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* exp_ch4.adb (Expand_N_In): Fix handling of null exclusion.
commit 8e6ca7a87bf96e0baa3bfb3775bf1bff40ea0464
Author: Ed Schonberg <schonberg@adacore.com>
Date: Tue Feb 25 16:58:06 2020 -0500
[Ada] Ada2020 AI12-0282: Shared variable control aspects in generics
2020-06-09 Ed Schonberg <schonberg@adacore.com>
gcc/ada/
* sem_ch12.adb (Check_Shared_Variable_Control_Aspects): Require
exact match between formal and actual for aspects Atomic,
Atomic_Component, Volatile, and Volatile_Components.
commit 05cb816ba5a1b4ab00df26699829483d7c1d156c
Author: Bob Duff <duff@adacore.com>
Date: Wed Feb 26 09:51:56 2020 -0500
[Ada] gnatpp: documentation for --no-separate-return switch
2020-06-09 Bob Duff <duff@adacore.com>
gcc/ada/
* doc/gnat_ugn/gnat_utility_programs.rst: Add documentation for
the --no-separate-return switch of gnatpp.
commit 881d7a9f46d7cd3d47fb96671454db4aa5ec630a
Author: Arnaud Charlet <charlet@adacore.com>
Date: Wed Feb 26 05:01:53 2020 -0500
[Ada] Add missing tag with -gnatw.d
2020-06-09 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* sem_warn.adb (Warn_On_Constant_Valid_Condition): Add proper
warning tag.
commit 742048af50e79b4e0dabba3f4cf2e5779bdc273a
Author: Arnaud Charlet <charlet@adacore.com>
Date: Fri Feb 21 11:36:40 2020 -0500
[Ada] Refine implementation of AI05-0149 missing conversion checks
2020-06-09 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* sem_type.adb (Covers): Fix implementation of AI05-0149.
* sem_res.adb: Fix typo.
commit 54025948c0a4cad05cc22fe67d104e5e3ac9b0de
Author: Ed Schonberg <schonberg@adacore.com>
Date: Mon Feb 24 13:37:58 2020 -0500
[Ada] Spurious error on instantiations with Taft_Amendment types and tasks
2020-06-09 Ed Schonberg <schonberg@adacore.com>
gcc/ada/
* exp_ch9.adb (Build_Master_Renaming): Make name in renaming
declaration unique by adding a numeric suffix, to prevent
accidental name conflict when several instantiations of a
package containing an access_to_incomplete type that designate
tasks appear in the same scope.
commit 6859ef489341d436ebf2fd5d41282c4f68b0283d
Author: Piotr Trojanek <trojanek@adacore.com>
Date: Tue Feb 25 13:58:04 2020 +0100
[Ada] Annotate Ada.Synchronous_Barriers with SPARK_Mode => Off
2020-06-09 Piotr Trojanek <trojanek@adacore.com>
gcc/ada/
* libgnarl/a-synbar.ads, libgnarl/a-synbar.adb,
libgnarl/a-synbar__posix.ads, libgnarl/a-synbar__posix.adb
(Ada.Synchronous_Barriers): Annotate with SPARK_Mode => Off.
commit 3795dac6fa7e6514cdc4daa138e29d5a4f4d001e
Author: Arnaud Charlet <charlet@adacore.com>
Date: Mon Feb 24 15:35:12 2020 -0500
[Ada] AI1-0201 Relational operators of static string types are now static
2020-06-09 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* sem_eval.adb (Eval_Relational_Op, Eval_String_Literal,
Eval_Type_Conversion): Relax rules on relational operators and
type conversions of static string types.
commit c68d70e8bda9423f502351e88e464803f73941b4
Author: Arnaud Charlet <charlet@adacore.com>
Date: Sun Feb 23 13:50:18 2020 -0500
[Ada] Ada2020: AI12-0301 Predicates and Default_Value
2020-06-09 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* sem_util.ads, sem_util.adb (Is_Partially_Initialized_Type):
Take Default_Value and Default_Component_Value into account.
* sem_ch3.adb (Analyze_Object_Declaration): Update comment.
commit d68c6d7dcc46a50ec248f9989243f83ad9a3ca0e
Author: Bob Duff <duff@adacore.com>
Date: Mon Feb 24 19:22:56 2020 -0500
[Ada] Disable assertion regarding Body_Before_Spec_Edge
2020-06-09 Bob Duff <duff@adacore.com>
gcc/ada/
* bindo-graphs.adb (Add_Edge_Kind_Check): Disable failing part
of the assertion.
commit 942a384ef9f38777df25b2bfa421ce6a07553a98
Author: Martin Liska <mliska@suse.cz>
Date: Mon Jun 8 16:04:31 2020 +0200
libsanitizer: use gnu++14
libsanitizer/ChangeLog:
* asan/Makefile.am: Replace gnu++11 with gnu++14.
* interception/Makefile.am: Likewise.
* libbacktrace/Makefile.am: Likewise.
* lsan/Makefile.am: Likewise.
* sanitizer_common/Makefile.am: Likewise.
* tsan/Makefile.am: Likewise.
* ubsan/Makefile.am: Likewise.
* asan/Makefile.in: Regenerate.
* interception/Makefile.in: Likewise.
* libbacktrace/Makefile.in: Likewise.
* lsan/Makefile.in: Likewise.
* sanitizer_common/Makefile.in: Likewise.
* tsan/Makefile.in: Likewise.
* ubsan/Makefile.in: Likewise.
commit 4373fd2c7f7307f970df73a943e636b2b9d272b6
Author: Martin Liska <mliska@suse.cz>
Date: Tue Jun 9 10:01:05 2020 +0200
gcc-changelog: fix deduction for root ChangeLog
contrib/ChangeLog:
* gcc-changelog/git_commit.py: Fix ChangeLog regex in order to
match the top-level ChangeLog.
* gcc-changelog/test_email.py: Add test.
* gcc-changelog/test_patches.txt: Likewise.
commit d6dbb71e468d0db561cc9eca99eeaca1efb81c11
Author: Jakub Jelinek <jakub@redhat.com>
Date: Tue Jun 9 08:39:36 2020 +0200
c-family: Fix up MEM_REF printing [PR95580]
The C FE in the MEM_REF printing ICEs if the type of the first argument
(which due to useless pointer conversions can be an arbitrary type) is a
pointer to an incomplete type. The code just wants to avoid printing a cast
if it is a pointer to single byte elements.
2020-06-09 Jakub Jelinek <jakub@redhat.com>
PR c/95580
* c-pretty-print.c (c_pretty_printer::unary_expression): Handle the
case when MEM_REF's first argument has type pointer to incomplete type.
* gcc.dg/pr95580.c: New test.
commit 653ab081391e9e7e38b304f3234323c93693d40c
Author: Jakub Jelinek <jakub@redhat.com>
Date: Tue Jun 9 08:38:19 2020 +0200
match.pd: Optimize ffs comparisons against constants [PR95527]
The following patch implements various optimizations of __builtin_ffs*
against constants.
2020-06-09 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/95527
* match.pd (__builtin_ffs (X) cmp CST): New optimizations.
* gcc.dg/tree-ssa/pr95527.c: New test.
commit 9a39b91d934e7acd8f3a9767b6d5febe90168d0d
Author: Jakub Jelinek <jakub@redhat.com>
Date: Tue Jun 9 08:34:13 2020 +0200
testsuite: Fix g++.dg/torture/pr95493.C FAIL on i686-linux with -O0.
2020-06-09 Jakub Jelinek <jakub@redhat.com>
* g++.dg/torture/pr95493.C: Add -Wno-psabi -w to dg-additional-options.
commit 1d9921cbdc732e1a7fc66b9c24a6dfa9625bd4c0
Author: Max Filippov <jcmvbkbc@gmail.com>
Date: Sat Jun 6 05:06:04 2020 -0700
xtensa: libgcc: fix PR target/95571
Rewrite uw_install_context without function calls to avoid register
spilling in _Unwind_RaiseException during return context installation.
2020-06-08 Max Filippov <jcmvbkbc@gmail.com>
gcc/testsuite/
* g++.target/xtensa/pr95571.C: New test.
* g++.target/xtensa/xtensa.exp: New testsuite.
libgcc/
* config/xtensa/unwind-dw2-xtensa.c (uw_install_context): Merge
with uw_install_context_1.
commit df2c0060e5d1e0a37001b93f36e9245bb75ef33b
Author: Segher Boessenkool <segher@kernel.crashing.org>
Date: Mon Jun 8 22:34:21 2020 +0000
rs6000/testsuite: Allow xxperm* instead of only vperm*
Some testcases failed (esp. with --with-cpu=power9) after my change to
prefer xxperm over vperm when all else is equal. Fix that. (This also
tightens the relevant REs somewhat).
2020-06-09 Segher Boessenkool <segher@kernel.crashing.org>
gcc/testsuite/
* gcc.target/powerpc/fold-vec-perm-char.c: Allow both vperm/vpermr and
xxperm/xxpermr.
* gcc.target/powerpc/fold-vec-perm-double.c: Ditto.
* gcc.target/powerpc/fold-vec-perm-float.c: Ditto.
* gcc.target/powerpc/fold-vec-perm-int.c: Ditto.
* gcc.target/powerpc/fold-vec-perm-longlong.c: Ditto.
* gcc.target/powerpc/fold-vec-perm-pixel.c: Ditto.
* gcc.target/powerpc/fold-vec-perm-short.c: Ditto.
* gcc.target/powerpc/lvsl-lvsr.c: Ditto.
* gcc.target/powerpc/vec-mult-char-2.c: Ditto.
* gcc.target/powerpc/vsx-vector-6.p9.c: Also allow xxpermr.
commit 2c455ae06c0b46a6a27be3a6bd869384758e4707
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date: Tue Jun 9 00:16:47 2020 +0000
Daily bump.
commit 1c0fdaf79e3618fd7512608a2e5c62b6b306e9e8
Author: Tobias Burnus <tobias@codesourcery.com>
Date: Mon Jun 8 23:24:57 2020 +0200
openmp: ensure variables in offload table are streamed out (PRs 94848 + 95551)
gcc/ChangeLog:
PR lto/94848
PR middle-end/95551
* omp-offload.c (add_decls_addresses_to_decl_constructor,
omp_finish_file): Skip removed items.
* lto-cgraph.c (output_offload_tables): Likewise; set force_output
to this node for variables and functions.
libgomp/ChangeLog:
PR lto/94848
PR middle-end/95551
* testsuite/libgomp.fortran/target-var.f90: New test.
commit ffac9597256823612fb63bbab0f9ba3c11255e6b
Author: Jason Merrill <jason@redhat.com>
Date: Fri Jun 5 12:45:11 2020 -0400
bootstrap: Fix --disable-bootstrap with older g++.
Previously I had AX_CXX_COMPILE_STDCXX in the gcc directory configure, which
added -std=c++11 to CXX if needed, but then CXX is overridden from the
toplevel directory, so it didn't have the desired effect. Fixed by moving
the check to the toplevel. Currently it is only used when building GCC
without bootstrapping; other packages that share the toplevel directory
can adjust the condition if they also want to require C++11 support.
/ChangeLog:
* configure.ac: Check AX_CXX_COMPILE_STDCXX if not bootstrapping.
* configure: Regenerate.
gcc/ChangeLog:
* aclocal.m4: Remove ax_cxx_compile_stdcxx.m4.
* configure.ac: Remove AX_CXX_COMPILE_STDCXX.
* configure: Regenerate.
commit a37fbff12c3a441753f5eb677cebeab7350f24eb
Author: Jonathan Wakely <jwakely@redhat.com>
Date: Mon Jun 8 21:34:46 2020 +0100
libstdc++: Fix failing tests
These started failing with the previous commit, because I forgot to add
the tests after adjusting them.
* testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error
line number.
* testsuite/20_util/default_delete/void_neg.cc: Likewise.
commit 931fdcc5324417c46d6a67e9a4116fffb7bda2e0
Author: Jason Merrill <jason@redhat.com>
Date: Mon Jun 8 15:22:24 2020 -0400
Add missing ChangeLog entries
commit 187da2ce31f13b2f75d5bb780e30ee364ead9d1d
Author: Jonathan Wakely <jwakely@redhat.com>
Date: Mon Jun 8 18:08:14 2020 +0100
libstdc++: Implement operator<< for std::unique_ptr (LWG 2948)
libstdc++-v3/ChangeLog:
* include/bits/unique_ptr.h (operator<<): Define for C++20.
* testsuite/20_util/unique_ptr/io/lwg2948.cc: New test.
commit 5fceefeee9a10cfba621d215f011a58badc246ad
Author: Iain Buclaw <ibuclaw@gdcproject.org>
Date: Mon Jun 8 22:11:00 2020 +0200
d: Fix regression caused by recent refactoring
gcc/d/ChangeLog:
PR d/95573
* dmd/MERGE: Merge upstream dmd 5041e56f1.
commit 49a09af117be32adf230efd2c52a41f810b9ee04
Author: Iain Buclaw <ibuclaw@gdcproject.org>
Date: Mon Jun 8 21:57:59 2020 +0200
d: Merge upstream dmd 955b8b36f.
Merges AndAndExp and OrOrExp into a LogicalExp AST node.
gcc/d/ChangeLog:
* dmd/MERGE: Merge upstream dmd 955b8b36f.
* expr.cc (ExprVisitor::visit (AndAndExp *)): Rename type to ...
(ExprVisitor::visit (LogicalExp *)): ... this. Handle both 'and if'
and 'or if' expression nodes.
(ExprVisitor::visit (OrOrExp *)): Remove.
commit 8cd239614e43c9dcc0838845aec504e5eb938dbd
Author: Harald Anlauf <anlauf@gmx.de>
Date: Mon Jun 8 21:00:11 2020 +0200
PR fortran/95195 - Fortran testcase should clean up afterwards
Change testcase to check error message (iomsg) at runtime, rather than to crash.
libgfortran/
PR fortran/95091
* io/transfer.c (finalize_transfer): Fix type in error message.
gcc/testsuite/
PR fortran/95195
* gfortran.dg/namelist_97.f90: Adjust testcase.
commit c1057cc0a8ad972e0a2218ab74038a56e5514c39
Author: Martin Sebor <msebor@redhat.com>
Date: Mon Jun 8 09:06:48 2020 -0600
PR bootstrap/95555 - powepc64 bootstrap failure due to -Wmaybe-uninitialized in reload_cse_simplify_operands
gcc/ChangeLog:
* postreload.c (reload_cse_simplify_operands): Clear first array element
before using it. Assert a precondition.
commit 5dc3986103d8908c802e940dea8f2def3a6989c2
Author: Mark Eggleston <markeggleston@gcc.gnu.org>
Date: Thu Jun 4 05:53:31 2020 +0100
Fortran : ICE in maybe_canonicalize_comparison_1 PR92993
This issue has been fixed by PR94090. Add test case to ensure that
this does not re-occur.
2020-06-08 Mark Eggleston <markeggleston@gcc.gnu.org>
gcc/testsuite/
PR fortran/92993
* gfortran.dg/pr92993.f90: New test.
commit 8be374e02761c9d63d2753d71e4bd4874a1577b1
Author: Jakub Jelinek <jakub@redhat.com>
Date: Mon Jun 8 11:05:10 2020 +0200
forwprop: Ignore scalar mode vectors in simplify_vector_constructor [PR95528]
As mentioned in the PR, the problem is that at least the x86 backend asumes
that the vec_unpack* and vec_pack* optabs with integral modes are for the
AVX512-ish vector masks rather than for very small vectors done in GPRs.
The only other target that seems to have a scalar mode vec_{,un}pack* optab
is aarch64 as discussed in the PR, so there is also a condition for that.
All other targets have just vector mode optabs.
2020-06-08 Jakub Jelinek <jakub@redhat.com>
PR target/95528
* tree-ssa-forwprop.c (simplify_vector_constructor): Don't use
VEC_UNPACK*_EXPR or VEC_PACK_TRUNC_EXPR with scalar modes unless the
type is vector boolean.
* g++.dg/opt/pr95528.C: New test.
commit 296d644b9f526e44fbe574426f24799c1d545fd3
Author: Jakub Jelinek <jakub@redhat.com>
Date: Mon Jun 8 10:30:48 2020 +0200
testsuite: Fix up pr95548.C testcase.
2020-06-08 Jakub Jelinek <jakub@redhat.com>
PR lto/95548
* g++.dg/torture/pr95548.C: Change from dg-do compile to dg-do link,
add return type for main, for __SIZEOF_INT128__ test with __uint128_t
enumerator constants and add a test with unsigned long long
enumerators for all targets.
commit d6430e3cccb37bec6c5604dffe48c52016509013
Author: Tamar Christina <tamar.christina@arm.com>
Date: Mon Jun 8 09:23:10 2020 +0100
AArch64: Expand on comment of stack-clash and implicit probing through LR.
This expands the comment on an assert we have in aarch64_layout_frame
and points to an existing comment somewhere else that has a much longer
explanation of what's going on.
Committed under the GCC Obvious rule.
gcc/ChangeLog:
* config/aarch64/aarch64.c (aarch64_layout_frame): Expand comments.
commit 635408da1eb1d441ef4d59fe00a038c920e51085
Author: Christophe Lyon <christophe.lyon@linaro.org>
Date: Mon Jun 8 08:17:20 2020 +0000
[arm] Fix vfp_operand_register for VFP HI regs
While looking at PR target/94743 I noticed an ICE when I tried to save
all the FP registers: this was because all HI registers wouldn't match
vfp_register_operand.
gcc/ChangeLog:
* config/arm/predicates.md (vfp_register_operand): Use VFP_HI_REGS
instead of VFP_REGS.
commit 291f65f15a70dafd5b345f55028947ad048c3bb7
Author: Martin Liska <mliska@suse.cz>
Date: Tue Jun 2 15:29:37 2020 +0200
rs6000: Replace FAIL with gcc_unreachable
gcc/ChangeLog:
* config/rs6000/vector.md: Replace FAIL with gcc_unreachable
in all vcond* patterns.
commit e7b3f654f2ab0400c95c0517387a9ad645a5c4cd
Author: Christophe Lyon <christophe.lyon@linaro.org>
Date: Mon Jun 8 08:04:19 2020 +0000
[arm] (header usage fix) include c++ algorithm header via system.h
After the recent commit that forces uses of c++11, the arm part failed
to build because it does not include <algorithm> via system.h as
should be done.
This results in:
from /gcc/common/config/arm/arm-common.c:34:
/usr/lib/gcc/x86_64-linux-gnu/5/include/mm_malloc.h:42:12: error:
attempt to use poisoned "malloc"
return malloc (size);
This patch fixes the problem by defining INCLUDE_ALGORITHM before
including system.h and no longer includes <algorithm> directly.
gcc/ChangeLog:
* common/config/arm/arm-common.c (INCLUDE_ALGORITHM):
Define. No longer include <algorithm>.
commit 48b799ea9a6a252c355947f33f78f43a38fe31b0
Author: Steve Baird <baird@adacore.com>
Date: Thu Feb 20 15:35:51 2020 -0800
[Ada] Implement AI12-0073 (Ravenscar disallows Synchronous_Barriers)
2020-06-08 Steve Baird <baird@adacore.com>
gcc/ada/
* sem_prag.adb (Analyze_Pragma.Set_Ravenscar_Profile): Add
appropriate call to Set_Restriction_No_Dependence if Ada_Version
>= Ada2012 and Profile is either Ravenscar or a GNAT-defined
Ravenscar variant (i.e., not Jorvik).
commit 63408d0eb2f6fd33b6b423396e3d80d54f3235ae
Author: Arnaud Charlet <charlet@adacore.com>
Date: Mon Feb 24 05:41:00 2020 -0500
[Ada] AI12-0204 Renaming of a prefixed view
2020-06-08 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* sem_ch5.adb: Fix typo.
* sem_ch8.adb (Analyze_Renamed_Primitive_Operation): Check that
the prefix of a prefixed view must be renamable as an object.
commit 072c5071e0e95401cec2b700c3f276c9eb91abb1
Author: Arnaud Charlet <charlet@adacore.com>
Date: Fri Feb 21 09:44:28 2020 -0500
[Ada] AI12-0085 Missing aspect cases for Remote_Types
2020-06-08 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* sem_cat.ads: Fix typo.
* sem_cat.adb (Validate_Remote_Access_To_Class_Wide_Type): Add
handling of N_Attribute_Definition_Clause.
* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Call
Validate_Remote_Access_To_Class_Wide_Type for Storage_Size and
Storage_Pool.
* sem_attr.adb, exp_ch4.adb: Update comments.
commit a689887372e80f748fedd95e98ce9a85e7b09c9b
Author: Justin Squirek <squirek@adacore.com>
Date: Fri Feb 21 16:12:35 2020 -0500
[Ada] Spurious error on call to controlled primitive
2020-06-08 Justin Squirek <squirek@adacore.com>
gcc/ada/
* sem_ch4.adb (Analyze_One_Call): Add extra condition to the
predicate for deciding when a given controlled call is visible.
commit 5351d617ec82bc2795a514e9de815484fb8cd0fc
Author: Piotr Trojanek <trojanek@adacore.com>
Date: Mon Feb 17 18:00:41 2020 +0100
[Ada] Port a modified expansion of Enum_Rep from GNAT to GNATprove
2020-06-08 Piotr Trojanek <trojanek@adacore.com>
gcc/ada/
* exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Port
changes in frontend expander.
commit e344ec2553320fa95414e39001435076f277e335
Author: Piotr Trojanek <trojanek@adacore.com>
Date: Thu Feb 20 12:10:53 2020 +0100
[Ada] Style cleanups in new code for Pure_Barriers
2020-06-08 Piotr Trojanek <trojanek@adacore.com>
gcc/ada/
* sem_ch13.adb (All_Membership_Choices_Static): Fix style.
commit a998e58bf019c7174a7480fc4d46ec9fcbc4cd92
Author: Steve Baird <baird@adacore.com>
Date: Wed Feb 19 16:27:47 2020 -0800
[Ada] Implement AI12-0291 (Jorvik profile)
2020-06-08 Steve Baird <baird@adacore.com>
gcc/ada/
* libgnat/s-rident.ads: Add Jorvik to the Profile_Name
enumeration type. Add an element for Jorvik to the array
aggregate that is the initial value of the constant
Profile_Info.
* targparm.adb (Get_Target_Parameters): Handle "pragma Profile
(Jorvik);" similarly to "pragma Profile (Ravenscar);".
* snames.ads-tmpl: Declare Name_Jorvik Name_Id. Unlike
Ravenscar, Jorvik is not a pragma name and has no corresponding
element in the Pragma_Id enumeration type; this means that its
declaration must not occur between those of First_Pragma_Name
and Last_Pragma_Name.
* sem_prag.adb (Analyze_Pragma): Add call to
Set_Ravenscar_Profile for Jorvik, similar to the existing calls
for Ravenscar and the GNAT Ravenscar variants.
commit 4b8c2c4ba3566f8dd6d256e4b93321410782a0b4
Author: Arnaud Charlet <charlet@adacore.com>
Date: Mon Feb 17 12:41:37 2020 -0500
[Ada] AI12-0228 Properties of qualified expressions used as names
2020-06-08 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* sem_ch8.adb (Analyze_Object_Renaming): Update Get_Object_Name
to go through N_Qualified_Expression and N_Type_Conversion. Fix
another case of wrong usage of E_Anonymous_Access_Type instead
of Anonymous_Access_Kind.
* sem_util.adb (Is_Dependent_Component_Of_Mutable_Object): Work
on the original node.
(Is_Aliased_View): Take into account N_Qualified_Expression.
commit 8eda13a49e566270f04323dbec11b2e86d3ddccc
Author: Arnaud Charlet <charlet@adacore.com>
Date: Fri Feb 14 11:50:12 2020 -0500
[Ada] Fix handling of 'Enum_Rep and renamings
2020-06-08 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* sem_eval.adb (Eval_Type_Conversion): Fix handling of
enumeration to integer conversions.
* exp_attr.adb (Expand_N_Attribute_Reference
[Attribute_Enum_Rep]): Remove special casing for first-level
renaming, best left to the general folding mechanism via
Eval_Type_Conversion.
commit bbe7d67f5ffdadeee67e0060bde212d09e38a704
Author: Eric Botcazou <ebotcazou@adacore.com>
Date: Sun Feb 9 18:03:48 2020 +0100
[Ada] Remove the Has_Dynamic_Range_Check flag
2020-06-08 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* atree.adb (New_Copy): Do not clear Has_Dynamic_Range_Check.
* checks.ads (Append_Range_Checks): Remove Flag_Node parameter.
(Insert_Range_Checks): Likewise and remove default value of
Static_Loc parameter.
* checks.adb (Append_Range_Checks): Remove Flag_Node parameter.
Do not test and set Has_Dynamic_Range_Check.
(Insert_Range_Checks): Likewise and remove default value of
Static_Loc parameter.
* csinfo.adb (CSinfo): Remove 'L' from [NEUB]_Fields pattern and
do not handle Has_Dynamic_Range_Check.
* exp_ch5.adb (Expand_N_Assignment_Statement): Remove argument
in call to Insert_Range_Checks.
* sem_ch3.adb (Analyze_Subtype_Declaration): Do not fiddle
with Has_Dynamic_Range_Check.
(Process_Range_Expr_In_Decl): Remove argument in calls to
Insert_Range_Checks and Append_Range_Checks.
* sinfo.ads (Has_Dynamic_Range_Check): Delete.
(Set_Has_Dynamic_Range_Check): Likewise.
* sinfo.adb (Has_Dynamic_Range_Check): Delete.
(Set_Has_Dynamic_Range_Check): Likewise.
* treepr.adb (Print_Node): Do not print Has_Dynamic_Range_Check.
commit 6476fc372a684ff42712c10508dddf0e6d229df5
Author: Steve Baird <baird@adacore.com>
Date: Fri Feb 14 16:24:47 2020 -0800
[Ada] Implement AI12-0290 (Simple_Barriers restriction)
2020-06-08 Steve Baird <baird@adacore.com>
gcc/ada/
* sem_ch13.ads: Export new function
All_Membership_Choices_Static.
* sem_ch13.adb: Implement new function
All_Membership_Choices_Static. This involves moving the
functions Is_Static_Choice and All_Membership_Choices_Static,
which were previously declared within the function
Is_Predicate_Static, out to library level so that they can be
called by the new function. The already-exisiting code in
Is_Predicate_Static which became the body of
All_Membership_Choices_Static is replaced with a call to the new
function in order to avoid duplication.
* exp_ch9.adb (Is_Pure_Barrier): Several changes needed to
implement rules of AI12-0290 and RM D.7's definition of
"pure-barrier-eligible". These changes include adding a call to
the new function Sem_13.All_Membership_Choices_Static, as per
the "see 4.9" in RM D.7(1.6/5).
commit 8b0ec65d852c11fde3937629d10c6b24083b5737
Author: Richard Kenner <kenner@adacore.com>
Date: Mon Feb 17 18:17:58 2020 -0500
[Ada] Issue with unnesting of 'First/Last and renaming
2020-06-08 Richard Kenner <kenner@adacore.com>
gcc/ada/
* exp_unst.adb (Visit_Node): When visiting array attribute
nodes, in addition to checking the type of Get_Referenced_Object
of the prefix, also check the actual type of the prefix.
commit 24eda9e701253cc482c0c70a102fcad103aa1591
Author: Gary Dismukes <dismukes@adacore.com>
Date: Mon Feb 17 01:31:57 2020 -0500
[Ada] Implement predicate checks on qualified expressions (AI12-0100)
2020-06-08 Gary Dismukes <dismukes@adacore.com>
gcc/ada/
* checks.adb (Apply_Predicate_Check): Refine test for being in a
subprogram body to account for no Corresponding_Body case,
avoiding blowups arising due to other changes here.
* exp_ch4.adb (Expand_N_Qualified_Expression): Apply predicate
checks, if any, after constraint checks are applied.
* sem_eval.ads (Check_Expression_Against_Static_Predicate): Add
Check_Failure_Is_Error formal for conditionalizing warning vs.
error messages.
* sem_eval.adb (Check_Expression_Against_Static_Predicate):
Issue an error message rather than a warning when the new
Check_Failure_Is_Error formal is True. In the nonstatic or
Dynamic_Predicate case where the predicate is known to fail,
emit the check to ensure that folded cases get checks applied.
* sem_res.adb (Resolve_Qualified_Expression): Call
Check_Expression_Against_Static_Predicate, passing True for
Check_Failure_Is_Error, to ensure we reject static predicate
violations. Remove code that was conditionally calling
Apply_Predicate_Check, which is no longer needed, and that check
procedure shouldn't be called from a resolution routine in any
case. Also remove associated comment about preventing infinite
recursion and consistency with Resolve_Type_Conversion, since
that handling was already similarly removed from
Resolve_Type_Convesion at some point.
(Resolve_Type_Conversion): Add passing of True for
Check_Failure_Is_Error parameter on call to
Check_Expression_Against_Static_Predicate, to ensure that static
conversion cases that violate a predicate are rejected as
errors.
commit 7b7f1ca1b28b650eedd1074bf723b04e99adcdaf
Author: Piotr Trojanek <trojanek@adacore.com>
Date: Mon Feb 17 14:15:16 2020 +0100
[Ada] Restore Snames.Name_SPARK as it used in the GNATprove backend
2020-06-08 Piotr Trojanek <trojanek@adacore.com>
gcc/ada/
* snames.ads-tmpl (Name_SPARK): Restore after being deleted.
commit 7907619e7737b6cb38ee334996a7d7a33bb7a1d6
Author: Arnaud Charlet <charlet@adacore.com>
Date: Mon Feb 10 15:18:47 2020 -0500
[Ada] Remove processing of SPARK_05 restriction
2020-06-08 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* exp_aggr.adb, exp_ch6.adb, par-ch11.adb, par-ch6.adb,
par-ch7.adb, par-prag.adb, restrict.adb, restrict.ads,
scans.ads, scng.adb, sem_aggr.adb, sem_attr.adb, sem_ch11.adb,
sem_ch12.adb, sem_ch3.adb, sem_ch3.ads, sem_ch4.adb,
sem_ch5.adb, sem_ch6.adb, sem_ch7.adb, sem_ch8.adb, sem_ch9.adb,
sem_res.adb, sem_util.adb, sem_util.ads, snames.ads-tmpl,
gnatbind.adb, libgnat/s-rident.ads,
doc/gnat_rm/standard_and_implementation_defined_restrictions.rst:
Remove processing of SPARK_05 restriction.
* gnat_rm.texi: Regenerate.
* opt.ads: Remove processing of old checksum which is now
handled by gprbuild directly.
commit b4aa6e2978408f0f45fe1074481cfd4044947ab9
Author: Arnaud Charlet <charlet@adacore.com>
Date: Sun Feb 16 07:16:45 2020 -0500
[Ada] AI12-0287 Legality Rules for null exclusions in renaming are too fierce
2020-06-08 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* sem_ch12.adb (Instantiate_Object): Relax rules related to null
exclusions and generic objects. Handle all anonymous types
consistently and not just E_Anonymous_Access_Type.
* sem_ch8.adb (Analyze_Object_Renaming): Change wording so that
it applies to both renamings and instantiations to avoid
confusion.
commit 58c4038810a0951979d2b3c06bda0cadea3a50ea
Author: Arnaud Charlet <charlet@adacore.com>
Date: Sat Feb 15 12:37:13 2020 -0500
[Ada] Ada.Text_IO: fix typo
2020-06-08 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* libgnat/a-textio.ads (File_Mode): Fix typo in comment.
commit 8214938ab2e0775ff70b344a8fbc0a43bda0b0c5
Author: Eric Botcazou <ebotcazou@adacore.com>
Date: Sat Feb 15 16:48:15 2020 +0100
[Ada] Do not warn on partial access to atomic object with address clause
2020-06-08 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* sem_res.adb (Resolve_Indexed_Component): Do not give a warning
for a nonatomic component of an atomic array which is subject to
an address clause in Ada 2020 mode.
(Resolve_Selected_Component): Likewise for an atomic record.
commit 591bdee0fa1087daeab3c0f901d5139c6776469d
Author: Philippe Gil <gil@adacore.com>
Date: Mon Feb 3 14:56:23 2020 +0100
[Ada] Add gnatname use for multiple units files support
2020-06-08 Philippe Gil <gil@adacore.com>
gcc/ada/
* doc/gnat_ugn/the_gnat_compilation_model.rst: in "Handling
Files with Multiple Units" part documents gnatname use for
unmodified files handling and gnatchop use for files
refactoring.
* gnat_ugn.texi: Regenerate.
commit fccf77d504b72a749b6aba877454b9d846c0b568
Author: Arnaud Charlet <charlet@adacore.com>
Date: Fri Feb 14 03:12:30 2020 -0500
[Ada] Update doc on Enum_Rep/Enum_Val
2020-06-08 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* doc/gnat_rm/implementation_defined_attributes.rst:
Enum_Rep/Enum_Val are standard Ada 202x attributes.
* gnat_rm.texi: Regenerate.
commit 176de683776a26f97ba8fa4189ce953886753c18
Author: Javier Miranda <miranda@adacore.com>
Date: Mon Feb 10 17:12:32 2020 -0500
[Ada] Better code generation for nested aggregates
2020-06-08 Javier Miranda <miranda@adacore.com>
gcc/ada/
* exp_aggr.adb (Safe_Component): Remove code that considers as
unsafe components that are aggregates; such removal allows the
frontend to proceed and evaluate if they are safe by means of
invoking Safe_Aggregate.
commit c382d0712fba76b6fce4a9aadc5a4487fad7efaf
Author: Piotr Trojanek <trojanek@adacore.com>
Date: Wed Feb 12 11:00:38 2020 +0100
[Ada] Reuse standard expansion of 'First and 'Last in GNATprove mode
2020-06-08 Piotr Trojanek <trojanek@adacore.com>
gcc/ada/
* exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Apply
standard expansion to attributes First and Last.
commit 3ebf0cbda50a5f5682456cdbb064576e0a08c0f7
Author: Piotr Trojanek <trojanek@adacore.com>
Date: Tue Feb 11 23:01:06 2020 +0100
[Ada] Reuse Get_Index_Subtype in the special expander for GNATprove
2020-06-08 Piotr Trojanek <trojanek@adacore.com>
gcc/ada/
* exp_attr.adb, exp_util.ads, exp_util.adb (Get_Index_Subtype):
Move from the body of Exp_Attr to Exp_Util and expose from the
spec.
* exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Replace
duplicated code with a call to Get_Index_Subtype.
commit 6e063ac3887d7e3b2992fa5fa12a57e743be6c1d
Author: Arnaud Charlet <charlet@adacore.com>
Date: Sun Feb 9 14:53:05 2020 -0500
[Ada] AI12-0226 Make objects more consistent
2020-06-08 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* sem_ch8.adb (Analyze_Object_Renaming): Simplify code by moving
many special cases to Is_Object_Reference and removing others by
only checking renamings coming from sources.
* sem_util.adb (Is_Object_Reference): Update for AI12-0226 and
add more regular handling of 'Priority. Remove special cases no
longer needed now that we are only checking renamings coming
from sources.
commit ae9293fb8e1895006ce33069eaabdecfe65c46a2
Author: Claire Dross <dross@adacore.com>
Date: Mon Feb 10 14:51:30 2020 +0100
[Ada] Silence spurious warning on instances of formal vectors
2020-06-08 Claire Dross <dross@adacore.com>
gcc/ada/
* libgnat/a-cofove.adb (Insert_Space): The computation of Index
generates a spurious compiler warning about a value not being in
range for a statically dead branch. Silence it using pragma
Warnings.
commit d2f7fa08bd557db89d771b648631bb98c61a631e
Author: Bob Duff <duff@adacore.com>
Date: Mon Feb 10 19:21:00 2020 -0500
[Ada] gnatbind: Deterministic No_Entry_Calls_In_Elaboration_Code messages
2020-06-08 Bob Duff <duff@adacore.com>
gcc/ada/
* bindo-graphs.adb (function Add_Edge): Rename
Add_Edge_With_Return to Add_Edge; we can tell it returns because
it's a function, and overloading seems appropriate in this case.
If Activates_Task=True, and we're not going to add a new edge
because an existing Pred-->Succ edge already exists, then set
Activates_Task to True on the preexisting edge. This ensures
that the message:
info: use pragma Restrictions (No_Entry_Calls_In_Elaboration_Code)
appears when appropriate, no matter in what order the edges
happened to be processed.
(procedure Add_Edge): Remove redundant assertions.
(Activates_Task): Other kinds of edges can have
Activates_Task=True. For example, if we had a With_Edge and
then an Invocation_Edge with Activates_Task=True, then the
With_Edge has Activates_Task set to True.
(Add_Edge_Kind_Check): New procedure to prevent other bugs of
this nature. For example, if we were to sometimes call Add_Edge
for a Spec_Before_Body_Edge followed by Add_Edge for a
With_Edge, and sometimes in the other order, that would cause a
similar bug to what we're fixing here.
(Set_Is_Recorded_Edge): Val parameter is not used. Get rid of
it.
(Set_Activates_Task): New procedure to set the Activates_Task flag.
* bindo-graphs.ads (Library_Graph_Edge_Kind): Reorder the
enumeration literals to facilitate Add_Edge_Kind_Check.
* ali.adb (Known_ALI_Lines): The comment about "still available"
was wrong. Fix that by erasing the comment, and encoding the
relevant information in real code. Take advantage of Ada's full
coverage rules by removing "others =>". Also DRY.
commit 2f7294f23e87c4e0a48e50814ab7bb9a4a756a9f
Author: Ed Schonberg <schonberg@adacore.com>
Date: Sun Feb 9 19:30:05 2020 -0500
[Ada] Ada_2020: shared variable control aspects on formal derived types
2020-06-08 Ed Schonberg <schonberg@adacore.com>
gcc/ada/
* par-ch12.adb (P_Formal_Derived_Type_Definition): Handle
properly formal derived types that include aspect
specifications, so that the "with" keyword appears twice in the
formal type declaration.
* sem_ch13.adb (Has_Generic_Parent): Return true if the type
itself is a generic formal.
commit 8472d81ea00dc16a55b55a21ed34499390604941
Author: Dmitriy Anisimkov <anisimko@adacore.com>
Date: Thu Feb 6 16:25:06 2020 +0600
[Ada] Fix socket timeout correction for Windows Server 2019 case
2020-06-08 Dmitriy Anisimkov <anisimko@adacore.com>
gcc/ada/
* socket.c (__gnat_minus_500ms): Remove
IsWindowsVersionOrGreater from condition.
commit 54c1fdb62b647c1dedf6d58d260ed85e93e0af20
Author: Claire Dross <dross@adacore.com>
Date: Mon Feb 10 12:30:40 2020 +0100
[Ada] Add Depends contracts to Delete procedures of formal containers
2020-06-08 Claire Dross <dross@adacore.com>
gcc/ada/
* libgnat/a-cfdlli.ads, libgnat/a-cfhama.ads,
libgnat/a-cfhase.ads, libgnat/a-cforma.ads, libgnat/a-cforse.ads
(Delete): Add Depends contract.
commit 9490fd58a82b80a7048d5e1a82f749da438b4306
Author: Arnaud Charlet <charlet@adacore.com>
Date: Fri Jan 31 11:09:11 2020 -0500
[Ada] AI12-0309 Missing checks for pragma Suppress
2020-06-08 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* snames.ads-tmpl (Name_Program_Error_Check,
Name_Tasking_Check): New constants.
* types.ads (Program_Error_Check, Tasking_Check): New constants.
(All_Checks): Update accordingly.
commit 53d461e4e0fbc6d2ef7385509e8c3785e9b205fd
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date: Mon Jun 8 00:16:23 2020 +0000
Daily bump.
commit 0a2ee4099d9c964dadd097f829a9624164d98743
Author: Iain Buclaw <ibuclaw@gdcproject.org>
Date: Sun Jun 7 21:58:49 2020 +0200
d: Merge upstream dmd 73d8e2fec.
Renames the enum PROTKIND to Prot::Kind, updates all uses of the
original enum accordingly.
gcc/d/ChangeLog:
* dmd/MERGE: Merge upstream dmd 73d8e2fec.
* decl.cc (get_symbol_decl): Use new Prot::Kind enum.
* modules.cc (get_internal_fn): Likewise.
commit f08995eefbf579acfe40f0204727d5ce388e3d0a
Author: Uros Bizjak <ubizjak@gmail.com>
Date: Sun Jun 7 22:07:28 2020 +0200
i386: Improve expansion of __builtin_parity
GCC currently hides the shift and xor reduction inside a backend
specific UNSPEC PARITY, making it invisible to the RTL optimizers until
very late during compilation. It is normally reasonable for the
middle-end to maintain wider mode representations for as long as possible
and split them later, but this only helps if the semantics are visible
at the RTL-level (to combine and other passes), but UNSPECs are black
boxes, so in this case splitting early (during RTL expansion) is a
better strategy.
It turns out that that popcount instruction on modern x86_64 processors
has (almost) made the integer parity flag in the x86 ALU completely
obsolete, especially as POPCOUNT's integer semantics are a much better
fit to RTL. The one remaining case where these transistors are useful
is where __builtin_parity is immediately tested by a conditional branch,
and therefore the result is wanted in a flags register rather than as
an integer. This case is captured by two peephole2 optimizations in
the attached patch.
2020-06-07 Roger Sayle <roger@nextmovesoftware.com>
gcc/ChangeLog:
* config/i386/i386.md (paritydi2, paritysi2): Expand reduction
via shift and xor to an USPEC PARITY matching a parityhi2_cmp.
(paritydi2_cmp, paritysi2_cmp): Delete these define_insn_and_split.
(parityhi2, parityqi2): New expanders.
(parityhi2_cmp): Implement set parity flag with xorb insn.
(parityqi2_cmp): Implement set parity flag with testb insn.
New peephole2s to use these insns (UNSPEC PARITY) when appropriate.
gcc/testsuite/ChangeLog:
* gcc.target/i386/parity-3.c: New test.
* gcc.target/i386/parity-4.c: Likewise.
* gcc.target/i386/parity-5.c: Likewise.
* gcc.target/i386/parity-6.c: Likewise.
* gcc.target/i386/parity-7.c: Likewise.
* gcc.target/i386/parity-8.c: Likewise.
* gcc.target/i386/parity-9.c: Likewise.
commit fced594b313ddfb941913b2f59b10ce3514faaf6
Author: Iain Buclaw <ibuclaw@gdcproject.org>
Date: Sun Jun 7 19:42:58 2020 +0200
d: Merge upstream dmd 108ca1bcd.
Renames OutBuffer::peekString to OutBuffer::peekChars, and
OutBuffer::extractString to OutBuffer::extractChars. All callers have
been updated as appropriate.
Reviewed-on: https://github.com/dlang/dmd/pull/11247
gcc/d/ChangeLog:
* dmd/MERGE: Merge upstream dmd 108ca1bcd.
* d-diagnostic.cc (expand_d_format): Adjust to use extractChars().
* d-frontend.cc (Loc::toChars): Likewise.
* d-lang.cc (deps_write): Likewise.
(d_parse_file): Likewise.
* decl.cc (d_mangle_decl): Likewise.
* intrinsics.cc (maybe_set_intrinsic): Likewise.
commit c3a2ba10b272fd9581560604284da2a6283bcde0
Author: Iain Buclaw <ibuclaw@gdcproject.org>
Date: Sun Jun 7 16:50:46 2020 +0200
d: Merge upstream dmd b0df0e982
Adds a struct ParameterList to encapulate parameter and vararg
information in the front-end.
Reviewed-on: https://github.com/dlang/dmd/pull/11226
gcc/d/ChangeLog:
* dmd/MERGE: Merge upstream dmd b0df0e982.
* d-builtins.cc (build_frontend_type): Use VarArg for varargs_p.
* d-codegen.cc (declaration_type): Call TypeFunction::create with
argument VARARGnone.
(parameter_type): Likewise.
(d_build_call): Use new field names and member functions.
* d-target.cc (Target::cppParameterType): Call TypeFunction::create
with argument VARARGnone.
* types.cc (TypeVisitor::visit (TypeFunction *): Use new field names
and member functions.
commit 5aaccde3db39fac7e7f6677ceccc1eadd9c6a424
Author: Harald Anlauf <anlauf@gmx.de>
Date: Sun Jun 7 16:43:12 2020 +0200
PR fortran/95091 - Buffer overflows with submodules and long symbols
Add cast to fix bootstrap error with -Werror=sign-compare.
gcc/fortran/
PR fortran/95091
* class.c (gfc_hash_value): Add cast.
commit 761306fc5e60b1af1f7d0cc076da772a6c821cac
Author: Iain Buclaw <ibuclaw@gdcproject.org>
Date: Sun Jun 7 16:37:25 2020 +0200
d: Merge upstream dmd 1831b24ff.
Converts some global and param fields from pointers to value types.
Reviewed-on: https://github.com/dlang/dmd/pull/11245
gcc/d/ChangeLog:
* dmd/MERGE: Merge upstream dmd 1831b24ff.
* d-lang.cc (d_init_options): Remove initialization of updated fields.
(d_handle_option): Adjust for new field types.
commit b342cfd648e6658363c7c8fef83af8f59dba1795
Author: Harald Anlauf <anlauf@gmx.de>
Date: Sun Jun 7 14:47:24 2020 +0200
PR fortran/95091 - Buffer overflows with submodules and long symbols
With submodules, name mangling results in long internal symbols. This
requires adjustment of the sizes of temporaries to avoid buffer overflows.
2020-06-07 Harald Anlauf <anlauf@gmx.de>
gcc/fortran/
PR fortran/95091
* class.c (get_unique_type_string, gfc_hash_value): Enlarge
buffers, and check whether the strings returned by
get_unique_type_string() fit.
commit d8930b138788258aaad77b8fe821ce44d08a66d1
Author: Iain Buclaw <ibuclaw@gdcproject.org>
Date: Sun Jun 7 11:26:32 2020 +0200
d: Merge upstream dmd cef1e7991.
Adds a DString type, a struct that has a compatible layout with D
strings. Many parameters in the Global struct have been switched over
to this type, and users of these params have been adjust to use the
length or ptr field as appropriate.
gcc/d/ChangeLog:
* dmd/MERGE: Merge upstream dmd cef1e7991.
* d-lang.cc (d_parse_file): Adjust for new field types.
commit 557a40f599f64e40cc1b20254bf82acc775375f5
Author: guojiufu <guojiufu@linux.ibm.com>
Date: Thu May 28 14:10:39 2020 +0800
rs6000: allow cunroll to grow size according to -funroll-loop or -fpeel-loops
Previously, flag_unroll_loops was turned on at -O2 implicitly. This
also turned on cunroll with allowance size increasing, and cunroll
will unroll/peel the loop even the loop is complex like code in PR95018.
With this patch, size growth for cunroll is allowed only for if -funroll-loops
or -fpeel-loops or -O3 is specified explicitly.
gcc/ChangeLog
2020-06-07 Jiufu Guo <guojiufu@linux.ibm.com>
PR target/95018
* config/rs6000/rs6000.c (rs6000_option_override_internal):
Override flag_cunroll_grow_size.
commit 71489d8e7572388c6e9528a45e4942b7c7b67e4f
Author: guojiufu <guojiufu@linux.ibm.com>
Date: Thu May 28 13:42:23 2020 +0800
Introduce flag_cunroll_grow_size for cunroll
Currently GIMPLE complete unroller(cunroll) is checking
flag_unroll_loops and flag_peel_loops to see if allow size growth.
Beside affects curnoll, flag_unroll_loops also controls RTL unroler.
To have more freedom to control cunroll and RTL unroller, this patch
introduces flag_cunroll_grow_size. With this patch, we can control
cunroll and RTL unroller indepently.
gcc/ChangeLog
2020-06-07 Jiufu Guo <guojiufu@linux.ibm.com>
* common.opt (flag_cunroll_grow_size): New flag.
* toplev.c (process_options): Set flag_cunroll_grow_size.
* tree-ssa-loop-ivcanon.c (pass_complete_unroll::execute):
Use flag_cunroll_grow_size.
commit 905ba62ec96f8469c1085861d9ceec58fbee5709
Author: Thomas Koenig <tkoenig@gcc.gnu.org>
Date: Sun Jun 7 10:43:54 2020 +0200
Added test case for a PR which has been fixed in the meantime.
gcc/testsuite/ChangeLog:
PR tree-optimization/50439
* gfortran.dg/loop_interchange_2.f: New test.
commit 8f94b078cc11903bb54e5d57dfb44377c7e498b0
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date: Sun Jun 7 00:16:19 2020 +0000
Daily bump.
commit eca7a60bd24ebd91addd785e420a06d8f5086634
Author: Jan Hubicka <jh@suse.cz>
Date: Sat Jun 6 22:19:46 2020 +0200
Fix ICE in ODR enum streaming [PR95548]
gcc/ChangeLog:
2020-06-06 Jan Hubicka <hubicka@ucw.cz>
PR lto/95548
* ipa-devirt.c (struct odr_enum_val): Turn values to wide_int.
(ipa_odr_summary_write): Update streaming.
(ipa_odr_read_section): Update streaming.
gcc/testsuite/ChangeLog:
2020-06-06 Jan Hubicka <hubicka@ucw.cz>
* g++.dg/torture/pr95548.C: New test.
commit 1ca05dead046d88c4bd9e7b8f3129269a5c5eea4
Author: Max Filippov <jcmvbkbc@gmail.com>
Date: Sat Jun 6 01:26:56 2020 -0700
MAINTAINERS: Add myself as xtensa port maintainer
2020-06-06 Max Filippov <jcmvbkbc@gmail.com>
* MAINTAINERS: Add myself as xtensa port maintainer.
commit 2e6a6644db0ef0f369df4e5b1b337122d84c1a39
Author: Alexandre Oliva <oliva@adacore.com>
Date: Fri Jun 5 22:31:19 2020 -0300
[PR95456] avoid memcpy (_, NULL, 0) in gcc.c
Some newly-added code in gcc.c might call memcpy with a NULL source
pointer and zero-length inputs. Avoid such calls by rearranging the
code a little.
for gcc/ChangeLog
PR driver/95456
* gcc.c (do_spec_1): Don't call memcpy (_, NULL, 0).
commit 1a59f3db4a4174d02256be51e9e08e9c68478a41
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date: Sat Jun 6 00:16:29 2020 +0000
Daily bump.
commit 5bc13e5217f687f5d08a7022b4c6081befc54402
Author: Iain Buclaw <ibuclaw@gdcproject.org>
Date: Fri Jun 5 23:09:23 2020 +0200
d: Merge upstream dmd 740f3d1ea.
Backports the conversion of the parameter fields debugids and versionids
to Identifiers. The idea is that Identifiers should be used instead of
C strings where ever possible.
gcc/d/ChangeLog:
* dmd/MERGE: Merge upstream dmd 740f3d1ea.
* d-lang.cc (d_handle_option): Use new fields to save debug and
version levels passed over command-line.
(d_post_options): Add them to front-end here.
commit 3a73a6adb605df1462be176442851b5a37839fc0
Author: Martin Sebor <msebor@redhat.com>
Date: Fri Jun 5 14:59:16 2020 -0600
Temporarily remove an unintentionally commited test.
gcc/testsuite/ChangeLog:
* g++.dg/warn/Wnonnull5.C: Temporarily remove.
commit cecc73af4980004502f4c327b6c639125defb379
Author: Marek Polacek <polacek@redhat.com>
Date: Fri Jun 5 14:22:35 2020 -0400
c++: Make braced-init-list as template arg work with aggr init [PR95369]
Barry pointed out to me that our braced-init-list as a template-argument
extension doesn't work as expected when we aggregate-initialize. Since
aggregate list-initialization is a user-defined conversion sequence, we
allow it as part of a converted constant expression.
Co-authored-by: Jason Merrill <jason@redhat.com>
gcc/cp/ChangeLog:
PR c++/95369
* call.c (build_converted_constant_expr_internal): Allow
list-initialization.
gcc/testsuite/ChangeLog:
PR c++/95369
* g++.dg/cpp2a/nontype-class38.C: New test.
commit bcd96c9cce962ca5b2c6f8459597fb759f945ccf
Author: Harald Anlauf <anlauf@gmx.de>
Date: Fri Jun 5 20:30:34 2020 +0200
PR fortran/95530, PR fortran/95537 - Buffer overflows with long symbols
The testcases for PR95090 and PR95106 trigger buffer overflows with long
symbols that were found with an instrumented compiler. Enlarge the
affected buffers, and add checks that the buffers will suffice.
2020-06-05 Harald Anlauf <anlauf@gmx.de>
gcc/fortran/
PR fortran/95530
PR fortran/95537
* decl.c (gfc_match_decl_type_spec): Enlarge buffer, and enhance
string copy to detect buffer overflow.
* gfortran.h (gfc_common_head): Enlarge buffer.
* trans-common.c (finish_equivalences): Enhance string copy to
detect buffer overflow.
commit 608832716e27ca356ee38d14ae30b3ab525884ea
Author: Iain Sandoe <iain@sandoe.co.uk>
Date: Fri Jun 5 15:09:39 2020 +0100
coroutines: co_returns are statements, not expressions.
This corrects an error in the CO_RETURN_EXPR tree
class.
gcc/cp/ChangeLog:
* cp-tree.def (CO_RETURN_EXPR): Correct the class
to use tcc_statement.
commit 1c7bcefbc95220cd74cee7c239f6d723f75a0ccc
Author: Mark Wielaard <mark@klomp.org>
Date: Thu May 28 02:55:36 2020 +0200
diagnostics: Consistently add fixit hint for implicit builtin declaration
There are two warnings that might trigger when a builtin function is
used but not declared yet. Both called through implicitly_declare in
c-decl. The first in implicit_decl_warning does warn for builtins,
but does not add a fixit hint for them (only for non-builtins when
a header is suggested through lookup_name_fuzzy). This warning is
guarded by -Wimplicit-function-declaration. The second warning, which
does include a fixit hint if possible, is given when the implicit
builtin declaration has an incompatible signature. This second warning
cannot be disabled.
This setup means that you only get a fixit-hint for usage of builtin
functions where the implicit signature is different than the actual
signature of the builtin. No fixit hints with header suggestions
are ever generated for builtins like abs, isdigit or putchar.
It seems more consistent to always generate a fixit-hint if possible
for the -Wimplicit-function-declaration warning. And for the second
warning to make it depend on -Wbuiltin-declaration-mismatch like
other warnings about builtin declaration mismatches.
Include a new test to show we get fixit-hints for abs, isdigit and
putchar now. Some small tweaks to existing tests to show the
effect of -Wno-builtin-declaration-mismatch with this change. And
a testcase to show that #pragma GCC diagnostic ignored now works.
gcc/c/ChangeLog:
* c-decl.c (implicit_decl_warning): When warned and olddecl is
an undeclared builtin, then add a fixit header hint, if found.
(implicitly_declare): Add OPT_Wbuiltin_declaration_mismatch to
warning_at about implicit builtin declaration type mismatch.
gcc/testsuite/ChangeLog:
* gcc.dg/missing-header-fixit-3.c: Add
-Wno-implicit-function-declaration.
* gcc.dg/missing-header-fixit-4.c: Add new expected output.
* gcc.dg/missing-header-fixit-5.c: New testcase.
* gcc.dg/Wbuiltin-declaration-mismatch-ignore.c: Likewise.
commit 0cdc55f5ed881436c49d313b6cead244bdcf0654
Author: Iain Buclaw <ibuclaw@gdcproject.org>
Date: Fri Jun 5 19:27:29 2020 +0200
d: Merge upstream dmd f5638c7b8.
Adds a CHECKENABLE enum, uses it for all contract parameters for
consistency in state checking.
gcc/d/ChangeLog:
* dmd/MERGE: Merge upstream dmd f5638c7b8.
* d-builtins.cc (d_init_versions): Use new CHECKENABLE enum.
* d-codegen.cc (array_bounds_check): Likewise.
(build_frame_type): Likewise.
(get_frameinfo): Likewise.
* d-lang.cc (d_init_options): Likewise.
(d_init_options_struct): Don't initialize x_flag_bounds_check.
(d_handle_option): Use new CHECKENABLE enum.
(d_post_options): Likewise. Set flag_bounds_check here.
* expr.cc (ExprVisitor::visit(AssertExp *)): Use new CHECKENABLE enum.
commit 5094c4400a8687dcf44f5993aee3a88e98519f3b
Author: Jason Merrill <jason@redhat.com>
Date: Thu Jun 4 15:56:57 2020 -0400
c++: Fix pretty-print of pointer minus integer.
For whatever reason, GCC internally represents a pointer minus an integer as
a pointer plus a very large unsigned integer. But exposing that to users is
unsightly, and it's easy enough to show the real value.
gcc/cp/ChangeLog:
* error.c (dump_binary_op): Handle negative operand to
POINTER_PLUS_EXPR.
gcc/c-family/ChangeLog:
* c-pretty-print.c (pp_c_additive_expression): Handle negative
operand to POINTER_PLUS_EXPR.
gcc/testsuite/ChangeLog:
* g++.dg/cpp0x/constexpr-ptrsub2.C: New test.
commit 640e05e02b567fa5ccf4c207e6fc6c3e9a93b17c
Author: Tom Tromey <tromey@adacore.com>
Date: Fri Jun 5 06:40:14 2020 -0600
fortran/95509 - fix spellcheck-operator.f90 regression
My earlier patch to add case handling to the spell checker caused a
Fortran regression. I believe I must have misread the test results.
This patch fixes the problem by changing the cutoff. I chose this
value because the previous patch effectively multiplied the result of
get_edit_distance by 2 (unless a case change is involved).
gcc/fortran/ChangeLog:
PR fortran/95509
* misc.c (gfc_closest_fuzzy_match): Update cutoff value
computation.
commit 1afc4672561a41dfbf4e3f2c1f35f7a5b7a20339
Author: Thomas Schwinge <thomas@codesourcery.com>
Date: Wed May 20 10:56:55 2020 +0200
[OpenACC 'exit data'] Strip 'GOMP_MAP_STRUCT' mappings
These are not itself necessary for OpenACC 'exit data' directives, and are
skipped over (now) in libgomp. We might as well not emit them to start with,
in line with the equivalent OpenMP directive. We keep the no-op handling in
libgomp for the reason of backward compatibility.
gcc/
* gimplify.c (gimplify_adjust_omp_clauses): Remove
'GOMP_MAP_STRUCT' mapping from OpenACC 'exit data' directives.
gcc/testsuite/
* c-c++-common/goacc/struct-enter-exit-data-1.c: New file.
libgomp/
* oacc-mem.c (goacc_exit_data_internal) <GOMP_MAP_STRUCT>: Explain
special handling.
Co-Authored-By: Julian Brown <julian@codesourcery.com>
commit 1809628fcff6f512206efd0ae03a3faccc4096f2
Author: Thomas Schwinge <thomas@codesourcery.com>
Date: Wed May 20 10:53:33 2020 +0200
[OpenACC 'exit data'] Simplify 'GOMP_MAP_STRUCT' handling
libgomp/
* oacc-mem.c (goacc_exit_data_internal) <GOMP_MAP_STRUCT>:
Simplify.
Co-Authored-By: Julian Brown <julian@codesourcery.com>
commit 9643f5bbe237764cbefc975e934d1281f47ee3c2
Author: Julian Brown <julian@codesourcery.com>
Date: Thu Jun 4 06:40:53 2020 -0700
Add 'libgomp.oacc-c-c++-common/struct-copyout-{1,2}.c'
libgomp/
* testsuite/libgomp.oacc-c-c++-common/struct-copyout-1.c: New test.
* testsuite/libgomp.oacc-c-c++-common/struct-copyout-2.c: New test.
Reviewed-by: Thomas Schwinge <thomas@codesourcery.com>
commit 5905cbdbcf6d760303ca87f27e04824f26976de4
Author: Iain Buclaw <ibuclaw@gdcproject.org>
Date: Fri Jun 5 17:50:49 2020 +0200
d: Merge upstream dmd 56f0a65c4.
Updates the Target interface, removing static from all members, so all
field accesses and member function calls go through a single global
'target'. Information relating to extern ABI are now in TargetC,
TargetCPP, and TargetObjC for each supported language respectively.
Reviewed-on: https://github.com/dlang/dmd/pull/11228
gcc/d/ChangeLog:
* dmd/MERGE: Merge upstream dmd 56f0a65c4.
* d-builtins.cc (build_frontend_type): Remove static.
(d_build_builtins_module): Use target.va_listType() to get front-end
type for va_list.
(d_init_builtins): Move creation of va_list to Target::va_listType.
* d-codegen.cc (build_interface_binfo): Use new target global.
(build_vindex_ref): Likewise.
(identity_compare_p): Likewise.
* d-ctfloat.cc (CTFloat::parse): Likewise.
* d-lang.cc (d_init): Likewise.
* d-port.cc (Port::isFloat32LiteralOutOfRange): Likewise.
(Port::isFloat64LiteralOutOfRange): Likewise.
* d-target.cc (define_float_constants): Initialize constants through a
reference, instead of setting globals.
(Target::_init): Initialize new fields instead of setting globals.
(Target::va_listType): Build front-end type from va_list_type_node.
(Target::toCppMangle): Renamed to ...
(TargetCPP::toMangle): ... this.
(Target::cppTypeInfoMangle): Renamed to ...
(TargetCPP::typeInfoMangle): ... this.
(Target::cppTypeMangle): Renamed to ...
(TargetCPP::typeMangle): this.
(Target::cppParameterType): Renamed to ...
(TargetCPP::parameterType): ... this. Use target.va_listType() to get
front-end type for va_list.
(Target::cppFundamentalType): Renamed to ...
(TargetCPP::fundamentalType): ... this.
* d-tree.h (build_frontend_type): Declare.
* decl.cc (base_vtable_offset): Use new target global.
* typeinfo.cc (layout_classinfo_interfaces): Likewise.
(layout_cpp_typeinfo): Likewise.
* types.cc (valist_array_p): Use target.va_listType() to get front-end
type for va_list.
(layout_aggregate_type): Use new target global.
commit 300452d7bf1d3a0ff3f7585a1166f3d473c70556
Author: Martin Sebor <msebor@redhat.com>
Date: Fri Jun 5 09:34:39 2020 -0600
Adjust text of expected warnings to g:b825a22890740f341eae566af27e18e528cd29a7.
gcc/testsuite/ChangeLog:
* c-c++-common/goacc/uninit-use-device-clause.c: Adjust.
* c-c++-common/pr59223.c: Same.
* g++.dg/warn/Wnonnull5.C: Same.
* gcc.dg/pr59924.c: Same.
* gcc.dg/ubsan/pr81981.c: Same.
* gcc.dg/ubsan/pr89284.c: Same.
* gfortran.dg/goacc/uninit-use-device-clause.f95: Same.
commit 89b49a963c5f997df1c19ff9cde18d3d45c3aa15
Author: Arnaud Charlet <charlet@adacore.com>
Date: Sun Feb 9 14:52:12 2020 -0500
[Ada] Replace ? by ?? in Error_Msg_N
2020-06-05 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* sem_prag.adb (Validate_Compile_Time_Warning_Or_Error): Use ??.
commit f67a6e93a15d3d1e00f35ba8f2fd231cad67048c
Author: Arnaud Charlet <charlet@adacore.com>
Date: Sun Feb 9 14:50:50 2020 -0500
[Ada] Update comments wrt Ada 83 handling
2020-06-05 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* cstand.adb (Create_Standard): Update comments.
commit 4ccf713e545cc77ba13218c12ec47d21b01bab4e
Author: Arnaud Charlet <charlet@adacore.com>
Date: Mon Feb 3 05:22:57 2020 -0500
[Ada] Support 'Reduce under -gnatX
2020-06-05 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* scng.adb (Scan): Fix typo to take into account all future
versions of Ada.
* sem_attr.ads (Attribute_Impl_Def): Add Attribute_Reduce for
now.
* sem_attr.adb (Analyze_Attribute): Only allow 'Reduce under
-gnatX.
* snames.ads-tmpl (Name_Reduce): Update comment.
commit 3af132b801a6e58c530a6571117df51bca6f6572
Author: Thomas Quinot <quinot@adacore.com>
Date: Thu Feb 6 19:03:24 2020 +0100
[Ada] Add note about gnatcov reliance on thunk names
2020-06-05 Thomas Quinot <quinot@adacore.com>
gcc/ada/
* exp_disp.adb (Expand_Interface_Thunk): Add comment about
gnatcov reliance on specific name used for thunks.
commit faf250080011f5e92a6ba5ee5af22b12654992ba
Author: Ed Schonberg <schonberg@adacore.com>
Date: Wed Feb 5 11:38:38 2020 -0500
[Ada] Subtype inherits Atomic flag from base type
2020-06-05 Ed Schonberg <schonberg@adacore.com>
gcc/ada/
* sem_ch3.adb (Analyze_Subtype_Declaration): For scalar types,
and for subtype declarations without a constraint, subtype
inherits Atomic flag from base type.
commit bf44027a464e71142999f1ba454469fc80453fd9
Author: Piotr Trojanek <trojanek@adacore.com>
Date: Thu Feb 6 11:12:45 2020 +0100
[Ada] Fix punctuation in description of Enum_Rep attribute
2020-06-05 Piotr Trojanek <trojanek@adacore.com>
gcc/ada/
* doc/gnat_rm/implementation_defined_attributes.rst (Enum_Rep):
Remove extra colon.
* gnat_rm.texi: Regenerate.
commit 32115be843e3d7bd344b1e899deee27aef9a3b65
Author: Eric Botcazou <ebotcazou@adacore.com>
Date: Wed Feb 5 18:02:03 2020 +0100
[Ada] Make the Has_Dynamic_Range_Check flag obsolete
2020-06-05 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* atree.adb (New_Copy): Clear Has_Dynamic_Range_Check on
subexpression nodes.
* checks.adb (Append_Range_Checks): Assert that the node
doesn't have the Has_Dynamic_Range_Check flag set.
(Insert_Range_Checks): Likewise.
* exp_ch3.adb (Expand_N_Subtype_Indication): Do not apply
range checks for a full type or object declaration.
* sem_ch3.ads: Move with and use clauses for Nlists to...
(Process_Range_Expr_In_Decl): Change default to No_List for
the Check_List parameter.
* sem_ch3.adb: ...here.
(Process_Range_Expr_In_Decl): Likewise. When the insertion
node is a declaration, only insert on the list if is present
when the declaration involves discriminants, and only insert
on the node when there is no list otherwise.
commit 0ad46f04488199557f2b407f8d10839ef5c6e604
Author: Piotr Trojanek <trojanek@adacore.com>
Date: Wed Feb 5 17:22:17 2020 +0100
[Ada] Do not create an empty list of nodes that confuses GNATprove
2020-06-05 Piotr Trojanek <trojanek@adacore.com>
gcc/ada/
* sem_aggr.adb (Resolve_Record_Aggregate): Create the
N_Aggregate node with its Expressions field set to No_List and
not to an empty list.
commit f8ca4dd657f767c5f7da335462a5150ced368697
Author: Dmitriy Anisimkov <anisimko@adacore.com>
Date: Thu Jan 23 15:05:58 2020 +0600
[Ada] Optimize Normalize_Pathname
2020-06-05 Dmitriy Anisimkov <anisimko@adacore.com>
gcc/ada/
* libgnat/s-os_lib.adb (Is_Dirsep): Moved from Build_Path to
package level to reuse.
(Normalize_Pathname.Final_Value): Reduce 2 'if' statements to
one.
(Normalize_Pathname.Fill_Directory): New procedure instead of
function Get_Directory. Remove slash to backslash conversion and
drive letter uppercasing on Windows.
commit c8e89a6de5d926701e0a68dba5ace9f27c33725a
Author: Arnaud Charlet <charlet@adacore.com>
Date: Sun Feb 2 19:42:50 2020 +0100
[Ada] Spurious assert failure in Walk_Library_Items
2020-06-05 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* sem.adb (Assert_Done): Relax check for main unit, as it was
overzealous in the case of the main unit itself.
commit 2db2527a8dc7e2d2da8893a339ec863b72079bb4
Author: Piotr Trojanek <trojanek@adacore.com>
Date: Thu Jan 16 18:56:38 2020 +0100
[Ada] Use Is_Incomplete_Type instead of a low-level Ekind test
2020-06-05 Piotr Trojanek <trojanek@adacore.com>
gcc/ada/
* exp_ch3.adb, sem_ch8.adb, sem_util.adb: Use Is_Incomplete_Type
to make the code easier to read.
commit 50554999f23127a962ef17f1ea06961a09811f75
Author: Piotr Trojanek <trojanek@adacore.com>
Date: Thu Jan 16 18:50:05 2020 +0100
[Ada] Simplify iteration over components
2020-06-05 Piotr Trojanek <trojanek@adacore.com>
gcc/ada/
* einfo.adb: Minor reformatting.
* sem_util.adb (Has_Full_Default_Initialization,
Is_Partially_Initialized_Type, Caller_Known_Size_Record,
Large_Max_Size_Mutable): Iterate with
First_Component/Next_Component; rename Ent to Comp.
commit c7d193178f7b3a7747849d4f8574091bc2d4a7f8
Author: Eric Botcazou <ebotcazou@adacore.com>
Date: Wed Feb 5 00:13:00 2020 +0100
[Ada] Fix incorrect initialization for array of non-standard enumeration type
2020-06-05 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Use
Expr_Rep_Value instead of Expr_Value to obtain the equivalent
integer value.
* sem_eval.ads (Expr_Value): Document more supported cases.
* sem_eval.adb (Expr_Rep_Value): Copy missing cases from
Exp_Value.
commit a2754419d08d5a49551fb817a01067e81c3da3f4
Author: Bob Duff <duff@adacore.com>
Date: Tue Feb 4 11:08:32 2020 -0500
[Ada] Put_Image attribute: Rtsfind cleanups
2020-06-05 Bob Duff <duff@adacore.com>
gcc/ada/
* rtsfind.adb, rtsfind.ads: Move subtypes of RTU_Id into package
body, because they are not needed by clients. Change "Child_" to
"Descendant", because grandchildren and great grandchildren are
involved. Replace all the repetitive comments with a single
concise one. Change the parent subtypes to be more consistent;
use the most specific parent.
commit d1987ffdc27f0302dba0958083d69b7241194c1c
Author: Piotr Trojanek <trojanek@adacore.com>
Date: Mon Feb 3 17:44:41 2020 +0100
[Ada] Move routine for detecting special Text_IO packages from GNATprove
2020-06-05 Piotr Trojanek <trojanek@adacore.com>
gcc/ada/
* rtsfind.ads, rtsfind.adb (Is_Text_IO_Special_Package): Moved
from the GNATprove backend to the frontend.
commit ca124a628569b6f3038223b690d051f9ab5344f1
Author: Yannick Moy <moy@adacore.com>
Date: Mon Feb 3 16:30:34 2020 +0100
[Ada] Add comment about function only used in CodePeer
2020-06-05 Yannick Moy <moy@adacore.com>
gcc/ada/
* sem_util.ads: Add comment about function only used in
CodePeer.
commit 2107ca0242fdbe6f21c9c33c0fd1b812ae944404
Author: Ed Schonberg <schonberg@adacore.com>
Date: Fri Jan 31 12:28:21 2020 -0500
[Ada] Spurious error on address clause in task body
2020-06-05 Ed Schonberg <schonberg@adacore.com>
gcc/ada/
* sem_ch9.adb, (Analyze_Task_Body): After analying the task
body, indicate that all local variables have no delayed aspects.
This prevents improper later calls to
Check_Aspect_At_End_Of_Declarations, that would happen when the
constructed task_procedure body (generated during expansion) is
analyzed. The legality of aspect specifications that may appear
on local declarations has already been established, and it is in
general not possible to recheck them properly during expansion,
when visibility may not be fully established.
commit a8aecf319aaa77429584ac8c18f556c2577616b9
Author: Piotr Trojanek <trojanek@adacore.com>
Date: Fri Jan 31 21:13:31 2020 +0100
[Ada] Add missing Global contract to Ada.Containers.Functional_Vectors
2020-06-05 Piotr Trojanek <trojanek@adacore.com>
gcc/ada/
* libgnat/a-cofuve.ads (First): Add Global contract.
commit a9969d7feb35306ba82bc5d605d9c8c48f1c8271
Author: Arnaud Charlet <charlet@adacore.com>
Date: Fri Jan 31 15:53:42 2020 -0500
[Ada] AI12-0207 Convention of anonymous access types
2020-06-05 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* sem_prag.adb (Set_Convention_From_Pragma): Set the convention
of anonymous access array components.
commit 632d4a43d7ab74554898509d7a99edccf09819cc
Author: Arnaud Charlet <charlet@adacore.com>
Date: Fri Jan 31 09:18:37 2020 -0500
[Ada] AI12-0336 Meaning of Time_Offset
2020-06-05 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* libgnat/a-calfor.ads, libgnat/a-catizo.ads,
libgnat/a-catizo.adb (Local_Time_Offset, Local_Image): New.
(UTC_Time_Offset): Now a renaming of Local_Time_Offset.
commit bec136971a7a45de978c398b5ecaaea9d73eb501
Author: Eric Botcazou <ebotcazou@adacore.com>
Date: Fri Jan 31 11:56:30 2020 +0100
[Ada] Fix assertion failure on double rederivation of private type
2020-06-05 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* sem_ch3.adb (Available_Full_View): New function returning
either the full or the underlying full view.
(Build_Full_Derivation): Add guard for the full view.
(Copy_And_Build): Retrieve the underlying full view, if any,
also if deriving a completion.
(Build_Derived_Private_Type): Use Available_Full_View throughout
to decide whether a full derivation must be done.
commit e0fd1b9c9d906f9693bb4e7d56a37ec5adf4bc0a
Author: Bob Duff <duff@adacore.com>
Date: Fri Jan 31 08:28:45 2020 -0500
[Ada] Put_Image attribute
2020-06-05 Bob Duff <duff@adacore.com>
gcc/ada/
* exp_attr.adb, exp_ch11.adb, exp_imgv.adb, exp_tss.ads,
par-ch4.adb, sem_attr.adb, sem_util.ads: Misc cleanup.
commit c3c80e3c3adde1f96d9f5070eccf1184a97ce2cd
Author: Arnaud Charlet <charlet@adacore.com>
Date: Fri Jan 31 05:47:01 2020 -0500
[Ada] AI12-0144 Make Discrete_Random more flexible
2020-06-05 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* libgnat/a-nudira.ads, libgnat/a-nudira.adb (Random): New
function.
commit 61fa3fd79ff9bf41651ca99f2f13902e91ca736d
Author: Arnaud Charlet <charlet@adacore.com>
Date: Fri Jan 31 07:52:25 2020 -0500
[Ada] AI12-0237 Getting the representation of an enumeration value
2020-06-05 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* sem_attr.ads (Attribute_Impl_Def): Remove Enum_Rep/Val.
* sem_attr.adb (Attribute_20): New, move Enum_Rep/Val here.
(Analyze_Attribute): Take Attribute_20 into account.
commit 79d09a491c9ca17e2159d73e0e9855d64d6fa7cf
Author: Arnaud Charlet <charlet@adacore.com>
Date: Fri Jan 31 06:22:26 2020 -0500
[Ada] AI12-0318 No_IO should apply to Ada.Directories
2020-06-05 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* restrict.ads (Unit_Array): Add a-direct.
commit f191b2c8646a8d37a869752919fbfbe39a94cc72
Author: Arnaud Charlet <charlet@adacore.com>
Date: Fri Jan 31 06:05:01 2020 -0500
[Ada] AI12-0235 System.Storage_Pools should be pure
2020-06-05 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* libgnat/s-stopoo.ads: Mark package Pure and leave room for
Nonblocking once this aspect is supported.
commit efd0843da81aafee053afe573bfa944bbd1ee32b
Author: Eric Botcazou <ebotcazou@adacore.com>
Date: Thu Jan 30 21:48:27 2020 +0100
[Ada] Add No_Truncation flag on view conversion for GNAT-LLVM
2020-06-05 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* exp_attr.adb (Expand_N_Attribute_Reference) <Valid_Scalars>:
Set the No_Truncation flag on the unchecked conversion built for
scalar types.
commit 5620a9cd825f48f2ffa123de7c35a69f1dcd975f
Author: Bob Duff <duff@adacore.com>
Date: Thu Jan 30 14:45:19 2020 -0500
[Ada] Assertion_Policy (Ignore) ignores invariants
2020-06-05 Bob Duff <duff@adacore.com>
gcc/ada/
* einfo.adb, einfo.ads, exp_util.adb: Remove Invariants_Ignored
flag.
* sem_prag.adb (Invariant): Instead of setting a flag to be
checked elsewhere, remove the pragma as soon as it is analyzed
and checked for legality.
commit 6c8e70fe86da1b52160aa380f30cbb1bf644c407
Author: Eric Botcazou <ebotcazou@adacore.com>
Date: Thu Jan 30 13:23:31 2020 +0100
[Ada] Rename parameter of routines in Checks
2020-06-05 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* checks.ads (Apply_Length_Check): Rename Ck_Node parameter to
Expr.
(Apply_Range_Check): Likewise.
(Get_Range_Checks): Likewise.
* checks.adb (Apply_Float_Conversion_Check): Likewise.
(Apply_Selected_Length_Checks): Likewise.
(Apply_Selected_Range_Checks): Likewise.
(Guard_Access): Likewise.
(Selected_Length_Checks): Likewise. Also avoid shadowing in
child procedures.
(Selected_Range_Checks): Likewise.
commit a4c17870b85470fa3b4727bfe2dbac7ca7464e50
Author: Arnaud Charlet <charlet@adacore.com>
Date: Thu Jan 30 03:09:19 2020 -0500
[Ada] Minor wording changes wrt Ada 202x
2020-06-05 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* par-ch3.adb, par-ch4.adb, scng.adb, sem_aggr.adb,
sem_ch10.adb, sem_ch12.adb, sem_prag.adb: Update wording: change
Ada_2020 to Ada 2020 in comments and mention -gnat2020 instead
of -gnatX switch.
commit d3da83f66f13d371f8bb73443fed32d5c820484d
Author: Iain Buclaw <ibuclaw@gdcproject.org>
Date: Fri Jun 5 11:37:47 2020 +0200
d: Merge upstream dmd 6d5bffa54
Removes an unused parameter from Condition::include(), all callers have
been updated in the front-end.
Reviewed-on: https://github.com/dlang/dmd/pull/11229
gcc/d/ChangeLog:
* dmd/MERGE: Merge upstream dmd 6d5bffa54.
* d-builtins.cc (maybe_set_builtin_1): Update call to
Condition::include().
* decl.cc (DeclVisitor::visit(AttribDeclaration *)): Likewise.
* types.cc (layout_aggregate_members): Likewise.
commit 9758d196f57950ea89baa5cdf6ebd7125b5056e0
Author: Richard Biener <rguenther@suse.de>
Date: Fri Jun 5 10:13:27 2020 +0200
tree-optimization/95539 - fix SLP_TREE_REPRESENTATIVE vs. dr_info
This fixes a disconnect between the stmt_info used for dr_info
analysis and the one in SLP_TREE_REPRESENTATIVE with a temporary
workaround.
2020-06-05 Richard Biener <rguenther@suse.de>
PR tree-optimization/95539
* tree-vect-data-refs.c
(vect_slp_analyze_and_verify_instance_alignment): Use
SLP_TREE_REPRESENTATIVE for the data-ref check.
* tree-vect-stmts.c (vectorizable_load): Reset stmt_info
back to the first scalar stmt rather than the
SLP_TREE_REPRESENTATIVE to match previous behavior.
* gcc.dg/vect/pr95539.c: New testcase.
commit 9a182ef9ee011935d827ab5c6c9a7cd8e22257d8
Author: Fei Yang <felix.yang@huawei.com>
Date: Fri Jun 5 10:34:59 2020 +0100
expand: Simplify removing subregs when expanding a copy [PR95254]
In rtl expand, if we have a copy that matches one of the following patterns:
(set (subreg:M1 (reg:M2 ...)) (subreg:M1 (reg:M2 ...)))
(set (subreg:M1 (reg:M2 ...)) (mem:M1 ADDR))
(set (mem:M1 ADDR) (subreg:M1 (reg:M2 ...)))
(set (subreg:M1 (reg:M2 ...)) (constant C))
where mode M1 is equal in size to M2, try to detect whether the mode change
involves an implicit round trip through memory. If so, see if we can avoid
that by removing the subregs and doing the move in mode M2 instead.
2020-06-05 Felix Yang <felix.yang@huawei.com>
gcc/
PR target/95254
* expr.c (emit_move_insn): Check src and dest of the copy to see
if one or both of them are subregs, try to remove the subregs when
innermode and outermode are equal in size and the mode change involves
an implicit round trip through memory.
gcc/testsuite/
PR target/95254
* gcc.target/aarch64/pr95254.c: New test.
* gcc.target/i386/pr67609.c: Check "movq\t%xmm0" instead of "movdqa".
commit 892b51cb73f24157391cd18c2215e8d703af97e7
Author: Jakub Jelinek <jakub@redhat.com>
Date: Fri Jun 5 10:44:23 2020 +0200
ix86: Improve __builtin_c[lt]z followed by extension [PR95535]
In January I've added patterns to optimize SImode -> DImode sign or zero
extension of __builtin_popcount, this patch does the same for
__builtin_c[lt]z. Like most other instructions, the [tl]zcntl instructions
clear the upper 32 bits of the destination register and as the instructions
only result in values 0 to 32 inclusive, both sign and zero extensions
behave the same.
2020-06-05 Jakub Jelinek <jakub@redhat.com>
PR target/95535
* config/i386/i386.md (*ctzsi2_zext, *clzsi2_lzcnt_zext): New
define_insn_and_split patterns.
(*ctzsi2_zext_falsedep, *clzsi2_lzcnt_zext_falsedep): New
define_insn patterns.
* gcc.target/i386/pr95535-1.c: New test.
* gcc.target/i386/pr95535-2.c: New test.
commit 6ea6c4978111d146db8d33c80d9da93d7bd2bc8d
Author: Jonathan Wakely <jwakely@redhat.com>
Date: Fri May 22 07:22:50 2020 +0100
Add new/delete to struct occurence
This adds an example how to use new/delete operators to pool
allocated objects.
2020-06-04 Jonathan Wakely <jwakely@redhat.com>
* alloc-pool.h (object_allocator::remove_raw): New.
* tree-ssa-math-opts.c (struct occurrence): Use NSMDI.
(occurrence::occurrence): Add.
(occurrence::~occurrence): Likewise.
(occurrence::new): Likewise.
(occurrence::delete): Likewise.
(occ_new): Remove.
(insert_bb): Use new occurence (...) instead of occ_new.
(register_division_in): Likewise.
(free_bb): Use delete occ instead of manually removing
from the pool.
commit 80d6f89e78fc3b772701988cc73aa8e8006283be
Author: Richard Biener <rguenther@suse.de>
Date: Thu Jun 4 13:44:58 2020 +0200
middle-end/95493 - bogus MEM_ATTRS for variable array access
The following patch avoids keeping the inherited MEM_ATTRS when
set_mem_attributes_minus_bitpos is called with a variable ARRAY_REF.
The inherited ones may not reflect the correct offset and neither
does the updated alias-set match the inherited MEM_EXPR. This all
ends up confusing path-based alias-analysis, causing wrong-code.
The fix is to stop not adopting a MEM_EXPR for certain kinds of
expressions and instead handle everything we can. There's still
the constant kind trees case which I'm too lazy to look into right
now. I did refrain from adding SSA_NAME there and instead avoided
calling set_mem_attributes_minus_bitpos when debug expression
expansion ended up expanding a SSA definition RHS which should
already have taken care of setting the appropriate MEM_ATTRS.
2020-06-04 Richard Biener <rguenther@suse.de>
PR middle-end/95493
* cfgexpand.c (expand_debug_expr): Avoid calling
set_mem_attributes_minus_bitpos when we were expanding
an SSA name.
* emit-rtl.c (set_mem_attributes_minus_bitpos): Remove
ARRAY_REF special-casing, add CONSTRUCTOR to the set of
special-cases we do not want MEM_EXPRs for. Assert
we end up with reasonable MEM_EXPRs.
* g++.dg/torture/pr95493.C: New testcase.
commit 6c6931a353a6c41b2c9eb4bd2abec540104e940f
Author: Cui,Lili <lili.cui@intel.com>
Date: Thu Jun 4 15:01:43 2020 +0800
Fix bitmask conflict between PTA_AVX512VP2INTERSECT and PTA_WAITPKG in gcc/config/i386/i386.h
2020-06-05 Lili Cui <lili.cui@intel.com>
gcc/ChangeLog:
PR target/95525
* config/i386/i386.h (PTA_WAITPKG): Change bitmask value.
commit 3add342502b9506b6f1a0f70c156a97a7b38ef4d
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date: Fri Jun 5 00:16:30 2020 +0000
Daily bump.
commit f2242ec0d3f1bb13c78ef3c21e0354d84fe57222
Author: Jonathan Wakely <jwakely@redhat.com>
Date: Thu Jun 4 23:20:49 2020 +0100
libstdc++: Remove workarounds for constrained nested class templates
With PR c++/92078 and PR c++/92103 both fixed, nested class templates
can now be constrained. That means a number of namespace-scope helpers
can be moved to the class scope, so they're only visible where they're
needed.
* include/bits/iterator_concepts.h (__detail::__ptr, __detail::__ref)
(__detail::__cat, __detail::__diff): Move to class scope in the
relevant __iterator_traits specializations.
(__iterator_traits<>): Use nested class templates instead of ones from
namespace __detail.
* include/bits/stl_iterator.h (__detail::__common_iter_ptr): Move to
class scope in iterator_traits<common_iterator<I, S>>.
(iterator_traits<common_iterator<I, S>>): Use nested class template
instead of __detail::__common_iter_ptr.
commit b825a22890740f341eae566af27e18e528cd29a7
Author: Martin Sebor <msebor@redhat.com>
Date: Thu Jun 4 16:06:10 2020 -0600
Implement a solution for PR middle-end/10138 and PR middle-end/95136.
PR middle-end/10138 - warn for uninitialized arrays passed as const arguments
PR middle-end/95136 - missing -Wuninitialized on an array access with a variable offset
gcc/c-family/ChangeLog:
PR middle-end/10138
PR middle-end/95136
* c-attribs.c (append_access_attrs): Handle attr_access::none.
(handle_access_attribute): Same.
gcc/ChangeLog:
PR middle-end/10138
PR middle-end/95136
* attribs.c (init_attr_rdwr_indices): Move function here.
* attribs.h (rdwr_access_hash, rdwr_map): Define.
(attr_access): Add 'none'.
(init_attr_rdwr_indices): Declared function.
* builtins.c (warn_for_access)): New function.
(check_access): Call it.
* builtins.h (checK-access): Add an optional argument.
* calls.c (rdwr_access_hash, rdwr_map): Move to attribs.h.
(init_attr_rdwr_indices): Declare extern.
(append_attrname): Handle attr_access::none.
(maybe_warn_rdwr_sizes): Same.
(initialize_argument_information): Update comments.
* doc/extend.texi (attribute access): Document 'none'.
* tree-ssa-uninit.c (struct wlimits): New.
(maybe_warn_operand): New function.
(maybe_warn_pass_by_reference): Same.
(warn_uninitialized_vars): Refactor code into maybe_warn_operand.
Also call for function calls.
(pass_late_warn_uninitialized::execute): Adjust comments.
(execute_early_warn_uninitialized): Same.
gcc/testsuite/ChangeLog:
PR middle-end/10138
PR middle-end/95136
* c-c++-common/Wsizeof-pointer-memaccess1.c: Prune out valid
Wuninitialized.
* c-c++-common/uninit-pr51010.c: Adjust expected warning format.
* c-c++-common/goacc/uninit-dim-clause.c: Same.
* c-c++-common/goacc/uninit-firstprivate-clause.c: Same.
* c-c++-common/goacc/uninit-if-clause.c: Same.
* c-c++-common/gomp/pr70550-1.c: Same.
* c-c++-common/gomp/pr70550-2.c: Adjust.
* g++.dg/20090107-1.C: Same.
* g++.dg/20090121-1.C: Same.
* g++.dg/ext/attr-access.C: Avoid -Wuninitialized.
* gcc.dg/tree-ssa/forwprop-6.c: Prune out -Wuninitialized.
* gcc.dg/Warray-bounds-52.c: Prune out valid -Wuninitialized.
* gcc.dg/Warray-bounds-53.c: Same.
* gcc.dg/Warray-bounds-54.c: Same.
* gcc.dg/Wstringop-overflow-33.c: New test.
* gcc.dg/attr-access-none.c: New test.
* gcc.dg/attr-access-read-only.c: Adjust.
* gcc.dg/attr-access-read-write.c: Same.
* gcc.dg/attr-access-write-only.c: Same.
* gcc.dg/pr71581.c: Adjust text of expected warning.
* gcc.dg/uninit-15.c: Same.
* gcc.dg/uninit-32.c: New test.
* gcc.dg/uninit-33.c: New test.
* gcc.dg/uninit-34.c: New test.
* gcc.dg/uninit-36.c: New test.
* gcc.dg/uninit-B-O0.c: Adjust text of expected warning.
* gcc.dg/uninit-I-O0.c: Same.
* gcc.dg/uninit-pr19430-O0.c: Same.
* gcc.dg/uninit-pr19430.c: Same.
* gcc.dg/uninit-pr95136.c: New test.
* gfortran.dg/assignment_4.f90: Expect -Wuninitialized.
* gfortran.dg/goacc/uninit-dim-clause.f95: Adjust text of expected
warning.
* gfortran.dg/goacc/uninit-firstprivate-clause.f95
* gfortran.dg/goacc/uninit-if-clause.f95
* gfortran.dg/pr66545_2.f90
commit 2cbc99d18dc411ac3fdef94e22ce86859806e63c
Author: Iain Buclaw <ibuclaw@gdcproject.org>
Date: Thu Jun 4 22:36:26 2020 +0200
d: Merge upstream dmd 48d704f08
Updates the Array interface in dmd/root/array.h to use a DArray<TYPE>
internally. Splits out BitArray into a separate header.
Reviewed-on: https://github.com/dlang/dmd/pull/11219
gcc/d/ChangeLog:
* dmd/MERGE: Merge upstream dmd 48d704f08.
* d-attribs.cc (build_attributes): Use new field name.
* d-builtins.cc (build_frontend_type): Likewise.
(maybe_set_builtin_1): Likewise.
(d_maybe_set_builtin): Likewise.
* d-codegen.cc (build_interface_binfo): Likewise.
(identity_compare_p): Likewise.
(lower_struct_comparison): Likewise.
(build_struct_comparison): Likewise.
(d_build_call): Likewise.
(build_frame_type): Likewise.
(build_closure): Likewise.
* d-compiler.cc (Compiler::paintAsType): Likewise.
(Compiler::loadModule): Likewise.
* d-incpath.cc (add_globalpaths): Likewise.
(add_filepaths): Likewise.
(add_import_paths): Likewise.
* d-lang.cc (deps_write): Likewise.
(d_parse_file): Likewise.
* decl.cc (gcc_attribute_p): Likewise.
(base_vtable_offset): Likewise.
(get_vtable_decl): Likewise.
(build_class_instance): Likewise.
* expr.cc (class ExprVisitor): Likewise.
* modules.cc (layout_moduleinfo_fields): Likewise.
(layout_moduleinfo): Likewise.
(build_module_tree): Likewise.
* toir.cc (class IRVisitor): Likewise.
* typeinfo.cc (class TypeInfoVisitor): Likewise.
(layout_classinfo_interfaces): Likewise.
* types.cc (layout_aggregate_members): Likewise.
(layout_aggregate_type): Likewise.
commit 4e05c918d28e3fa66f5baaf556f6886447c68c9a
Author: François Dumont <fdumont@gcc.gnu.org>
Date: Wed Jan 22 18:21:28 2020 +0100
libstdc++: Specialize copy/copy_n for istreambuf_iterator and deque iterators
Add __copy_n_a overloads for std::deque iterators to replace with C memmove
when possible. Expose std::copy_n implementation details in pre-C++11 modes
and use it for std::copy overloads.
libstdc++-v3/ChangeLog
* include/bits/stl_algo.h (__copy_n_a): Move to ...
* include/bits/stl_algobase.h (__copy_n_a): ...here. Add __strict
parameter.
(__copy_n_a(istreambuf_iterator<>, _Size, _Deque_iterator<>, bool)):
Declare.
(__niter_base(const _Safe_iterator<_Ite, _Seq,
random_access_iterator_tag>&)): Declare.
(__copy_move_a2(istreambuf_iterator<>, istreambuf_iterator<>,
_Deque_iterator<>)): Declare.
* include/bits/deque.tcc
(__copy_move_a2(istreambuf_iterator<>, istreambuf_iterator<>,
_Deque_iterator<>)): New.
(__copy_n_a(istreambuf_iterator<>, _Size, _Deque_iterator<>, bool)):
New.
* include/bits/streambuf_iterator.h
(__copy_n_a(istreambuf_iterator<>, _Size, _CharT*, bool)): Adapt.
* include/debug/safe_iterator.tcc (__niter_base): New.
* testsuite/25_algorithms/copy/streambuf_iterators/char/4.cc
(test03): New.
* testsuite/25_algorithms/copy/streambuf_iterators/char/debug/deque_neg.cc:
New test.
* testsuite/25_algorithms/copy_n/debug/istreambuf_ite_deque_neg.cc:
New test.
* testsuite/25_algorithms/copy_n/istreambuf_iterator/2.cc: New test.
* testsuite/25_algorithms/copy_n/istreambuf_iterator/deque.cc:
New test.
commit 8e788ac671626344fa79390808c4d02302387d0f
Author: Iain Buclaw <ibuclaw@gdcproject.org>
Date: Thu Jun 4 22:05:49 2020 +0200
d: Merge upstream dmd 47ed0330f
Updates the copyright years of the front-end sources.
Reviewed-on: https://github.com/dlang/dmd/pull/11221
gcc/d/ChangeLog:
* dmd/MERGE: Merge upstream dmd 47ed0330f.
commit 7ece3bd8088983289731450826c238eb2bdd2db5
Author: Jason Merrill <jason@redhat.com>
Date: Wed Jun 3 23:50:50 2020 -0400
c++: Fix complex constexpr virtual cases [PR93310].
The code in constexpr for looking up the actual type of the object and then
getting the virtual function from there broke for both of these tests: for
16, it assumed incorrectly that the DECL_VINDEX would apply to the most
derived type's vtable; for 17, it failed to consider that during
construction the base subobject is treated as being of the base type.
Fixed by just doing constant evaluation of the expression that looks up the
function in the vtable. This means that a virtual call will involve loading
the vptr, so we will reject some calls through non-constexpr variables that
we previously accepted, but this seems appropriate to me. None of our
testcases were affected.
gcc/cp/ChangeLog:
PR c++/93310
* constexpr.c (cxx_eval_constant_expression) [OBJ_TYPE_REF]:
Evaluate OBJ_TYPE_REF_EXPR.
gcc/testsuite/ChangeLog:
PR c++/93310
* g++.dg/cpp2a/constexpr-virtual16.C: New test.
* g++.dg/cpp2a/constexpr-virtual17.C: New test.
* g++.dg/cpp2a/constexpr-new12.C: Adjust diagnostic.
commit 0ddb93ce77374004c49cdfbd748ba35867620cf1
Author: Jason Merrill <jason@redhat.com>
Date: Wed Jun 3 23:50:06 2020 -0400
c++: Fix FE devirt with diamond inheritance [PR95158]
This started breaking in GCC 8 because of the fix for PR15272; after that
change, we (correctly) remember the lookup from template parsing time that
found Base::foo through the non-dependent MiddleB base, and so we overlook
the overrider in MiddleA. But given that, the devirtualization condition
from the fix for PR59031 is insufficient; we know that d has to be a
Derived, and we found Base::foo in Base, but forcing a non-virtual call
gets the wrong function.
Fixed by removing the PR59031 code that the PR67184 patch moved to
build_over_call, and instead looking up the overrider in BINFO_VIRTUALS.
gcc/cp/ChangeLog:
PR c++/95158
* class.c (lookup_vfn_in_binfo): New.
* call.c (build_over_call): Use it.
* cp-tree.h (resolves_to_fixed_type_p): Add default argument.
(lookup_vfn_in_binfo): Declare.
gcc/testsuite/ChangeLog:
PR c++/95158
* g++.dg/template/virtual5.C: New test.
commit 8c727bdf4acf28c8315b119a1c8f6d6af745c2af
Author: Harald Anlauf <anlauf@gmx.de>
Date: Thu Jun 4 21:00:33 2020 +0200
PR fortran/95500 - Segfault compiling extra interface on intrinsic
Converting an expression so that it can be passed by reference could
result in a NULL pointer dereference.
2020-06-04 Steven G. Kargl <kargl@gcc.gnu.org>
Harald Anlauf <anlauf@gmx.de>
gcc/fortran/
PR fortran/95500
* trans-expr.c (gfc_conv_expr_reference): Do not dereference NULL
pointer.
gcc/testsuite/
PR fortran/95500
* gfortran.dg/pr95500.f90: New test.
commit 4f2d05ef0142d269964e165c14c6f7fe4bdfd5a3
Author: Iain Sandoe <iain@sandoe.co.uk>
Date: Thu Jun 4 17:14:37 2020 +0100
coroutines: Fix missed ramp function return copy elision [PR95346].
Confusingly, "get_return_object ()" can do two things:
- Firstly it can provide the return object for the ramp function (as
the name suggests).
- Secondly if the type of the ramp function is different from that
of the get_return_object call, this is used as a single parameter
to a CTOR for the ramp's return type.
In the first case we can rely on finish_return_stmt () to do the
necessary processing for copy elision.
In the second case, we should have passed a prvalue to the CTOR as
per the standard comment, but I had omitted the rvalue () call. Fixed
thus.
gcc/cp/ChangeLog:
PR c++/95346
* coroutines.cc (morph_fn_to_coro): Ensure that the get-
return-object is constructed correctly; When it is not the
final return value, pass it to the CTOR of the return type
as an rvalue, per the standard comment.
gcc/testsuite/ChangeLog:
PR c++/95346
* g++.dg/coroutines/pr95346.C: New test.
commit e7ef9a40cd0c688cd331bc26224d1fbe360c1fe6
Author: Vladimir N. Makarov <vmakarov@redhat.com>
Date: Thu Jun 4 13:32:24 2020 -0400
Add test for PR95464.c.
2020-06-04 Vladimir Makarov <vmakarov@redhat.com>
PR middle-end/95464
* gcc.target/i386/pr95464.c: New.
commit 2c838a3e4ea06c69c856d074ae5b0400e08ae3c2
Author: Thomas Schwinge <thomas@codesourcery.com>
Date: Thu Jun 4 16:13:35 2020 +0200
[OpenACC 'exit data'] Evaluate 'copyfrom' individually for 'GOMP_MAP_STRUCT' entries
Currently, we don't at all evaluate 'copyfrom' for 'GOMP_MAP_STRUCT' entries.
Fix this by copying/adapting the corresponding non-'GOMP_MAP_STRUCT' code.
libgomp/
* oacc-mem.c (goacc_exit_data_internal) <GOMP_MAP_STRUCT>:
Evaluate 'copyfrom' individually for each entry.
* testsuite/libgomp.oacc-c-c++-common/struct-1.c: Update.
commit a02f1adbfe619ab19cf142438e0a02950d3594da
Author: Thomas Schwinge <thomas@codesourcery.com>
Date: Thu Jun 4 16:01:07 2020 +0200
[OpenACC 'exit data'] Evaluate 'finalize' individually for 'GOMP_MAP_STRUCT' entries
Currently, we don't at all evaluate 'finalize' for 'GOMP_MAP_STRUCT' entries.
Fix this by copying/adapting the corresponding non-'GOMP_MAP_STRUCT' code.
libgomp/
* oacc-mem.c (goacc_exit_data_internal) <GOMP_MAP_STRUCT>:
Evaluate 'finalize' individually for each entry.
* testsuite/libgomp.oacc-c-c++-common/struct-1.c: New file.
* testsuite/libgomp.oacc-c-c++-common/struct-refcount-1.c: Remove
file.
commit db7179ec74dda8c92db18399e5041a96ece8d56d
Author: Thomas Schwinge <thomas@codesourcery.com>
Date: Tue May 19 22:35:15 2020 +0200
Fix 'sizeof' usage in 'libgomp.oacc-c-c++-common/deep-copy-{7,8}.c'
libgomp/
* testsuite/libgomp.oacc-c-c++-common/deep-copy-7.c: Fix 'sizeof'
usage.
* testsuite/libgomp.oacc-c-c++-common/deep-copy-8.c: Likewise.
commit 06ec61726d192659cd446e59a91e78745037f0fd
Author: Thomas Schwinge <thomas@codesourcery.com>
Date: Fri May 29 15:22:42 2020 +0200
[OpenACC] Repair/restore 'is_tgt_unmapped' checking
libgomp/
* oacc-mem.c (goacc_exit_datum): Repair 'is_tgt_unmapped'
checking.
(acc_unmap_data, goacc_exit_data_internal): Restore
'is_tgt_unmapped' checking.
* testsuite/libgomp.oacc-c-c++-common/struct-refcount-1.c: New
file.
* testsuite/libgomp.oacc-fortran/deep-copy-6.f90: Adjust.
* testsuite/libgomp.oacc-fortran/mdc-refcount-1-1-1.f90: Likewise.
* testsuite/libgomp.oacc-fortran/mdc-refcount-1-2-1.f90: Likewise.
* testsuite/libgomp.oacc-fortran/mdc-refcount-1-2-2.f90: Likewise.
* testsuite/libgomp.oacc-fortran/mdc-refcount-1-3-1.f90: Likewise.
* testsuite/libgomp.oacc-fortran/mdc-refcount-1-4-1.f90: Likewise.
Co-Authored-By: Julian Brown <julian@codesourcery.com>
commit 2112d3242f413979931e371423dcead9d19440e7
Author: Thomas Schwinge <thomas@codesourcery.com>
Date: Fri May 29 14:21:03 2020 +0200
[OpenACC] Don't open-code 'gomp_remove_var' in 'acc_unmap_data'
libgomp/
* oacc-mem.c (acc_unmap_data): Don't open-code 'gomp_remove_var'.
Co-Authored-By: Julian Brown <julian@codesourcery.com>
commit 4662f7fe7863b19fcc20ba58c22880f8d6661f3a
Author: Thomas Schwinge <thomas@codesourcery.com>
Date: Fri May 29 14:12:16 2020 +0200
[OpenACC] Remove 'tgt' reference counting from 'acc_unmap_data' [PR92854]
libgomp/
PR libgomp/92854
* oacc-mem.c (acc_unmap_data): Remove 'tgt' reference counting.
commit af8fd1a99d9a21f8088ebb11250cd06a3f275052
Author: Thomas Schwinge <thomas@codesourcery.com>
Date: Fri May 29 14:11:27 2020 +0200
Extend 'libgomp.oacc-c-c++-common/pr92854-1.c' some more [PR92854]
libgomp/
PR libgomp/92854
* testsuite/libgomp.oacc-c-c++-common/pr92854-1.c: Extend some
more.
commit f233418ccf6a16eb3bf53018852c5f8926780143
Author: Thomas Schwinge <thomas@codesourcery.com>
Date: Thu May 14 15:49:52 2020 +0200
[OpenACC] Use 'tgt' returned from 'gomp_map_vars'
libgomp/
* oacc-mem.c (goacc_enter_datum): Use 'tgt' returned from
'gomp_map_vars'.
(acc_map_data): Clean up accordingly.
Co-Authored-By: Julian Brown <julian@codesourcery.com>
commit 8d7794c0a2aa6696ab1a91ef209e8a9fe2df56ac
Author: Thomas Schwinge <thomas@codesourcery.com>
Date: Fri May 29 21:36:27 2020 +0200
[OpenACC] XFAIL behavior of over-eager 'finalize' clause
libgomp/
* testsuite/libgomp.oacc-fortran/deep-copy-6.f90: XFAIL behavior
of over-eager 'finalize' clause.
* testsuite/libgomp.oacc-fortran/deep-copy-6-no_finalize.F90: New
file.
* testsuite/libgomp.oacc-fortran/mdc-refcount-1-1-1.f90: Likewise.
* testsuite/libgomp.oacc-fortran/mdc-refcount-1-1-2.F90: Likewise.
* testsuite/libgomp.oacc-fortran/mdc-refcount-1-2-1.f90: Likewise.
* testsuite/libgomp.oacc-fortran/mdc-refcount-1-2-2.f90: Likewise.
* testsuite/libgomp.oacc-fortran/mdc-refcount-1-3-1.f90: Likewise.
* testsuite/libgomp.oacc-fortran/mdc-refcount-1-3-2.f90: Likewise.
* testsuite/libgomp.oacc-fortran/mdc-refcount-1-4-1.f90: Likewise.
* testsuite/libgomp.oacc-fortran/mdc-refcount-1-4-2.f90: Likewise.
commit 2e24d457d8c97e409549848715ff046cfa9efd3d
Author: Thomas Schwinge <thomas@codesourcery.com>
Date: Sat May 23 17:20:30 2020 +0200
[OpenACC] Missing unlocking on error paths in attach/detach code, part II
libgomp/
* oacc-mem.c (goacc_exit_data_internal): Unlock on error path.
commit dc9541545d9e5705a97c41713c557f55522b54dc
Author: Julian Brown <julian@codesourcery.com>
Date: Fri May 22 15:16:04 2020 -0700
[OpenACC] Missing unlocking on error paths in attach/detach code
libgomp/
* oacc-mem.c (acc_attach_async): Add missing gomp_mutex_unlock on
error path.
(goacc_detach_internal): Likewise.
Reviewed-by: Thomas Schwinge <thomas@codesourcery.com>
commit 1e378edd8f038c52914bc6cac8f6dd5a5c4f8a98
Author: Thomas Schwinge <thomas@codesourcery.com>
Date: Wed May 6 10:05:49 2020 +0200
'libgomp.oacc-fortran/{error_,}stop-{1,2,3}.f': initialize before the checkpoint
If, for example, GCC is configured such that 'libgomp-plugin-nvptx.so.1'
dynamically links against 'libcuda.so.1', but testing is run on a system where
there is no 'libcuda.so.1', this produces output such as:
PASS: libgomp.oacc-fortran/error_stop-1.f -DACC_DEVICE_TYPE_host=1 -DACC_MEM_SHARED=1 -foffload=disable -O0 (test for excess errors)
PASS: libgomp.oacc-fortran/error_stop-1.f -DACC_DEVICE_TYPE_host=1 -DACC_MEM_SHARED=1 -foffload=disable -O0 execution test
FAIL: libgomp.oacc-fortran/error_stop-1.f -DACC_DEVICE_TYPE_host=1 -DACC_MEM_SHARED=1 -foffload=disable -O0 output pattern test, is CheCKpOInT
libgomp: while loading libgomp-plugin-nvptx.so.1: libcuda.so.1: cannot open shared object file: No such file or directory
ERROR STOP
Error termination. Backtrace: [...]
, should match CheCKpOInT(
|
|^M)+ERROR STOP (
|
|^M)+Error termination.*
..., where after 'CheCKpOInT' we got 'libgomp: while loading [...]' injected
before the expected 'ERROR STOP'.
libgomp/
* testsuite/libgomp.oacc-fortran/error_stop-1.f: Initialize before
the checkpoint.
* testsuite/libgomp.oacc-fortran/error_stop-2.f: Likewise.
* testsuite/libgomp.oacc-fortran/error_stop-3.f: Likewise.
* testsuite/libgomp.oacc-fortran/stop-1.f: Likewise.
* testsuite/libgomp.oacc-fortran/stop-2.f: Likewise.
* testsuite/libgomp.oacc-fortran/stop-3.f: Likewise.
commit 2803d2f27cdb7b892bf5490ffd6d9309a966fb62
Author: Iain Buclaw <ibuclaw@gdcproject.org>
Date: Tue Jun 2 16:29:26 2020 +0200
d: Split up d-frontend.cc into multiple parts.
gcc/d/ChangeLog:
* Make-lang.in (D_OBJS): Add d-compiler.o, d-ctfloat.o, d-port.o.
* d-frontend.cc (Port::memicmp): Move to d-port.cc.
(Port::strupr): Likewise.
(Port::isFloat32LiteralOutOfRange): Likewise.
(Port::isFloat64LiteralOutOfRange): Likewise.
(Port::readwordLE): Likewise.
(Port::readwordBE): Likewise.
(Port::readlongLE): Likewise.
(Port::readlongBE): Likewise.
(Port::valcpy): Likewise.
(CTFloat::fabs): Move to d-ctfloat.cc.
(CTFloat::ldexp): Likewise.
(CTFloat::isIdentical): Likewise.
(CTFloat::isNaN): Likewise.
(CTFloat::isSNaN): Likewise.
(CTFloat::isInfinity): Likewise.
(CTFloat::parse): Likewise.
(CTFloat::sprint): Likewise.
(CTFloat::hash): Likewise.
(Compiler::genCmain): Move to d-compiler.cc.
(Compiler::paintAsType): Likewise.
(Compiler::loadModule): Likewise.
* d-compiler.cc: New file.
* d-ctfloat.cc: New file.
* d-port.cc: New file.
commit 5261cf8ce824bfc75eb6f12ad5e3716c085b6f9a
Author: Vladimir N. Makarov <vmakarov@redhat.com>
Date: Thu Jun 4 12:04:48 2020 -0400
Add processing STRICT_LOW_PART for matched reloads.
2020-06-04 Vladimir Makarov <vmakarov@redhat.com>
PR middle-end/95464
* lra.c (lra_emit_move): Add processing STRICT_LOW_PART.
* lra-constraints.c (match_reload): Use STRICT_LOW_PART in output
reload if the original insn has it too.
commit ab56390384cd5168b548ff07e6f0c9c4d41420fb
Author: Richard Biener <rguenther@suse.de>
Date: Thu Jun 4 16:26:36 2020 +0100
aarch64: PR target/95526: Fix gimplification of varargs
This patch fixes a latent bug exposed by
eb72dc663e9070b281be83a80f6f838a3a878822 in the aarch64 backend that was
causing wrong codegen and several testsuite failures. See the discussion
on the bug for details.
Bootstrapped and regtested on aarch64-linux-gnu. Cleaned up several
failing tests and no new fails introduced.
2020-06-04 Richard Biener <rguenther@suse.de>
gcc/:
* config/aarch64/aarch64.c (aarch64_gimplify_va_arg_expr):
Ensure that tmp_ha is marked TREE_ADDRESSABLE.
commit 1980ffec48c6fa41396bea66366f2e591798e1e1
Author: Martin Jambor <mjambor@suse.cz>
Date: Thu Jun 4 17:03:27 2020 +0200
ipa-sra: Do not remove statements necessary because of non-call EH (PR 95113)
PR 95113 revealed that when reasoning about which parameters are dead,
IPA-SRA does not perform the same check related to non-call exceptions
as tree DCE. It most certainly should and so this patch moves the
condition used in tree-ssa-dce.c into a separate predicate (in
tree-eh.c) and uses it from both places.
gcc/ChangeLog:
2020-05-27 Martin Jambor <mjambor@suse.cz>
PR ipa/95113
* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Move non-call
exceptions check to...
* tree-eh.c (stmt_unremovable_because_of_non_call_eh_p): ...this
new function.
* tree-eh.h (stmt_unremovable_because_of_non_call_eh_p): Declare it.
* ipa-sra.c (isra_track_scalar_value_uses): Use it. New parameter
fun.
gcc/testsuite/ChangeLog:
2020-05-27 Martin Jambor <mjambor@suse.cz>
PR ipa/95113
* gcc.dg/ipa/pr95113.c: New test.
commit 9a810e57c4e6af54d29c325a013f451ade2b85e8
Author: Srinath Parvathaneni <srinath.parvathaneni@arm.com>
Date: Thu Jun 4 15:41:29 2020 +0100
[ARM]: Correct the grouping of operands in MVE vector scatter store intrinsics (PR94735).
The operands in RTL patterns of MVE vector scatter store intrinsics are wrongly grouped,
because of which few vector loads and stores instructions are wrongly getting optimized
out with -O2.
A new predicate "mve_scatter_memory" is defined in this patch, this predicate returns TRUE on
matching: (mem(reg)) for MVE scatter store intrinsics.
This patch fixes the issue by adding define_expand pattern with "mve_scatter_memory" predicate
and calls the corresponding define_insn by passing register_operand as first argument.
This register_operand is extracted from the operand with "mve_scatter_memory" predicate in
define_expand pattern.
gcc/ChangeLog:
2020-06-01 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
PR target/94735
* config/arm/predicates.md (mve_scatter_memory): Define to
match (mem (reg)) for scatter store memory.
* config/arm/mve.md (mve_vstrbq_scatter_offset_<supf><mode>): Modify
define_insn to define_expand.
(mve_vstrbq_scatter_offset_p_<supf><mode>): Likewise.
(mve_vstrhq_scatter_offset_<supf><mode>): Likewise.
(mve_vstrhq_scatter_shifted_offset_p_<supf><mode>): Likewise.
(mve_vstrhq_scatter_shifted_offset_<supf><mode>): Likewise.
(mve_vstrdq_scatter_offset_p_<supf>v2di): Likewise.
(mve_vstrdq_scatter_offset_<supf>v2di): Likewise.
(mve_vstrdq_scatter_shifted_offset_p_<supf>v2di): Likewise.
(mve_vstrdq_scatter_shifted_offset_<supf>v2di): Likewise.
(mve_vstrhq_scatter_offset_fv8hf): Likewise.
(mve_vstrhq_scatter_offset_p_fv8hf): Likewise.
(mve_vstrhq_scatter_shifted_offset_fv8hf): Likewise.
(mve_vstrhq_scatter_shifted_offset_p_fv8hf): Likewise.
(mve_vstrwq_scatter_offset_fv4sf): Likewise.
(mve_vstrwq_scatter_offset_p_fv4sf): Likewise.
(mve_vstrwq_scatter_offset_p_<supf>v4si): Likewise.
(mve_vstrwq_scatter_offset_<supf>v4si): Likewise.
(mve_vstrwq_scatter_shifted_offset_fv4sf): Likewise.
(mve_vstrwq_scatter_shifted_offset_p_fv4sf): Likewise.
(mve_vstrwq_scatter_shifted_offset_p_<supf>v4si): Likewise.
(mve_vstrwq_scatter_shifted_offset_<supf>v4si): Likewise.
(mve_vstrbq_scatter_offset_<supf><mode>_insn): Define insn for scatter
stores.
(mve_vstrbq_scatter_offset_p_<supf><mode>_insn): Likewise.
(mve_vstrhq_scatter_offset_<supf><mode>_insn): Likewise.
(mve_vstrhq_scatter_shifted_offset_p_<supf><mode>_insn): Likewise.
(mve_vstrhq_scatter_shifted_offset_<supf><mode>_insn): Likewise.
(mve_vstrdq_scatter_offset_p_<supf>v2di_insn): Likewise.
(mve_vstrdq_scatter_offset_<supf>v2di_insn): Likewise.
(mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn): Likewise.
(mve_vstrdq_scatter_shifted_offset_<supf>v2di_insn): Likewise.
(mve_vstrhq_scatter_offset_fv8hf_insn): Likewise.
(mve_vstrhq_scatter_offset_p_fv8hf_insn): Likewise.
(mve_vstrhq_scatter_shifted_offset_fv8hf_insn): Likewise.
(mve_vstrhq_scatter_shifted_offset_p_fv8hf_insn): Likewise.
(mve_vstrwq_scatter_offset_fv4sf_insn): Likewise.
(mve_vstrwq_scatter_offset_p_fv4sf_insn): Likewise.
(mve_vstrwq_scatter_offset_p_<supf>v4si_insn): Likewise.
(mve_vstrwq_scatter_offset_<supf>v4si_insn): Likewise.
(mve_vstrwq_scatter_shifted_offset_fv4sf_insn): Likewise.
(mve_vstrwq_scatter_shifted_offset_p_fv4sf_insn): Likewise.
(mve_vstrwq_scatter_shifted_offset_p_<supf>v4si_insn): Likewise.
(mve_vstrwq_scatter_shifted_offset_<supf>v4si_insn): Likewise.
gcc/testsuite/ChangeLog:
2020-06-01 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
PR target/94735
* gcc.target/arm/mve/intrinsics/mve_vstore_scatter_base.c: New test.
* gcc.target/arm/mve/intrinsics/mve_vstore_scatter_base_p.c: Likewise.
* gcc.target/arm/mve/intrinsics/mve_vstore_scatter_offset.c: Likewise.
* gcc.target/arm/mve/intrinsics/mve_vstore_scatter_offset_p.c: Likewise.
* gcc.target/arm/mve/intrinsics/mve_vstore_scatter_shifted_offset.c:
Likewise.
* gcc.target/arm/mve/intrinsics/mve_vstore_scatter_shifted_offset_p.c:
Likewise.
commit d34f510e2bf976cff3b9fbf7a8c5a41c233db2e4
Author: Srinath Parvathaneni <srinath.parvathaneni@arm.com>
Date: Thu Jun 4 15:29:18 2020 +0100
[PATCH][GCC] arm: Fix the MVE ACLE vbicq intrinsics.
Following MVE intrinsic testcases are failing in GCC testsuite.
Directory: gcc.target/arm/mve/intrinsics/
Testcases: vbicq_f16.c, vbicq_f32.c, vbicq_s16.c, vbicq_s32.c, vbicq_s8.c
,vbicq_u16.c, vbicq_u32.c and vbicq_u8.c.
This patch fixes the vbicq intrinsics by modifying the intrinsic parameters
and polymorphic variants in "arm_mve.h" header file.
Thanks,
Srinath.
gcc/ChangeLog:
2020-05-20 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
* config/arm/arm_mve.h (__arm_vbicq_n_u16): Correct the intrinsic
arguments.
(__arm_vbicq_n_s16): Likewise.
(__arm_vbicq_n_u32): Likewise.
(__arm_vbicq_n_s32): Likewise.
(__arm_vbicq): Modify polymorphic variant.
gcc/testsuite/ChangeLog:
2020-05-20 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
* gcc.target/arm/mve/intrinsics/vbicq_f16.c: Modify.
* gcc.target/arm/mve/intrinsics/vbicq_f32.c: Likewise.
* gcc.target/arm/mve/intrinsics/vbicq_n_s16.c: Likewise.
* gcc.target/arm/mve/intrinsics/vbicq_n_s32.c: Likewise.
* gcc.target/arm/mve/intrinsics/vbicq_n_u16.c: Likewise.
* gcc.target/arm/mve/intrinsics/vbicq_n_u32.c: Likewise.
* gcc.target/arm/mve/intrinsics/vbicq_s16.c: Likewise.
* gcc.target/arm/mve/intrinsics/vbicq_s32.c: Likewise.
* gcc.target/arm/mve/intrinsics/vbicq_s8.c: Likewise.
* gcc.target/arm/mve/intrinsics/vbicq_u16.c: Likewise.
* gcc.target/arm/mve/intrinsics/vbicq_u32.c: Likewise.
* gcc.target/arm/mve/intrinsics/vbicq_u8.c: Likewise.
commit b15369e2538086c95250ac57c56a4c2590f922f4
Author: Richard Biener <rguenther@suse.de>
Date: Thu Jun 4 14:59:16 2020 +0200
add vect_get_slp_vect_def
This adds vect_get_slp_vect_def to get at a SLP nodes vectorized def,
abstracting away the details. It also fixes one stray failure to
use SLP_TREE_REPRESENTATIVE.
2020-05-04 Richard Biener <rguenther@suse.de>
* tree-vectorizer.h (vect_get_slp_vect_def): Declare.
* tree-vect-loop.c (vect_create_epilog_for_reduction): Use it.
* tree-vect-stmts.c (vect_transform_stmt): Likewise.
(vect_is_simple_use): Use SLP_TREE_REPRESENTATIVE.
* tree-vect-slp.c (vect_get_slp_vect_defs): Fold into single
use ...
(vect_get_slp_defs): ... here.
(vect_get_slp_vect_def): New function.
commit a0dae768c6f78eba6997930065b55184202d87ba
Author: Richard Biener <rguenther@suse.de>
Date: Fri May 29 11:23:05 2020 +0200
Add explicit SLP_TREE_LANES
This adds an explicit number of scalar lanes to the SLP node
avoiding to dispatch between stmts/ops and eventually not require
those vectors at all.
2020-05-27 Richard Biener <rguenther@suse.de>
* tree-vectorizer.h (_slp_tree::lanes): New.
(SLP_TREE_LANES): Likewise.
* tree-vect-loop.c (vect_create_epilog_for_reduction): Use it.
(vectorizable_reduction): Likewise.
(vect_transform_cycle_phi): Likewise.
(vectorizable_induction): Likewise.
(vectorizable_live_operation): Likewise.
* tree-vect-slp.c (_slp_tree::_slp_tree): Initialize lanes.
(vect_create_new_slp_node): Likewise.
(slp_copy_subtree): Copy it.
(vect_optimize_slp): Use it.
(vect_slp_analyze_node_operations_1): Likewise.
(vect_slp_convert_to_external): Likewise.
(vect_bb_vectorization_profitable_p): Likewise.
* tree-vect-stmts.c (vectorizable_load): Likewise.
(get_vectype_for_scalar_type): Likewise.
commit e1008cd1d8504775e6a5e39325e396e61b39b84c
Author: Jonathan Wakely <jwakely@redhat.com>
Date: Thu Jun 4 13:52:21 2020 +0100
libstdc++: Make std::copy_n work with negative and non-integral sizes
Since it was added in C++11, std::copy_n and std::ranges::copy_n should
do nothing given a negative size, but for random access iterators we add
the size to the iterator, possibly resulting in undefined behaviour.
Also, C++20 clarified that std::copy_n requires the Size type to be
convertible to an integral type. We previously assumed that it could be
directly used in arithmetic expressions, without conversion to an
integral type.
This also fixes a bug in the random_access_iterator_wrapper helper adds
some convenience aliases for using the iterator wrappers.
libstdc++-v3/ChangeLog:
* include/bits/ranges_algobase.h (__copy_n_fn): Only call
ranges::copy for positive values.
* include/bits/stl_algo.h (copy_n): Convert Size argument to an
integral type and only call __copy_n for positive values.
* testsuite/util/testsuite_iterators.h
(random_access_iterator_wrapper::operator+=): Fix range check for
negative values.
(output_container, input_container, forward_container)
(bidirectional_container, random_access_container): New alias
templates.
* testsuite/25_algorithms/copy_n/5.cc: New test.
commit a3a70bf6690e310fb1d4afa4b3dd1b19ddd0e2f4
Author: Richard Biener <rguenther@suse.de>
Date: Thu Jun 4 14:17:21 2020 +0200
Simplify SLP code wrt SLP_TREE_DEF_TYPE
The following removes the ugly pushing of SLP_TREE_DEF_TYPE to
stmt_infos and instead makes sure to handle invariants fully
in vect_is_simple_use plus adjusting a few places I refrained
from touching when enforcing vector types for them.
It also simplifies building SLP nodes with all external operands
from scalars by not doing that in the parent but instead not
building those from the start. That also gets rid of
vect_update_all_shared_vectypes.
2020-06-04 Richard Biener <rguenther@suse.de>
* tree-vect-slp.c (vect_update_all_shared_vectypes): Remove.
(vect_build_slp_tree_2): Simplify building all external op
nodes from scalars.
(vect_slp_analyze_node_operations): Remove push/pop of
STMT_VINFO_DEF_TYPE.
(vect_schedule_slp_instance): Likewise.
* tree-vect-stmts.c (ect_check_store_rhs): Pass in the
stmt_info, use the vect_is_simple_use overload combining
SLP and stmt_info analysis.
(vect_is_simple_cond): Likewise.
(vectorizable_store): Adjust.
(vectorizable_condition): Likewise.
(vect_is_simple_use): Fully handle invariant SLP nodes
here. Amend stmt_info operand extraction with COND_EXPR
and masked stores.
* tree-vect-loop.c (vectorizable_reduction): Deal with
COND_EXPR representation ugliness.
commit 43088bb4dadd3d14b6b594c5f9363fe879f3d7f7
Author: liuhongt <hongtao.liu@intel.com>
Date: Fri May 29 13:38:49 2020 +0800
Fix zero-masking for vcvtps2ph when dest operand is memory.
When dest is memory, zero-masking is not valid, only merging-masking is available,
2020-06-24 Hongtao Liu <hongtao.liu@inte.com>
gcc/ChangeLog:
PR target/95254
* config/i386/sse.md (*vcvtps2ph_store<merge_mask_name>):
Refine from *vcvtps2ph_store<mask_name>.
(vcvtps2ph256<mask_name>): Refine constraint from vm to v.
(<mask_codefor>avx512f_vcvtps2ph512<mask_name>): Ditto.
(*vcvtps2ph256<merge_mask_name>): New define_insn.
(*avx512f_vcvtps2ph512<merge_mask_name>): Ditto.
* config/i386/subst.md (merge_mask): New define_subst.
(merge_mask_name): New define_subst_attr.
(merge_mask_operand3): Ditto.
gcc/testsuite/ChangeLog:
* gcc.target/i386/avx512f-vcvtps2ph-pr95254.c: New test.
* gcc.target/i386/avx512vl-vcvtps2ph-pr95254.c: Ditto.
commit 53ec04cbdd192468d1975640759084f4e37fe4e8
Author: Arnaud Charlet <charlet@adacore.com>
Date: Thu Jan 30 04:05:44 2020 -0500
[Ada] AI12-0184: Long Long C Data types
2020-06-04 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* libgnat/i-c.ads (long_long, unsigned_long_long): New
definitions.
commit 301e2a16c443924c90e0d038862e957165dd899d
Author: Arnaud Charlet <charlet@adacore.com>
Date: Thu Jan 23 10:48:08 2020 -0500
[Ada] New package Ada.Task_Initialization
2020-06-04 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* Makefile.rtl: add a-tasini object
* impunit.adb (Non_Imp_File_Names_95): Add s-tasini.
* libgnarl/a-tasini.ads, libgnarl/a-tasini.adb: New files.
* libgnarl/s-taskin.ads (Global_Initialization_Handler): New.
* libgnarl/s-tassta.adb (Task_Wrapper): Call
Global_Initialization_Handler if non null.
commit 9531ffdaafe38f8cf07481430daba035e855bdf4
Author: Ed Schonberg <schonberg@adacore.com>
Date: Fri Jan 24 14:14:14 2020 -0500
[Ada] Ada_2020: contracts for formal subprograms
2020-06-04 Ed Schonberg <schonberg@adacore.com>
gcc/ada/
* sem_ch12.adb (Build_Suprogram_Body_Wrapper,
Build_Subprogram_Decl_Wrapper): New suprograms, to create the
wrappers needed to implement contracts on formsl subprograms at
the point of instantiation.
(Build_Subprogram_Wrappers): New subprogram within
Analyze_Associations, calls the above when the formal subprogram
has contracts, and expansion is enabled.
(Instantiate_Formal_Subprogram): If the actual is not an entity,
such as a function attribute, or a synchronized operation,
create a function with an internal name and call it within the
wrapper.
(Analyze_Generic_Formal_Part): Analyze contracts at the end of
the list of formal declarations.
* sem_prag.adb (Analyze_Pre_Post_Condtion): In Ada_2020 the
aspect and corresponding pragma can appear on a formal
subprogram declaration.
(Find_Related_Declaration_Or_Body): Ditto.
commit 25a76d621a4b6e324777677c8a5a81c09da2db9d
Author: Eric Botcazou <ebotcazou@adacore.com>
Date: Wed Jan 29 16:15:09 2020 +0100
[Ada] Add missing conversion in call to Finalize primitive
2020-06-04 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* exp_ch7.adb (Make_Final_Call): Set the type of the object, if
it is unanalyzed, before calling Convert_View on it.
commit 3ab26de1c003d0ac640eaa114e041bf78fb151ac
Author: Arnaud Charlet <charlet@adacore.com>
Date: Tue Jan 28 14:13:14 2020 -0500
[Ada] Get rid of Disable_FE_Inline_Always
2020-06-04 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* adabkend.adb, back_end.ads, opt.ads, sem_ch6.adb: Get rid of
Disable_FE_Inline_Always.
commit 198064c06a1e1e85cf498ad42983c5eab1f27c4a
Author: Eric Botcazou <ebotcazou@adacore.com>
Date: Tue Jan 28 23:52:17 2020 +0100
[Ada] Fix a couple of oversights in previous change
2020-06-04 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* exp_ch7.adb (Make_Final_Call): Add missing guard.
* sem_ch3.adb (Copy_And_Build): Adjust recursive call for
private types.
(Build_Derived_Private_Type): Deal with underlying full views.
commit 110d0820bfcb421b8c680409cf5c65aa2a0b4b8e
Author: Bob Duff <duff@adacore.com>
Date: Tue Jan 28 15:06:41 2020 -0500
[Ada] Put_Image attribute
2020-06-04 Bob Duff <duff@adacore.com>
gcc/ada/
* libgnat/a-stobbu.adb, libgnat/a-stobbu.ads,
libgnat/a-stobfi.adb, libgnat/a-stobfi.ads,
libgnat/a-stoubu.adb, libgnat/a-stoubu.ads,
libgnat/a-stoufi.adb, libgnat/a-stoufi.ads,
libgnat/a-stoufo.adb, libgnat/a-stoufo.ads,
libgnat/a-stouut.adb, libgnat/a-stouut.ads,
libgnat/a-stteou.ads, libgnat/s-putaim.adb,
libgnat/s-putaim.ads, libgnat/s-putima.adb, libgnat/s-putima.ads
(Ada.Strings.Text_Output and children, System.Put_Images): New
runtime support for Put_Image.
* gcc-interface/Make-lang.in (GNAT_ADA_OBJS): Add
exp_put_image.o.
* exp_put_image.adb, exp_put_image.ads: New compiler package
that generates calls to runtime routines that implement
Put_Image.
* Makefile.rtl: Add object files for Ada.Strings.Text_Output and
children and System.Put_Images.
* aspects.adb: Simplify initialization of Canonical_Aspect.
* aspects.ads: Improve documentation. Add Aspect_Put_Image.
* exp_attr.adb: Add support for Put_Image, by calling routines
in Exp_Put_Image.
* sem_util.adb (Is_Predefined_Dispatching_Operation): Return
True for new TSS_Put_Image operation.
* exp_ch3.adb: For tagged types, build a dispatching
TSS_Put_Image operation by calling routines in Exp_Put_Image.
* exp_disp.adb, exp_disp.ads: Make TSS_Put_Image be number 10,
adjusting other operations' numbers after 10. We choose 10
because that's the last number shared by all runtimes.
* exp_strm.adb: Use named notation as appropriate.
* exp_cg.adb, exp_tss.ads: Add TSS_Put_Image.
* libgnat/a-tags.ads: Modify Max_Predef_Prims for the new
TSS_Put_Image.
* impunit.adb: Add new runtime packages.
* rtsfind.adb, rtsfind.ads: Add support for
Ada.Strings.Text_Output, Ada.Strings.Text_Output.Utils, and
System.Put_Images.
* sem_attr.adb: Error checking for Put_Image calls.
* sem_ch12.adb (Valid_Default_Attribute): Support for passing
Put_Image as a generic formal parameter.
* sem_ch13.adb: Analysis of Put_Image aspect. Turn it into a
Put_Image attribute definition clause.
* sem_ch8.adb (Analyze_Subprogram_Renaming): Support for
renaming of the Put_Image attribute.
* snames.adb-tmpl: Fix comments.
* snames.ads-tmpl (Name_Put_Image): New Name_Id.
(Attribute_Put_Image): New Attribute_Id.
* tbuild.adb, tbuild.ads (Make_Increment): New utility.
commit a3fbeceef46546fd47ed370474feed347c86713f
Author: Eric Botcazou <ebotcazou@adacore.com>
Date: Mon Jan 27 12:50:23 2020 +0100
[Ada] Alignment clause ignored on completion derived from private type
2020-06-04 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* exp_attr.adb (xpand_N_Attribute_Reference) <Input>: Call
Find_Inherited_TSS to look up the Stream_Read TSS.
<Output>: Likewise for the Stream_Write TSS.
* exp_ch7.adb (Make_Final_Call): Call Underlying_Type on
private types to account for underlying full views.
* exp_strm.ads (Build_Record_Or_Elementary_Input_Function):
Remove Use_Underlying parameter.
* exp_strm.adb (Build_Record_Or_Elementary_Input_Function):
Likewise and adjust accordingly.
* exp_tss.adb (Find_Inherited_TSS): Deal with full views.
Call Find_Inherited_TSS recursively on the parent type if
the base type is a derived type.
* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Take
into account underlying full views for derived types.
* sem_ch3.adb (Copy_And_Build): Look up the underlying full
view only for a completion. Be prepared for private types.
(Build_Derived_Private_Type): Build an underlying full view
for a completion in the general case too.
commit e5e53c73a0cf2e326bbfdacbe94e4a3bb79cd219
Author: Arnaud Charlet <charlet@adacore.com>
Date: Sun Jan 26 15:32:43 2020 -0500
[Ada] Remove OpenACC support
2020-06-04 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* back_end.adb, opt.ads, par-prag.adb, sem_ch5.adb,
sem_prag.adb, sinfo.adb, sinfo.ads, snames.ads-tmpl,
doc/gnat_rm/implementation_defined_pragmas.rst: Remove
experimental support for OpenACC.
* gcc-interface/misc.c, gcc-interface/trans.c,
gcc-interface/lang.opt: Ditto.
* gnat_rm.texi: Regenerate.
gcc/testsuite/
* gnat.dg/openacc1.adb: Remove testcase.
commit a6b37ab0acd34629a41c694c0f3482c450bbd18b
Author: Eric Botcazou <ebotcazou@adacore.com>
Date: Tue Jan 28 10:03:23 2020 +0100
[Ada] Remove obsolete reference to gigi in comment
2020-06-04 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* checks.adb (Generate_Discriminant_Check): Remove obsolete
comment.
commit 4f31d6dbb8deafd7ab54e70eddfd931b10b3309b
Author: Gary Dismukes <dismukes@adacore.com>
Date: Fri Jan 24 14:11:47 2020 -0500
[Ada] Implement AI12-0275 (Make subtype_mark optional in object renamings)
2020-06-04 Gary Dismukes <dismukes@adacore.com>
gcc/ada/
* par-ch3.adb (P_Identifier_Declarations): Add parsing of object
renamings that have neither a subtype_mark nor an
access_definition. Issue an error if the version is earlier than
Ada_2020, and suggest using -gnatX.
* sem_ch8.adb (Analyze_Object_Renaming): Handle
object_renaming_declarations that don't have an explicit
subtype. Errors are issued when the name is inappropriate or
ambiguous, and otherwise the Etype of the renaming entity is set
from the Etype of the renamed object.
* sem_util.adb (Has_Null_Exclusion): Allow for the case of no
subtype given in an N_Object_Renaming_Declaration.
* sprint.adb (Sprint_Node_Actual): Handle printing of
N_Object_Renaming_Declarations that are specified without an
explicit subtype.
commit 96cd8940614e0f87aca7bb6064a45710aca6212f
Author: Eric Botcazou <ebotcazou@adacore.com>
Date: Wed Jan 22 09:33:40 2020 +0100
[Ada] Fix glitch for N_Delta_Aggregate/N_Case_Expression/N_Quantified_Expression
2020-06-04 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* sinfo.ads (N_Delta_Aggregate): Document Etype field.
(N_Case_Expression): Likewise.
(Is_Syntactic_Field) <N_Quantified_Expression>: Adjust.
<N_Case_Expression>: Likewise.
commit 354cce532c1923601f5eadf25557efe62870e88e
Author: Arnaud Charlet <charlet@adacore.com>
Date: Sat Jan 25 05:00:20 2020 -0500
[Ada] Avoid redefining IS_DIR_SEPARATOR macro
2020-06-04 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* adaint.c: Avoid redefining IS_DIR_SEPARATOR macro.
commit c21938bee0d0a5cb3da442d3d4500d2eeb416b44
Author: Arnaud Charlet <charlet@adacore.com>
Date: Fri Jan 24 11:58:35 2020 -0500
[Ada] Wrong walk order in Walk_Library_Items
2020-06-04 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* sem.adb (Walk_Library_Items): Defer processing of main spec
after all other specs and before processing bodies.
commit 1e01dddb44e051224239d44f6042a379cbf583ab
Author: Arnaud Charlet <charlet@adacore.com>
Date: Thu Jan 23 14:03:35 2020 -0500
[Ada] Import Adafinal as convention Ada
2020-06-04 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* bindgen.adb (Gen_Adafinal): Adafinal is convention Ada, not C.
commit 0b27ccce0849ef93b95aebae12c8a0e77929810e
Author: Ed Schonberg <schonberg@adacore.com>
Date: Thu Jan 23 11:00:46 2020 -0500
[Ada] Incorrect source line range on subprogram body with contract
2020-06-04 Ed Schonberg <schonberg@adacore.com>
gcc/ada/
* sinput.adb (Sloc_Range): Ignore node in the tree if it appears
in a unit different from that of the node whose Sloc range we
are computing. This is necessary when computing the source range
of a subprogram body whose declaration includes a pre- or
postcondition, because declaration and body may appear in
different units, and the expanded code for the body includes
copies of the contract code.
commit 593627b4562814d2206e53e9ad6ce2e85295aa58
Author: Alexandre Oliva <oliva@adacore.com>
Date: Thu Jan 23 21:15:30 2020 -0300
[Ada] Revamp dump and aux output names
2020-06-04 Alexandre Oliva <oliva@adacore.com>
gcc/ada/
* switch.adb (Is_Internal_GCC_Switch): Recognize dumpdir and
dumpbase-ext. Mark auxbase and auxbase-strip for removal.
commit d2f87b22d1e47859166efc90eda830d21a0c31b9
Author: Eric Botcazou <ebotcazou@adacore.com>
Date: Thu Jan 23 21:52:19 2020 +0100
[Ada] Set convention and inlined flag on default null procedure
2020-06-04 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* sem_attr.adb (Resolve_Attribute) <Access>: Do not generate
the secondary message about a missing pragma if the convention
of the prefix is Intrinsic.
* sem_ch12.adb (Instantiate_Formal_Subprogram): Only set the
Convention and the Is_Inlined flag on a null procedure.
commit a0c94bd34a4ed6b8239d9a6d749ad5c94022acff
Author: Justin Squirek <squirek@adacore.com>
Date: Thu Jan 23 13:12:11 2020 -0500
[Ada] Missing accessibility check on access discriminant in extended return
2020-06-04 Justin Squirek <squirek@adacore.com>
gcc/ada/
* sem_ch6.adb (Check_Return_Obj_Accessibility): Change to
Check_Return_Construct_Accessibility to better reflect its
purpose. Add loop to properly obtain the object declaration
from an expanded extended return statement and add calls to get
the original node for associated values. Also, avoid checks when
the return statement being examined comes from an internally
generated function.
commit 7c02e403d145989ed9f291123689baa96f455fb5
Author: Dmitriy Anisimkov <anisimko@adacore.com>
Date: Thu Jan 23 12:38:47 2020 +0600
[Ada] Fix Is_Absolute_Path on Windows
2020-06-04 Dmitriy Anisimkov <anisimko@adacore.com>
gcc/ada/
* adaint.c (__gnat_is_absolute_path): Check for directory
separator after drive and colon.
(IS_DIR_SEPARATOR): Define new inline substitution.
commit 51bc44b84aafd0bbdcd6cacfbbe2d20f5a15df6a
Author: Eric Botcazou <ebotcazou@adacore.com>
Date: Thu Jan 23 16:40:14 2020 +0100
[Ada] Update the documentation in checks.ads about range checks
2020-06-04 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* checks.ads: Update documentation about range checks and fix
minor other things.
commit d46b330ddc1dc1c16e9638e144db64df7365a820
Author: Eric Botcazou <ebotcazou@adacore.com>
Date: Mon Jan 20 11:24:07 2020 +0100
[Ada] Small tweak to special handling of private index types
2020-06-04 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* sem_ch3.adb (Array_Type_Declaration): Apply special handling
of private index types to generic packages and restrict it to
index types defined in the current scope.
commit 528576de0bd3bf7154952d9b5e7ced2b4ed7f038
Author: Arnaud Charlet <charlet@adacore.com>
Date: Wed Jan 22 06:43:54 2020 -0500
[Ada] New procedure Register_Global_Unhandled_Action
2020-06-04 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* libgnat/a-exextr.adb (Global_Unhandled_Action): New global
variable.
(Notify_Exception): Take into account Global_Unhandled_Action
and fix latent race condition.
(Exception_Action): Mark Favor_Top_Level so that variables can
be atomic.
(Global_Action): Mark atomic to remove the need for a lock.
* libgnat/g-excact.ads, libgnat/g-excact.adb
(Register_Global_Unhandled_Action): New procedure.
(Register_Global_Action): Remove lock.
* libgnat/s-stalib.ads (Raise_Action): Mark Favor_Top_Level to
be compatible with Exception_Action.
* sem_warn.adb (Warn_On_Unreferenced_Entity): Fix logic wrt
Volatile entities and entities with an address clause: the code
did not match the comment/intent.
commit 32cc67203388abd9559b8acc6997b3c26dcc7080
Author: Arnaud Charlet <charlet@adacore.com>
Date: Wed Jan 22 07:13:42 2020 -0500
[Ada] Update URL and bug report instructions
2020-06-04 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* comperr.adb (Compiler_Abort): Update URL and bug report
instructions.
commit b5682bf40cedf95d1e0150c6a6ba7a64c59fd968
Author: Steve Baird <baird@adacore.com>
Date: Fri Jan 17 22:10:13 2020 -0800
[Ada] Avoid buffer overflow in Long_Long_Float_Text_IO
2020-06-04 Steve Baird <baird@adacore.com>
gcc/ada/
* libgnat/s-imgrea.ads: Declare a named number
Max_Real_Image_Length with value 5200. Provide a comment
explaining why this value was chosen.
* libgnat/s-imgrea.adb (Set_Image_Real): Increase the upper
bound of the local String variable Digs to
Max_Real_Image_Length.
* libgnat/a-tiflau.adb (Put): Increase the upper bound of the
local String variable Buf to Max_Real_Image_Length.
(Puts): Increase the upper bound of the local String variable
Buf to Max_Real_Image_Length.
commit b68c1670b7d40b09be2995e1e730ce4c87eb688c
Author: Arnaud Charlet <charlet@adacore.com>
Date: Tue Jan 21 06:44:25 2020 -0500
[Ada] Remove System.Parameters.Single_Lock
2020-06-04 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* libgnarl/a-dynpri.adb, libgnarl/a-taside.adb,
libgnarl/a-taster.adb, libgnarl/s-interr.adb,
libgnarl/s-interr__sigaction.adb, libgnarl/s-taasde.adb,
libgnarl/s-taenca.adb, libgnarl/s-taenca.ads,
libgnarl/s-taprop.ads, libgnarl/s-taprop__hpux-dce.adb,
libgnarl/s-taprop__linux.adb, libgnarl/s-taprop__mingw.adb,
libgnarl/s-taprop__posix.adb, libgnarl/s-taprop__qnx.adb,
libgnarl/s-taprop__solaris.adb, libgnarl/s-taprop__vxworks.adb,
libgnarl/s-tarest.adb, libgnarl/s-tasini.adb,
libgnarl/s-tasque.adb, libgnarl/s-tasque.ads,
libgnarl/s-tasren.adb, libgnarl/s-tasren.ads,
libgnarl/s-tassta.adb, libgnarl/s-tasuti.adb,
libgnarl/s-tasuti.ads, libgnarl/s-tpoben.adb,
libgnarl/s-tpobop.adb, libgnarl/s-tpopmo.adb,
libgnarl/s-tposen.adb, libgnat/s-parame.ads,
libgnat/s-parame__ae653.ads, libgnat/s-parame__hpux.ads,
libgnat/s-parame__vxworks.ads: Remove references to Single_Lock
and Global_Lock.
commit bbe376e136edb8456088d7298d4ba7c93d4e0529
Author: Arnaud Charlet <charlet@adacore.com>
Date: Mon Jan 20 06:07:09 2020 -0500
[Ada] Continuation of "Get rid of more references to Universal_Integer"
2020-06-04 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* libgnat/s-atopar.adb, libgnat/s-atopex.adb: Use Object_Size
instead of Size, otherwise many derived types will be rejected
(e.g. a type with a 14 bits 'Size and a 16 bits 'Object_Size).
commit 8b3bf48a31e4eb238ae8bd61b9ff9d4c6abb932e
Author: Eric Botcazou <ebotcazou@adacore.com>
Date: Sun Jan 19 18:25:37 2020 +0100
[Ada] Add another ad-hoc case to the Has_Private_View mechanism
2020-06-04 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* sem_ch12.adb (Copy_Generic_Node): Add special handling for a
conversion between access types.
commit 8a91f77d3ac51d7b1aa07c00929c64a91b08175f
Author: Eric Botcazou <ebotcazou@adacore.com>
Date: Sat Jan 18 23:40:05 2020 +0100
[Ada] Fix fallout of cleanup to Has_Private_View mechanism
2020-06-04 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* sem_ch12.adb (Check_Generic_Actuals): Also restore the proper
views of the actuals of the parent instances if the formals are
used as actuals of the children.
(Instantiate_Type): Add comment.
commit 9f3a17960b09f36bf67e15eb8a5e1feea9c2c9ba
Author: Gary Dismukes <dismukes@adacore.com>
Date: Fri Jan 17 17:50:13 2020 -0500
[Ada] Minor editorial fixes
2020-06-04 Gary Dismukes <dismukes@adacore.com>
gcc/ada/
* sem_ch12.adb: Minor editorial fixes.
commit 54ecfb182bc32140722022c1d9818dee4bdc0e45
Author: Hao Liu <hliu@os.amperecomputing.com>
Date: Thu Jun 4 16:28:37 2020 +0800
cselim: Extend to check non-trapping for more references [PR89430]
If there is a dominating store, a store to the same reference can not be
trapped. But previously, it only supports such check on MEM_REFs.
So this patch extends it to support ARRAY_REFs and COMPONENT_REFs.
This patch also supports a special case: if there is a dominating load of
local variable without address escape, a store is not trapped, as local
stack is always writable. Other loads are ignored for simplicity, as they
don't help to check if a store can be trapped (the memory may be read-only).
gcc/ChangeLog:
PR tree-optimization/89430
* tree-ssa-phiopt.c
(struct name_to_bb): Rename to ref_to_bb; add a new field exp;
remove ssa_name_ver, store, offset fields.
(struct ssa_names_hasher): Rename to refs_hasher; update functions.
(class nontrapping_dom_walker): Rename m_seen_ssa_names to m_seen_refs.
(nontrapping_dom_walker::add_or_mark_expr): Extend to support ARRAY_REFs
and COMPONENT_REFs.
gcc/testsuite/ChangeLog:
PR tree-optimization/89430
* gcc.dg/tree-ssa/pr89430-1.c: Remove xfail.
* gcc.dg/tree-ssa/pr89430-2.c: Remove xfail.
* gcc.dg/tree-ssa/pr89430-5.c: Remove xfail.
* gcc.dg/tree-ssa/pr89430-6.c: Remove xfail.
* gcc.dg/tree-ssa/pr89430-7-comp-ref.c: New test.
* gcc.dg/tree-ssa/pr89430-8-mem-ref-size.c: New test.
* gcc.dg/tree-ssa/ssa-pre-17.c: Add -fno-tree-cselim.
commit 9b4e77e807e0099c3cfbf9c5b0c9e4154b9cb7a0
Author: Andreas Schwab <schwab@suse.de>
Date: Fri May 15 17:38:30 2020 +0200
Fix missing assemble_external in ASM_OUTPUT_FDESC
When TARGET_VTABLE_USES_DESCRIPTORS is defined then function pointers in
the vtable are output by ASM_OUTPUT_FDESC. The only current user of
this is ia64, but its implementation of ASM_OUTPUT_FDESC lacks a call to
assemble_external. Thus if there is no other reference to the function
the weak declaration for it will be missing.
PR target/95154
* config/ia64/ia64.h (ASM_OUTPUT_FDESC): Call assemble_external.
commit 0ecf5229723ec99e6b5099dd68d48bd925da6b0d
Author: Andreas Schwab <schwab@suse.de>
Date: Thu Nov 21 15:15:40 2013 +0100
Missing __divtf3@@GCC_4.4.0 on ia64
gcc/testsuite/
PR libfortran/59227
* gfortran.dg/erf_3.F90: Remove XFAIL on ia64-*-linux*.
libgcc/
PR target/59230
PR libfortran/59227
* config/ia64/t-softfp-compat (softfp_file_list): Filter out
soft-fp/divtf3.c.
(LIB2ADD): Add config/ia64/divtf3.c.
* config/ia64/divtf3.c: New file.
commit c0b99f67639956eaadfc8da6a704e0e1edbafc18
Author: liuhongt <hongtao.liu@intel.com>
Date: Thu Jun 4 13:22:09 2020 +0800
Fix uppercase in trunc<mode><pmov_dst_3>2.
2020-06-04 Hongtao.liu <hongtao.liu@intel.com>
gcc/ChangeLog:
* config/i386/sse.md (pmov_dst_3_lower): New mode attribute.
(trunc<mode><pmov_dst_3_lower>2): Refine from
trunc<mode><pmov_dst_3>2.
gcc/testsuite
* gcc.target/i386/pr92658-avx512bw-trunc.c: Adjust testcase.
commit eeb54a14c48f543857f561556ab1fc49dc21af26
Author: Jakub Jelinek <jakub@redhat.com>
Date: Thu Jun 4 09:09:01 2020 +0200
c++: Reject some further reinterpret casts in constexpr [PR82304, PR95307]
cxx_eval_outermost_constant_expr had a check for reinterpret_casts from
pointers (well, it checked from ADDR_EXPRs) to integral type, but that
only caught such cases at the toplevel of expressions.
As the comment said, it should be done even inside of the expressions,
but at the point of the writing e.g. pointer differences used to be a
problem. We now have POINTER_DIFF_EXPR, so this is no longer an issue.
Had to do it just for CONVERT_EXPR, because the FE emits NOP_EXPR casts
from pointers to integrals in various spots, e.g. for the PMR & 1 tests,
though on NOP_EXPR we have the REINTERPRET_CAST_P bit that we do check,
while on CONVERT_EXPR we don't.
2020-06-04 Jakub Jelinek <jakub@redhat.com>
PR c++/82304
PR c++/95307
* constexpr.c (cxx_eval_constant_expression): Diagnose CONVERT_EXPR
conversions from pointer types to arithmetic types here...
(cxx_eval_outermost_constant_expr): ... instead of here.
* g++.dg/template/pr79650.C: Expect different diagnostics and expect
it on all lines that do pointer to integer casts.
* g++.dg/cpp1y/constexpr-shift1.C: Expect different diagnostics.
* g++.dg/cpp1y/constexpr-82304.C: New test.
* g++.dg/cpp0x/constexpr-95307.C: New test.
commit 9a5b7438c85a926a0dba9dc980039f3d67571763
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date: Thu Jun 4 00:16:34 2020 +0000
Daily bump.
commit 1dc83b460653c29f96b4659579e2151fae0d1e6e
Author: Mark Wielaard <mark@klomp.org>
Date: Sun May 24 00:44:22 2020 +0200
Provide diagnostic hints for missing C++ cinttypes string constants.
When reporting an error in cp_parser and we notice a string literal
followed by an unknown name check whether there is a known standard
header containing a string macro with the same name, then add a hint
to the error message to include that header.
gcc/c-family/ChangeLog:
* known-headers.cc (get_cp_stdlib_header_for_string_macro_name):
New function.
* known-headers.h (get_cp_stdlib_header_for_string_macro_name):
New function declaration.
gcc/cp/ChangeLog:
* parser.c (cp_lexer_safe_previous_token): New function.
(cp_parser_error_1): Add name_hint if the previous token is
a string literal and next token is a CPP_NAME and we have a
missing header suggestion for the name.
gcc/testsuite/ChangeLog:
* g++.dg/spellcheck-inttypes.C: Add string-literal testcases.
commit 9eea5d2ddf73037e21b59bcd8084ba969ae10174
Author: Mark Wielaard <mark@klomp.org>
Date: Fri May 22 01:10:50 2020 +0200
Provide diagnostic hints for missing C inttypes.h string constants.
This adds a flag to c_parser so we know when we were trying to
construct a string literal. If there is a parse error and we were
constructing a string literal, and the next token is an unknown
identifier name, and we know there is a standard header that defines
that name as a string literal, then add a missing header hint to
the error messsage.
The list of macro names are also used when providing a hint for
missing identifiers.
gcc/c-family/ChangeLog:
* known-headers.cc (get_string_macro_hint): New function.
(get_stdlib_header_for_name): Use get_string_macro_hint.
(get_c_stdlib_header_for_string_macro_name): New function.
* known-headers.h (get_c_stdlib_header_for_string_macro_name):
New function declaration.
gcc/c/ChangeLog:
* c-parser.c (struct c_parser): Add seen_string_literal
bitfield.
(c_parser_consume_token): Reset seen_string_literal.
(c_parser_error_richloc): Add name_hint if seen_string_literal
and next token is a CPP_NAME and we have a missing header
suggestion for the name.
(c_parser_string_literal): Set seen_string_literal.
gcc/testsuite/ChangeLog:
* gcc.dg/spellcheck-inttypes.c: New test.
* g++.dg/spellcheck-inttypes.C: Likewise.
commit 34e4962aed08b38f37e37242234bfbbd1b897f39
Author: Mark Wielaard <mark@klomp.org>
Date: Sun May 24 18:01:51 2020 +0200
diagnostics: Add function call parens matching to c_parser.
The C++ parser already tracks function call parens matching, but the C
parser doesn't. This adds the same functionality to the C parser and adds
a testcase showing the C++ and C parser matching function call parens
in an error message.
gcc/c/ChangeLog:
* c-parser.c (c_parser_postfix_expression_after_primary): Add
scope with matching_parens after CPP_OPEN_PAREN.
gcc/testsuite/ChangeLog:
* c-c++-common/missing-close-func-paren.c: New test.
commit 29e304fd5f9097335c5d7d1b16f139439eeabe1f
Author: Vitor Guidi <vitor.guidi@usp.br>
Date: Wed Jun 3 17:01:21 2020 -0600
optimize tanh(x) / sinh (x) to 1/ cosh (x)
gcc/
* match.pd (tanh/sinh -> 1/cosh): New simplification.
gcc/testsuite
* gcc.dg/tanhbysinh.c: New testcase.
commit 817738fdf1ea368e47da4822dfe9ee1a7deb477b
Author: Joseph Myers <joseph@codesourcery.com>
Date: Wed Jun 3 22:18:54 2020 +0000
Update gcc sv.po.
* sv.po: Update.
commit c0d738a0f493a85f46d7618efe20a89bf7f7ead8
Author: Aaron Sawdey <acsawdey@linux.ibm.com>
Date: Tue Jun 2 15:48:01 2020 -0500
identify lfs prefixed case PR95347
The same problem also arises for plfs where prefixed_load_p()
doesn't recognize it so we get just lfs in the asm output
with an @pcrel address.
PR target/95347
* config/rs6000/rs6000.c (is_stfs_insn): Rename to
is_lfs_stfs_insn and make it recognize lfs as well.
(prefixed_store_p): Use is_lfs_stfs_insn().
(prefixed_load_p): Use is_lfs_stfs_insn() to recognize lfs.
commit c06280ac4c34b0aff8cfa2e74ae8c7afd759d52f
Author: Patrick Palka <ppalka@redhat.com>
Date: Wed Jun 3 16:37:24 2020 -0400
c++: more constrained nested partial specialization
When checking that a constrained partial specialization is more
constrained than the primary template, we pass only the innermost level
of generic template arguments to strictly_subsumes. This leads to us
doing a nonsensical substitution from normalize_concept_check if the
full set of template arguments has multiple levels, and it ultimately
causes strictly_subsumes to sometimes erroneously return false as in the
testcase below.
gcc/cp/ChangeLog:
* pt.c (process_partial_specialization): Pass the full set of
generic template arguments to strictly_subsumes.
gcc/testsuite/ChangeLog:
* g++.dg/cpp2a/concepts-partial-spec8.C: New test.
commit aee69073cdb8086d393f12474c6177e75467ceaa
Author: Patrick Palka <ppalka@redhat.com>
Date: Wed Jun 3 16:40:28 2020 -0400
c++: constrained nested partial specialization [PR92103]
When determining the most specialized partial specialization of a
primary template that is nested inside a class template, we first
tsubst the outer template arguments into the TEMPLATE_DECL of each
partial specialization, and then check for satisfaction of each of the
new TEMPLATE_DECL's constraints.
But tsubst_template_decl does not currently guarantee that constraints
from the original DECL_TEMPLATE_RESULT get reattached to the new
DECL_TEMPLATE_RESULT. In the testcase below, this leads to the
constraints_satisfied_p check in most_specialized_partial_spec to
trivially return true for each of the partial specializations.
I'm not sure if such a guarantee would be desirable, but in this case we
can just check constraints_satisfied_p on the original TEMPLATE_DECL
instead of on the tsubsted TEMPLATE_DECL here, which is what this patch
does (alongside some reorganizing).
gcc/cp/ChangeLog:
PR c++/92103
* pt.c (most_specialized_partial_spec): Reorganize the loop over
DECL_TEMPLATE_SPECIALIZATIONS. Check constraints_satisfied_p on
the original template declaration, not on the tsubsted one.
gcc/testsuite/ChangeLog:
PR c++/92103
* g++.dg/cpp2a/concepts-partial-spec7.C: New test.
commit 3fb68f2e666d9de7e0326af9f43b12c9e98f19a6
Author: Jan Hubicka <jh@suse.cz>
Date: Wed Jun 3 21:16:43 2020 +0200
Optimize ODR enum streaming
it turns out that half of the global decl stream of cc1 LTO build consits
TREE_LISTS, identifiers and integer cosntats representing TYPE_VALUES of enums.
Those are streamed only to produce ODR warning and used otherwise, so this
patch moves the info to a separate section that is represented and streamed
more effectively.
This also adds place for more info that may be used for ODR diagnostics
(i.e. at the moment we do not warn when the declarations differs i.e. by the
associated member functions and their types) and the type inheritance graph
rather then poluting the global stream.
I was bit unsure what enums we want to store into the section. All parsed
enums is probably too expensive, only those enums streamed to represent IL is
bit hard to get, so I went for those seen by free lang data.
As a plus we now get bit more precise warning because also the location of
mismatched enum CONST_DECL is streamed.
It changes:
[WPA] read 4608466 unshared trees
[WPA] read 2942094 mergeable SCCs of average size 1.365328
[WPA] 8625389 tree bodies read in total
[WPA] tree SCC table: size 524287, 247652 elements, collision ratio: 0.383702
[WPA] tree SCC max chain length 2 (size 1)
[WPA] Compared 2694442 SCCs, 228 collisions (0.000085)
[WPA] Merged 2694419 SCCs
[WPA] Merged 3731982 tree bodies
[WPA] Merged 633335 types
[WPA] 122077 types prevailed (155548 associated trees)
...
[WPA] Compression: 110593119 input bytes, 287696614 uncompressed bytes (ratio: 2.601397)
[WPA] Size of mmap'd section decls: 85628556 bytes
[WPA] Size of mmap'd section function_body: 13842928 bytes
[WPA] read 1720989 unshared trees
[WPA] read 1252217 mergeable SCCs of average size 1.858507
[WPA] 4048243 tree bodies read in total
[WPA] tree SCC table: size 524287, 226524 elements, collision ratio: 0.491759
[WPA] tree SCC max chain length 2 (size 1)
[WPA] Compared 1025693 SCCs, 196 collisions (0.000191)
[WPA] Merged 1025670 SCCs
[WPA] Merged 2063373 tree bodies
[WPA] Merged 633497 types
[WPA] 122299 types prevailed (155827 associated trees)
...
[WPA] Compression: 103428770 input bytes, 281151423 uncompressed bytes (ratio: 2.718310)
[WPA] Size of mmap'd section decls: 49390917 bytes
[WPA] Size of mmap'd section function_body: 13858258 bytes
...
[WPA] Size of mmap'd section odr_types: 29054816 bytes
So number of SCCs streamed drops to 38% and the number of unshared trees (that
are bit misnamed since it is mostly integer_cst) to 37%.
Things speeds up correspondingly, but I did not save time report from previous
build.
The enum values are still quite surprisingly large. I may take a look into
ways getting it smaller incrementally, but it streams reasonably fast:
Time variable usr sys wall GGC
phase opt and generate : 25.20 ( 68%) 10.88 ( 72%) 36.13 ( 69%) 868060 kB ( 52%)
phase stream in : 4.46 ( 12%) 0.90 ( 6%) 5.38 ( 10%) 790724 kB ( 48%)
phase stream out : 6.69 ( 18%) 3.32 ( 22%) 10.03 ( 19%) 8 kB ( 0%)
ipa lto gimple in : 0.79 ( 2%) 1.86 ( 12%) 2.39 ( 5%) 252612 kB ( 15%)
ipa lto gimple out : 2.48 ( 7%) 0.78 ( 5%) 3.26 ( 6%) 0 kB ( 0%)
ipa lto decl in : 1.71 ( 5%) 0.46 ( 3%) 2.34 ( 4%) 417883 kB ( 25%)
ipa lto decl out : 3.28 ( 9%) 0.07 ( 0%) 3.27 ( 6%) 0 kB ( 0%)
whopr wpa I/O : 0.40 ( 1%) 2.24 ( 15%) 2.77 ( 5%) 8 kB ( 0%)
lto stream decompression : 1.38 ( 4%) 0.31 ( 2%) 1.36 ( 3%) 0 kB ( 0%)
ipa ODR types : 0.18 ( 0%) 0.02 ( 0%) 0.25 ( 0%) 0 kB ( 0%)
ipa inlining heuristics : 11.64 ( 31%) 1.45 ( 10%) 13.12 ( 25%) 453160 kB ( 27%)
ipa pure const : 1.74 ( 5%) 0.00 ( 0%) 1.76 ( 3%) 0 kB ( 0%)
ipa icf : 1.72 ( 5%) 5.33 ( 35%) 7.06 ( 13%) 16593 kB ( 1%)
whopr partitioning : 2.22 ( 6%) 0.01 ( 0%) 2.23 ( 4%) 5689 kB ( 0%)
TOTAL : 37.17 15.20 52.46 1660886 kB
LTO-bootstrapped/regtested x86_64-linux, will comit it shortly.
gcc/ChangeLog:
2020-06-03 Jan Hubicka <hubicka@ucw.cz>
* ipa-devirt.c: Include data-streamer.h, lto-streamer.h and
streamer-hooks.h.
(odr_enums): New static var.
(struct odr_enum_val): New struct.
(class odr_enum): New struct.
(odr_enum_map): New hashtable.
(odr_types_equivalent_p): Drop code testing TYPE_VALUES.
(add_type_duplicate): Likewise.
(free_odr_warning_data): Do not free TYPE_VALUES.
(register_odr_enum): New function.
(ipa_odr_summary_write): New function.
(ipa_odr_read_section): New function.
(ipa_odr_summary_read): New function.
(class pass_ipa_odr): New pass.
(make_pass_ipa_odr): New function.
* ipa-utils.h (register_odr_enum): Declare.
* lto-section-in.c: (lto_section_name): Add odr_types section.
* lto-streamer.h (enum lto_section_type): Add odr_types section.
* passes.def: Add odr_types pass.
* lto-streamer-out.c (DFS::DFS_write_tree_body): Do not stream
TYPE_VALUES.
(hash_tree): Likewise.
* tree-streamer-in.c (lto_input_ts_type_non_common_tree_pointers):
Likewise.
* tree-streamer-out.c (write_ts_type_non_common_tree_pointers):
Likewise.
* timevar.def (TV_IPA_ODR): New timervar.
* tree-pass.h (make_pass_ipa_odr): Declare.
* tree.c (free_lang_data_in_type): Regiser ODR types.
gcc/lto/ChangeLog:
2020-06-03 Jan Hubicka <hubicka@ucw.cz>
* lto-common.c (compare_tree_sccs_1): Do not compare TYPE_VALUES.
gcc/testsuite/ChangeLog:
2020-06-03 Jan Hubicka <hubicka@ucw.cz>
* g++.dg/lto/pr84805_0.C: Update.
commit cf7eac5805e714c7e71b699329e2c4f4a88addc1
Author: Iain Sandoe <iain@sandoe.co.uk>
Date: Wed Jun 3 09:03:22 2020 +0100
coroutines: Allow parameter packs in co_await/yield expressions [PR95345]
This corrects a pasto, where I copied the constraint on bare
parameter packs from the co_return to co_yield/await without
properly reviewing it.
gcc/cp/ChangeLog:
PR c++/95345
* coroutines.cc (finish_co_await_expr): Revise to allow for
parameter packs.
(finish_co_yield_expr): Likewise.
gcc/testsuite/ChangeLog:
PR c++/95345
* g++.dg/coroutines/pr95345.C: New test.
commit b19d8aac15649f31a7588b2634411a1922906ea8
Author: Romain Naour <romain.naour@gmail.com>
Date: Wed Jun 3 12:30:57 2020 -0600
Fix missing dependencies for selftests which occasionally causes failed builds.
gcc/
* Makefile.in (SELFTEST_DEPS): Move before including language makefile
fragments.
commit ef4e0c35546ba2c897613925c1d2485603ca3ab1
Author: Jason Merrill <jason@redhat.com>
Date: Tue Jun 2 16:23:02 2020 -0400
c++: Fix VLA in template [PR95232]
In a non-template, grokdeclarator notices when we build a pointer to a
variably-modified type, and inserts a TYPE_DECL to make sure that type gets
gimplified. But in a template we can't always recognize a variably-modified
type, so we need to deal with it at instantiation time.
gcc/cp/ChangeLog:
PR c++/95232
* cp-tree.h (predeclare_vla): Declare.
* cp-gimplify.c (predeclare_vla): Handle getting a decl.
* pt.c (tsubst_expr) [DECL_EXPR]: Use it.
gcc/testsuite/ChangeLog:
PR c++/95232
* g++.dg/ubsan/vla-2.C: New test.
commit 8d57c30611b05a89fd265f6c0a74fe829c21cd34
Author: José Rui Faustino de Sousa <jrfsousa@gmail.com>
Date: Wed Jun 3 19:33:11 2020 +0200
Simple patch only add assumed-rank to the list of possible attributes.
gcc/fortran/ChangeLog:
2020-06-03 José Rui Faustino de Sousa <jrfsousa@gmail.com>
PR fortran/95214
PR fortran/66833
PR fortran/67938
* trans-expr.c (gfc_maybe_dereference_var): Add assumed-rank to
character dummy arguments list of possible attributes.
gcc/testsuite/ChangeLog:
2020-06-03 José Rui Faustino de Sousa <jrfsousa@gmail.com>
PR fortran/95214
PR fortran/66833
PR fortran/67938
* gfortran.dg/PR95214.f90: New test.
commit 887c45fb5b047171e82710baa51108d5c210eb42
Author: Richard Biener <rguenther@suse.de>
Date: Wed Jun 3 15:51:29 2020 +0200
tree-optimization/95487 - use a truth type for scatter masks
This makes sure to get a truth type for scatter masks even when they
are invariant.
2020-06-03 Richard Biener <rguenther@suse.de>
PR tree-optimization/95487
* tree-vect-stmts.c (vectorizable_store): Use a truth type
for the scatter mask.
* g++.dg/vect/pr95487.cc: New testcase.
commit 6d36cc21b69d952967a4df6653954f572a101796
Author: David Malcolm <dmalcolm@redhat.com>
Date: Wed Jun 3 08:59:23 2020 -0400
jit: implement BT_CONST_VOLATILE_PTR [PR 95306]
gcc/jit/ChangeLog:
PR jit/95306
* jit-builtins.c (builtins_manager::make_primitive_type):
Implement BT_CONST_VOLATILE_PTR.
gcc/testsuite/ChangeLog:
PR jit/95306
* jit.dg/test-pr95306-builtin-types.c (create_code): Add
test of getting __atomic_load.
commit 779ae320bfadc5d867ecaeddf394838d546b57b9
Author: Richard Biener <rguenther@suse.de>
Date: Wed Jun 3 14:06:20 2020 +0200
tree-optimization/95495 - use SLP_TREE_REPRESENTATIVE in assertion
This fixes a place where I missed to use SLP_TREE_REPRESENTATIVE
after its introduction.
2020-06-03 Richard Biener <rguenther@suse.de>
PR tree-optimization/95495
* tree-vect-slp.c (vect_slp_analyze_node_operations): Use
SLP_TREE_REPRESENTATIVE in the shift assertion.
* gcc.dg/vect/pr95495.c: New testcase.
commit 079632de497a58a78971b8fc35cf3a52148857d1
Author: Tom Tromey <tromey@adacore.com>
Date: Fri May 29 10:46:57 2020 -0600
Prefer simple case changes in spelling suggestions
I got this error message when editing gcc and recompiling:
../../gcc/gcc/ada/gcc-interface/decl.c:7714:39: error: âDWARF_GNAT_ENCODINGS_allâ was not declared in this scope; did you mean âDWARF_GNAT_ENCODINGS_GDBâ?
7714 | = debug_info && gnat_encodings == DWARF_GNAT_ENCODINGS_all;
| ^~~~~~~~~~~~~~~~~~~~~~~~
| DWARF_GNAT_ENCODINGS_GDB
This suggestion could be improved -- what happened here is that I
failed to upper-case the word, and DWARF_GNAT_ENCODINGS_ALL was the
correct spelling.
This patch changes gcc's spell checker to prefer simple case changes
when possible.
I tested this using the self-tests. A new self-test is also included.
gcc/ChangeLog:
* spellcheck.c (CASE_COST): New define.
(BASE_COST): New define.
(get_edit_distance): Recognize case changes.
(get_edit_distance_cutoff): Update.
(test_edit_distances): Update.
(get_old_cutoff): Update.
(test_find_closest_string): Add case sensitivity test.
commit f05c84ac139ccd5398542369aad2b5ff3059ced4
Author: Richard Biener <rguenther@suse.de>
Date: Wed Jun 3 13:17:11 2020 +0200
simplify visited flag unsetting in SLP scalar cost computation
This changes the loop over all stmts to a loop over all costed stmts.
2020-06-03 Richard Biener <rguenther@suse.de>
* tree-vect-slp.c (vect_bb_vectorization_profitable_p): Loop over
the cost vector to unset the visited flag on stmts.
commit 93535a2b40367e6f68433295b37dc52c0e9c2c55
Author: Tobias Burnus <tobias@codesourcery.com>
Date: Wed Jun 3 12:28:25 2020 +0200
[OpenMP] Fix mapping of artificial variables (PR94874)
gcc/c-family/ChangeLog:
* c-common.h (c_omp_predetermined_mapping): Declare.
* c-omp.c (c_omp_predetermined_mapping): New.
gcc/c/ChangeLog:
* c-objc-common.h (LANG_HOOKS_OMP_PREDETERMINED_MAPPING): Redefine.
gcc/cp/ChangeLog:
* cp-gimplify.c (cxx_omp_predetermined_mapping): New.
* cp-objcp-common.h (LANG_HOOKS_OMP_PREDETERMINED_MAPPING): Redfine.
* cp-tree.h (cxx_omp_predetermined_mapping): Declare.
gcc/fortran/ChangeLog:
* f95-lang.c (LANG_HOOKS_OMP_PREDETERMINED_MAPPING): Redefine.
* trans-openmp.c (gfc_omp_predetermined_mapping): New.
* trans.h (gfc_omp_predetermined_mapping): Declare.
gcc/ChangeLog:
* gimplify.c (omp_notice_variable): Use new hook.
* langhooks-def.h (lhd_omp_predetermined_mapping): Declare.
(LANG_HOOKS_OMP_PREDETERMINED_MAPPING): Define
(LANG_HOOKS_DECLS): Add it.
* langhooks.c (lhd_omp_predetermined_sharing): Remove bogus unused attr.
(lhd_omp_predetermined_mapping): New.
* langhooks.h (struct lang_hooks_for_decls): Add new hook.
gcc/testsuite/ChangeLog
2020-06-03 Thomas Schwinge <thomas@codesourcery.com>
Tobias Burnus <tobias@codesourcery.com>
PR middle-end/94874
* c-c++-common/gomp/pr94874.c: New.
commit dda71670514e88dcd9b913c44c0ee64d8c3d6da9
Author: Jan Hubicka <jh@suse.cz>
Date: Wed Jun 3 12:03:40 2020 +0200
Cleanup LTO tag streaming.
this patch cleanups a bit the way LTO tags are assigned (so we do not use magic
numbers of 2) and reorders them approximately by their frequency so the stream
gets little bit smaller because of uleb coding.
From:
[WPA] Compression: 111213968 input bytes, 293801489 uncompressed bytes (ratio: 2.641768)
[WPA] Size of mmap'd section decls: 85983129 bytes
[WPA] Size of mmap'd section function_body: 14058627 bytes
to:
[WPA] Compression: 110593119 input bytes, 287696614 uncompressed bytes (ratio: 2.601397)
[WPA] Size of mmap'd section decls: 85628556 bytes
[WPA] Size of mmap'd section function_body: 13842928 bytes
lto-bootstrapped/regtested x86_64-linux, will commit it shortly.
* lto-streamer.h (LTO_tags): Reorder so frequent tags has small indexes;
add LTO_first_tree_tag and LTO_first_gimple_tag.
(lto_tag_is_tree_code_p): Update.
(lto_tag_is_gimple_code_p): Update.
(lto_gimple_code_to_tag): Update.
(lto_tag_to_gimple_code): Update.
(lto_tree_code_to_tag): Update.
(lto_tag_to_tree_code): Update.
More information about the Gcc-cvs
mailing list