189633 Commits

Author SHA1 Message Date
Ghjuvan Lacambre
adc9410f95 [Ada] sem_util.adb: fix typos in Accessibility_Level docs
gcc/ada/

	* sem_util.adb (Accessibility_Level): Fix typos.
2021-11-09 09:44:47 +00:00
Tom Tromey
99c8e906b1 [Ada] Document the SuSE kernel bug
gcc/ada/

	* doc/gnat_ugn/platform_specific_information.rst: Document the
	SuSE kernel bug.
	* gnat_ugn.texi: Regenerate.
2021-11-09 09:44:47 +00:00
Gary Dismukes
64cb8ebef3 [Ada] Errors on globals in expressions of predicate aspects in generic bodies
gcc/ada/

	* sem_ch13.adb (Freeze_Entity_Checks): Analyze the expression of
	a pragma Predicate associated with an aspect at the freeze point
	of the type, to ensure that references to globals get saved when
	the aspect occurs within a generic body. Also, add
	Aspect_Static_Predicate to the choices of the membership test of
	the enclosing guard.
2021-11-09 09:44:47 +00:00
Piotr Trojanek
1275c4031a [Ada] Tune comment about expansion of array equality
gcc/ada/

	* exp_ch4.adb (Arr_Attr): Refine type of the parameter from Int
	to Pos; refine name of the parameter from Num to Dim; fix
	reference to "Expr" in comment.
2021-11-09 09:44:47 +00:00
Steve Baird
c914810688 [Ada] Add missing regular expression syntax error check
gcc/ada/

	* libgnat/s-regexp.adb (Compile.Check_Well_Formed_Patern): When
	a "|" operator is encountered in a pattern, check that it is not
	the last character of the pattern.
2021-11-09 09:44:47 +00:00
Yannick Moy
ea8726cac5 [Ada] Complete support for prefixed call on subtypes/derived types
gcc/ada/

	* sem_ch3.adb (Analyze_Subtype_Declaration,
	Derived_Type_Declaration): Initialize list of primitive
	operations when Extensions_Allowed.
2021-11-09 09:44:47 +00:00
Piotr Trojanek
51ad879c72 [Ada] Fix detection of array aggregates with single others associations
gcc/ada/

	* checks.adb (Apply_Constraint_Check): Guard against calling
	Choices when the first association in an array aggregate is a
	N_Iterated_Component_Association node.
2021-11-09 09:44:47 +00:00
Yannick Moy
ca803c3d7b [Ada] Fix support for prefixed call with incomplete type declarations
gcc/ada/

	* sem_ch3.adb (Analyze_Incomplete_Type_Decl): Add the missing
	initialization.
2021-11-09 09:44:46 +00:00
Piotr Trojanek
9c8bb4d682 [Ada] Guard against illegal items in Global but not Depends
gcc/ada/

	* sem_prag.adb (Check_Usage): Guard against calling Usage_Error
	with illegal Item_Id. The intention to do this was already
	described in the comment but not implemented.
2021-11-09 09:44:46 +00:00
Etienne Servais
74e514af79 [Ada] Build activation chain for BIP only when needed
gcc/ada/

	* exp_ch6.adb (Expand_Actuals): Add a condition to check for the
	possibility of task.
2021-11-09 09:44:46 +00:00
Aldy Hernandez
6b8b959675 Convert strlen pass from evrp to ranger.
The following patch converts the strlen pass from evrp to ranger,
leaving DOM as the last remaining user.

No additional cleanups have been done.  For example, the strlen pass
still has uses of VR_ANTI_RANGE, and the sprintf still passes around
pairs of integers instead of using a proper range.  Fixing this
could further improve these passes.

Basically the entire patch is just adjusting the calls to range_of_expr
to include context.  The previous context of si->stmt was mostly
empty, so not really useful ;-).

With ranger we are now able to remove the range calculation from
before_dom_children entirely.  Just working with the ranger on-demand
catches all the strlen and sprintf testcases with the exception of
builtin-sprintf-warn-22.c which is due to a limitation of the sprintf
code.  I have XFAILed the test and documented what the problem is.

On a positive note, these changes found two possible sprintf overflow
bugs in the C++ and Fortran front-ends which I have fixed below.

Tested on x86-64 Linux.

gcc/ChangeLog:

	* tree-ssa-strlen.c (compare_nonzero_chars): Pass statement
	context to ranger.
	(get_addr_stridx): Same.
	(get_stridx): Same.
	(get_range_strlen_dynamic): Same.
	(handle_builtin_strlen): Same.
	(handle_builtin_strchr): Same.
	(handle_builtin_strcpy): Same.
	(maybe_diag_stxncpy_trunc): Same.
	(handle_builtin_stxncpy_strncat): Same.
	(handle_builtin_memcpy): Same.
	(handle_builtin_strcat): Same.
	(handle_alloc_call): Same.
	(handle_builtin_memset): Same.
	(handle_builtin_string_cmp): Same.
	(handle_pointer_plus): Same.
	(count_nonzero_bytes_addr): Same.
	(count_nonzero_bytes): Same.
	(handle_store): Same.
	(fold_strstr_to_strncmp): Same.
	(handle_integral_assign): Same.
	(check_and_optimize_stmt): Same.
	(class strlen_dom_walker): Replace evrp with ranger.
	(strlen_dom_walker::before_dom_children): Remove evrp.
	(strlen_dom_walker::after_dom_children): Remove evrp.
	* gimple-ssa-warn-access.cc (maybe_check_access_sizes):
	Restrict sprintf output.

gcc/cp/ChangeLog:

	* ptree.c (cxx_print_xnode): Add more space to pfx array.

gcc/fortran/ChangeLog:

	* misc.c (gfc_dummy_typename): Make sure ts->kind is
	non-negative.

gcc/testsuite/ChangeLog:

	* gcc.dg/tree-ssa/builtin-sprintf-warn-22.c: XFAIL.
2021-11-09 09:55:58 +01:00
Rasmus Villemoes
cc6b8cd9a2 libstdc++: only define _GLIBCXX_HAVE_TLS for VxWorks >= 6.6
According to
https://gcc.gnu.org/legacy-ml/gcc-patches/2008-03/msg01698.html, the
TLS support, including the __tls_lookup function, was added to VxWorks
in 6.6.

It certainly doesn't exist on our VxWorks 5 platform, but the fallback
code in eh_globals.cc using __gthread_key_create() etc. used to work
just fine.

libstdc++-v3/ChangeLog:

	* config/os/vxworks/os_defines.h (_GLIBCXX_HAVE_TLS): Only
	define for VxWorks >= 6.6.
2021-11-09 09:51:08 +01:00
Martin Liska
69b6cce92e Fix clang -Wcast-qual warning.
gcc/ChangeLog:

	* genconditions.c (write_one_condition): Add const qualifier
	to pointer casting.
2021-11-09 09:46:09 +01:00
Jeff Law
2abd924f91 Minor optimization of variable bit testing
gcc/
	* match.pd: New pattern to simplify (1 << n) & M ==/!= 0 for M
	being a power of 2.

gcc/testsuite
	* gcc.dg/tree-ssa/bittest.c: New test
2021-11-08 23:23:34 -05:00
GCC Administrator
1bd89833d7 Daily bump. 2021-11-09 00:16:21 +00:00
Bill Schmidt
206c08ce28 rs6000: Add escape-newline support for builtins files
2021-11-08  Bill Schmidt  <wschmidt@linux.ibm.com>

gcc/
	* config/rs6000/rs6000-builtin-new.def (VEC_INIT_V16QI): Use
	escape-newline support.
	(VEC_INIT_V4SI): Likewise.
	(VEC_INIT_V8HI): Likewise.
	(PACK_V1TI): Likewise.
	(DIVDEU): Likewise.
	(VFIRSTMISMATCHOREOSINDEX_V16QI): Likewise.
	(VFIRSTMISMATCHOREOSINDEX_V8HI): Likewise.
	(VFIRSTMISMATCHOREOSINDEX_V4SI): Likewise.
	(CMPRB2): Likewise.
	(VSTDCP): Likewise.
	(VSIEDP): Likewise.
	(FMAF128_ODD): Likewise.
	(VSCEQPUO): Likewise.
	(VSIEQP): Likewise.
	(VSIEQPF): Likewise.
	(VSTDCQP): Likewise.
	(PACK_TD): Likewise.
	(TABORTDC): Likewise.
	(TABORTDCI): Likewise.
	(SE_LXVRBX): Likewise.
	(SE_LXVRHX): Likewise.
	(SE_LXVRWX): Likewise.
	(SE_LXVRDX): Likewise.
	(VREPLACE_UN_UV2DI): Likewise.
	(VREPLACE_UN_UV4SI): Likewise.
	(VREPLACE_UN_V2DI): Likewise.
	(VREPLACE_ELT_UV2DI): Likewise.
	(VREPLACE_ELT_V2DI): Likewise.
	(ZE_LXVRBX): Likewise.
	(ZE_LXVRHX): Likewise.
	(ZE_LXVRWX): Likewise.
	(ZE_LXVRDX): Likewise.
	(CFUGED): Likewise.
	(CNTLZDM): Likewise.
	(CNTTZDM): Likewise.
	(PDEPD): Likewise.
	(PEXTD): Likewise.
	(PMXVBF16GER2): Likewise.
	(PMXVBF16GER2_INTERNAL): Likewise.
	(PMXVBF16GER2NN): Likewise.
	(PMXVBF16GER2NN_INTERNAL): Likewise.
	(PMXVBF16GER2NP): Likewise.
	(PMXVBF16GER2NP_INTERNAL): Likewise.
	(PMXVBF16GER2PN): Likewise.
	(PMXVBF16GER2PN_INTERNAL): Likewise.
	(PMXVBF16GER2PP): Likewise.
	(PMXVBF16GER2PP_INTERNAL): Likewise.
	(PMXVF16GER2): Likewise.
	(PMXVF16GER2_INTERNAL): Likewise.
	(PMXVF16GER2NN): Likewise.
	(PMXVF16GER2NN_INTERNAL): Likewise.
	(PMXVF16GER2NP): Likewise.
	(PMXVF16GER2NP_INTERNAL): Likewise.
	(PMXVF16GER2PN): Likewise.
	(PMXVF16GER2PN_INTERNAL): Likewise.
	(PMXVF16GER2PP): Likewise.
	(PMXVF16GER2PP_INTERNAL): Likewise.
	(PMXVF32GER_INTERNAL): Likewise.
	(PMXVF32GERNN): Likewise.
	(PMXVF32GERNN_INTERNAL): Likewise.
	(PMXVF32GERNP): Likewise.
	(PMXVF32GERNP_INTERNAL): Likewise.
	(PMXVF32GERPN): Likewise.
	(PMXVF32GERPN_INTERNAL): Likewise.
	(PMXVF32GERPP): Likewise.
	(PMXVF32GERPP_INTERNAL): Likewise.
	(PMXVF64GER): Likewise.
	(PMXVF64GER_INTERNAL): Likewise.
	(PMXVF64GERNN): Likewise.
	(PMXVF64GERNN_INTERNAL): Likewise.
	(PMXVF64GERNP): Likewise.
	(PMXVF64GERNP_INTERNAL): Likewise.
	(PMXVF64GERPN): Likewise.
	(PMXVF64GERPN_INTERNAL): Likewise.
	(PMXVF64GERPP): Likewise.
	(PMXVF64GERPP_INTERNAL): Likewise.
	(PMXVI16GER2): Likewise.
	(PMXVI16GER2_INTERNAL): Likewise.
	(PMXVI16GER2PP): Likewise.
	(PMXVI16GER2PP_INTERNAL): Likewise.
	(PMXVI16GER2S): Likewise.
	(PMXVI16GER2S_INTERNAL): Likewise.
	(PMXVI16GER2SPP): Likewise.
	(PMXVI16GER2SPP_INTERNAL): Likewise.
	(PMXVI4GER8): Likewise.
	(PMXVI4GER8_INTERNAL): Likewise.
	(PMXVI4GER8PP): Likewise.
	(PMXVI4GER8PP_INTERNAL): Likewise.
	(PMXVI8GER4): Likewise.
	(PMXVI8GER4_INTERNAL): Likewise.
	(PMXVI8GER4PP): Likewise.
	(PMXVI8GER4PP_INTERNAL): Likewise.
	(PMXVI8GER4SPP): Likewise.
	(PMXVI8GER4SPP_INTERNAL): Likewise.
	* config/rs6000/rs6000-gen-builtins.c (MAXLINES): New macro.
	(linebuf): Increase size.
	(lines): New variable.
	(lastline): Likewise.
	(real_line_pos): New function.
	(diag): Change signature.
	(bif_diag): Change signature; support escape-newline handling.
	(ovld_diag): Likewise.
	(fatal): Move earlier.
	(consume_whitespace): Adjust diag call.
	(advance_line): Add escape-newline handling; call fatal.
	(safe_inc_pos): Adjust diag call.
	(match_identifier): Likewise.
	(match_integer): Likewise.
	(match_to_right_bracket): Call fatal instead of diag; adjust diag
	call.
	(match_basetype): Adjust diag calls.
	(match_bracketed_pair): Likewise.
	(match_const_restriction): Likewise.
	(match_type): Likewise.
	(parse_args): Likewise.
	(parse_bif_attrs): Likewise.
	(complete_vector_type): Likewise.
	(complete_base_type): Likewise.
	(parse_prototype): Likewise.
	(parse_bif_entry): Likewise.
	(parse_bif_stanza): Likewise.
	(parse_ovld_entry): Likewise.
	(parse_ovld_stanza): Likewise.
	(main): Allocate buffers for lines[].
2021-11-08 15:59:57 -06:00
Eric Botcazou
6c5fffd127 Fix couple of issues in large PIC model on x86-64/VxWorks
The first issue is that the !gotoff_operand path of legitimize_pic_address
in the large PIC model does not make use of REG when it is available, which
breaks for thunks because new pseudo-registers can no longer be created.
And the second issue is that the system compiler (LLVM) generates @GOTOFF
in large model even for RTP, so we do the same.

gcc/
	* config/i386/i386.c (legitimize_pic_address): Adjust comment and
	use the REG argument on the CM_LARGE_PIC code path as well.
	* config/i386/predicates.md (gotoff_operand): Do not treat VxWorks
	specially with the large code models.
2021-11-08 22:12:19 +01:00
Jan Hubicka
d44d791012 Remove workaround allowing interposition of nested functions.
* gimple.c (gimple_call_static_chain_flags): Revert the workaround
	allowing interposition since issues with binds_to_local_def were
	hopefully solved.
2021-11-08 18:58:51 +01:00
Andrew MacLeod
0cd653bd25 Don't calculate new values when using the private context callback.
When using rangers private callback mechanism to provide context
to fold_stmt calls, we are only suppose to be using the cache in read
only mode, never calculate new values.

	gcc/
	PR tree-optimization/103122
	* gimple-range.cc (gimple_ranger::range_of_expr): Request the cache
	entry with "calulate new values" set to false.

	gcc/testsuite/
	* g++.dg/pr103122.C: New.
2021-11-08 12:48:57 -05:00
Jan Hubicka
33a7a63275 Improve handling of some builtins.
For nested functions we output call to builtin_dwarf_cfa which
initializes frame entry used only for debugging.  This however
prevents us from detecting functions containing nested functions
as const/pure or analyze side effects in modref.

builtin_dwarf_cfa is not documented and I wonder if it should be turned to
internal function. But I think we could consider functions using it const even
if in theory one can do things like test the return address and see the
difference between different frame addreses.

While doing so I also noticed that special_buitin_state handles quite few
builtins that are not special cased by ipa-modref.  They do not make
user visible loads/stores and thus I think they shoul dbe annotated by
".c" to make this explicit for both modref and PTA.

Finally I aded dwarf_cfa and similar return_address to list of simple
bulitins since it compiles to simple stack frame load (and we consider
simple other builtins doing so).

	* builtins.c (is_simple_builtin): Add builitin_dwarf_cfa
	and builtin_return_address.
	(builtin_fnspec): Annotate builtin_return,
	bulitin_eh_pointer, builtin_eh_filter, builtin_unwind_resume,
	builtin_cxa_end_cleanup, builtin_eh_copy_values,
	builtin_frame_address, builtin_apply_args,
	builtin_asan_before_dynamic_init, builtin_asan_after_dynamic_init,
	builtin_prefetch, builtin_dwarf_cfa, builtin_return_addrss
	as ".c"
	* ipa-pure-const.c (special_builtin_state): Add builtin_dwarf_cfa
	and builtin_return_address.
2021-11-08 18:40:17 +01:00
Jan Hubicka
666d780426 Move uncprop after modref
moveS uncprop after modref and pure/const pass and adds a comment that
this pass should alwasy be last since it is only supposed to help PHI lowering.
The pass replaces constant by SSA names that are known to be constant at the
place which hardly helps other passes.

gcc/ChangeLog:

	PR tree-optimization/103177
	* passes.def: Move uncprop after pure/const and modref.
2021-11-08 18:38:09 +01:00
Martin Jambor
239d82d4c0
ipa: Unshare expresseions before putting them into debug statements (PR 103099, PR 103107)
My recent patch to improve debug experience when there are removed
parameters (by ipa-sra or ipa-split) was not careful to unshare the
expressions that were then put into debug statements, which manifests
itself as PR 103099.  This patch adds unsharing them using
unshare_expr_without_location which is a bit more careful with stripping
locations than what we were doing manually and so also fixes PR 103107.

gcc/ChangeLog:

2021-11-08  Martin Jambor  <mjambor@suse.cz>

	PR ipa/103099
	PR ipa/103107
	* tree-inline.c (remap_gimple_stmt): Unshare the expression without
	location before invoking remap_with_debug_expressions on it.
	* ipa-param-manipulation.c
	(ipa_param_body_adjustments::prepare_debug_expressions): Likewise.

gcc/testsuite/ChangeLog:

2021-11-08  Martin Jambor  <mjambor@suse.cz>

	PR ipa/103099
	PR ipa/103107
	* g++.dg/ipa/pr103099.C: New test.
	* gcc.dg/ipa/pr103107.c: Likewise.
2021-11-08 17:52:51 +01:00
David Edelsohn
a7dce7626a powerpc: Fix vsx_splat_v4si_di breakage on Power8.
The vsx_splat_v4si_di pattern uses a Power8 and a Power9 instruction.
The final condition of TARGET_DIRECT_MODE_64BIT implicitly requires Power8.
The "we" constraint requires Power9, but also requires 64 bit. Because
the DImode pattern already requires 64 bit mode, this isn't horrible,
but it would be best to remove all uses of "we" constraint.  The
mtvsrws instruction itself does not require 64 bit mode.

This patch reverts the previous change to fix the breakage.

gcc/ChangeLog:

	* config/rs6000/vsx.md (vsx_splat_v4si_di): Revert "wa"
	constraint to "we".
2021-11-08 11:46:47 -05:00
Richard Biener
d626fe77cd Fix spurious valgrind errors in irred loop verification
The sbitmap bitmap_{set,clear}_bit changes trigger spurious
uninit value use reportings from valgrind since we now
read the old value before setting/clearing a bit so
verify_loop_structures optimization to not clear the sbitmap is reported.

Fixed by using a temporary BB flag which should also be more
efficient in terms of cache re-use.

2021-11-08  Richard Biener  <rguenther@suse.de>

	* cfgloop.c (verify_loop_structure): Use a temporary BB flag
	instead of an sbitmap to cache irreducible state.
2021-11-08 16:19:35 +01:00
Aldy Hernandez
18546941ae path solver: Avoid recalculating ranges already in the cache.
The problem here is an ordering issue with a path that starts
with 19->3:

 <bb 3> [local count: 916928331]:
  # value_20 = PHI <value_17(19), value_7(D)(17)>
  # n_27 = PHI <n_16(19), 1(17)>
  n_16 = n_27 + 4;
  value_17 = value_20 / 10000;
  if (value_20 > 42949672959999)
    goto <bb 19>; [89.00%]
  else
    goto <bb 4>; [11.00%]

The problem here is that both value_17 and value_20 are in the set of
imports we must pre-calculate.  The value_17 name occurs first in the
bitmap, so we try to resolve it first, which causes us to recursively
solve the value_20 range.  We do so correctly and put them both in the
cache.  However, when we try to solve value_20 from the bitmap, we
ignore that it already has a cached entry and try to resolve the PHI
with the wrong value of value_17:

  # value_20 = PHI <value_17(19), value_7(D)(17)>

The right thing to do is to avoid recalculating definitions already
solved.

Regstrapped and checked for # threads before and after on x86-64 Linux.

gcc/ChangeLog:

	PR tree-optimization/103120
	* gimple-range-path.cc (path_range_query::range_defined_in_block):
	Bail if there's a cache entry.

gcc/testsuite/ChangeLog:

	* gcc.dg/pr103120.c: New test.
2021-11-08 16:08:09 +01:00
Bill Schmidt
a354b4255b rs6000: Miscellaneous uses of rs6000_builtins_decl_x
There are a few leftover places where we use the old rs6000_builtins_decl
array, but we need to use rs6000_builtins_decl_x instead when the new
builtins infrastructure is in play.

2021-11-08  Bill Schmidt  <wschmidt@linux.ibm.com>

gcc/
	* config/rs6000/rs6000.c (rs6000_builtin_reciprocal): Use
	rs6000_builtin_decls_x when appropriate.
	(add_condition_to_bb): Likewise.
	(rs6000_atomic_assign_expand_fenv): Likewise.
2021-11-08 08:49:45 -06:00
Bill Schmidt
71cf7c0a0e rs6000: Update rs6000_builtin_decl
Create a new version of this function that uses the new infrastructure,
and particularly checks for supported builtins the new way.

2021-11-08  Bill Schmidt  <wschmidt@linux.ibm.com>

gcc/
	* config/rs6000/rs6000-call.c (rs6000_new_builtin_decl): New function.
	(rs6000_builtin_decl): Call it.
2021-11-08 08:49:37 -06:00
Martin Liska
355eb60b66 Fix static chain dump.
gcc/ChangeLog:

	* cgraph.c (cgraph_node::dump): Dump it from decl.
2021-11-08 12:57:08 +01:00
Martin Liska
7553bd35c8 gcov-profile: Fix -fcompare-debug with -fprofile-generate [PR100520]
PR gcov-profile/100520

gcc/ChangeLog:

	* coverage.c (coverage_compute_profile_id): Strip .gk when
	compare debug is used.
	* system.h (endswith): New function.

gcc/testsuite/ChangeLog:

	* gcc.dg/pr100520.c: New test.
2021-11-08 12:52:16 +01:00
Martin Liska
409767d774 Dump static chain for cgraph_node.
gcc/ChangeLog:

	* cgraph.c (cgraph_node::dump): Dump static_chain_decl.
2021-11-08 12:50:01 +01:00
Thomas Schwinge
b7cd394606 Fix 'Copyright (C) 2020-21' into '2020-2021'
'contrib/update-copyright.py' currently complains:

    gcc/config/rs6000/rs6000-gen-builtins.c: unrecognised year: 21
    gcc/config/rs6000/rs6000-overload.def: unrecognised year: 21
    gcc/config/rs6000/rbtree.h: unrecognised year: 21
    gcc/config/rs6000/rbtree.c: unrecognised year: 21
    gcc/config/rs6000/rs6000-builtin-new.def: unrecognised year: 21

Fix up files added in commit fa5f8b49e55caf5bb341f5eb6b5ab828b9286425
"rs6000: Red-black tree implementation for balanced tree search",
commit 4a720a9547320699aceda7d2e0b08de5ab40132f
"rs6000: Add initial input files",
commit bd5b625228d545d5ecb35df24f9f094edc95e3fa
"rs6000: Initial create of rs6000-gen-builtins.c".

	gcc/
	* config/rs6000/rbtree.c: Fix 'Copyright (C) 2020-21' into '2020-2021'
	* config/rs6000/rbtree.h: Likewise.
	* config/rs6000/rs6000-builtin-new.def: Likewise.
	* config/rs6000/rs6000-gen-builtins.c: Likewise.
	* config/rs6000/rs6000-overload.def: Likewise.
2021-11-08 11:49:45 +01:00
Thomas Schwinge
eb4a3e6a9a Fix 'contrib/update-copyright.py': 'TypeError: exceptions must derive from BaseException'
Running 'contrib/update-copyright.py' currently fails:

    [...]
    Traceback (most recent call last):
      File "contrib/update-copyright.py", line 365, in update_copyright
        canon_form = self.canonicalise_years (dir, filename, filter, years)
      File "contrib/update-copyright.py", line 270, in canonicalise_years
        (min_year, max_year) = self.year_range (years)
      File "contrib/update-copyright.py", line 253, in year_range
        year_list = [self.parse_year (year)
      File "contrib/update-copyright.py", line 253, in <listcomp>
        year_list = [self.parse_year (year)
      File "contrib/update-copyright.py", line 250, in parse_year
        raise self.BadYear (string)
    TypeError: exceptions must derive from BaseException

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
      File "contrib/update-copyright.py", line 796, in <module>
        GCCCmdLine().main()
      File "contrib/update-copyright.py", line 527, in main
        self.copyright.process_tree (dir, filter)
      File "contrib/update-copyright.py", line 458, in process_tree
        self.process_file (dir, filename, filter)
      File "contrib/update-copyright.py", line 421, in process_file
        res = self.update_copyright (dir, filename, filter,
      File "contrib/update-copyright.py", line 366, in update_copyright
        except self.BadYear as e:
    TypeError: catching classes that do not inherit from BaseException is not allowed

Fix up for commit 3b25e83536bcd1b2977659a2c6d9f0f9bf2a3152
"Port update-copyright.py to Python3".

	contrib/
	* update-copyright.py (class BadYear): Derive from 'Exception'.
2021-11-08 11:48:26 +01:00
Richard Sandiford
05783fe65d aarch64: LD3/LD4 post-modify costs for struct modes
The LD3/ST3 and LD4/ST4 address cost code had no test coverage (oops).
This patch fixes that and updates it for the new structure modes.
The test only covers Advanced SIMD because SVE doesn't have
post-increment forms.

gcc/
	* config/aarch64/aarch64.c (aarch64_ldn_stn_vectors): New function.
	(aarch64_address_cost): Use it instead of testing for CImode and
	XImode directly.

gcc/testsuite/
	* gcc.target/aarch64/neoverse_v1_1.c: New test.
2021-11-08 10:36:25 +00:00
Richard Sandiford
8fd2477ddc genmodes: Define NUM_MODE_* macros
I was working on a patch that needed to calculate the number of
modes in a particular class.  It seemed better to have genmodes
generate this directly rather than do the kind of dance that
expmed.h had.

gcc/
	* genmodes.c (emit_insn_modes_h): Define NUM_MODE_* macros.
	* expmed.h (NUM_MODE_INT): Delete in favor of genmodes definitions.
	(NUM_MODE_PARTIAL_INT, NUM_MODE_VECTOR_INT): Likewise.
	* real.h (real_format_for_mode): Use NUM_MODE_FLOAT and
	NUM_MODE_DECIMAL_FLOAT.
	(REAL_MODE_FORMAT): Likewise.
2021-11-08 10:36:25 +00:00
Andre Vieira
61a7f947cc [vect] Consider outside costs earlier for epilogue loops
gcc/ChangeLog:

	* tree-vect-loop.c (vect_better_loop_vinfo_p): Change how epilogue loop
	costs are compared.
2021-11-08 09:35:45 +00:00
Richard Biener
5115207633 tree-optimization/103102 - fix error in vectorizer refactoring
This fixes an oversight that caused vectorized epilogues to have
versioning for niters applied.

2021-11-08  Richard Biener  <rguenther@suse.de>

	* tree-vectorizer.h (vect_create_loop_vinfo): Add main_loop_info
	parameter.
	* tree-vect-loop.c (vect_create_loop_vinfo): Likewise.  Set
	LOOP_VINFO_ORIG_LOOP_INFO and conditionalize set of
	LOOP_VINFO_NITERS_ASSUMPTIONS.
	(vect_analyze_loop_1): Adjust.
	(vect_analyze_loop): Move loop constraint setting and
	SCEV/niter reset here from vect_create_loop_vinfo to perform
	it only once.
	(vect_analyze_loop_form): Move dumping of symbolic niters
	here from vect_create_loop_vinfo.
2021-11-08 09:09:39 +01:00
Jan Hubicka
1f3a33633d Add loads/stores relative to static chain in ipa-modref
Adds tracking of accesses relative to static chain into modref
load/stores analysis.  This helps some Fortran benchmarks however it is still
quite limited.  One problem is that we never discover functions with nested
functions as const, pure or not accessing global memory because it contains
__builtin_dward_cfa call which we believe to be non-pure.

Bootstrapped/regtested x86_64-linux.  Plan to commit it tomorrow if there are
no complains and once periodic testers picks today modref changes.

Honza

gcc/ChangeLog:

	* ipa-modref-tree.h (enum modref_special_parms): New enum.
	(struct modref_access_node): update for special parms.
	(struct modref_ref_node): Likewise.
	(struct modref_parm_map): Likewise.
	(struct modref_tree): Likewise.
	* ipa-modref.c (dump_access): Likewise.
	(get_access): Detect static chain.
	(parm_map_for_arg): Take tree as arg instead of
	stmt and index.
	(merge_call_side_effects): Compute map for static chain.
	(process_fnspec): Update.
	(struct escape_point): Remove retslot_arg and static_chain_arg.
	(analyze_parms): Update.
	(compute_parm_map): Update.
	(propagate_unknown_call): Update.
	(modref_propagate_in_scc): Update.
	(modref_merge_call_site_flags): Update.
	(ipa_merge_modref_summary_after_inlining): Update.
	* tree-ssa-alias.c (modref_may_conflict): Handle static chain.
	* ipa-modref-tree.c (test_merge): Update.

gcc/testsuite/ChangeLog:

	* gcc.dg/tree-ssa/modref-12.c: New test.
2021-11-08 07:52:45 +01:00
Haochen Gui
14e355df30 Disables gimple folding for VSX_BUILTIN_XVMINDP, VSX_BUILTIN_XVMAXDP,ALTIVEC_BUILTIN_VMINFP and ALTIVEC_BUILTIN_VMAXFP when fast-math is not set.
gcc/
	* config/rs6000/rs6000-call.c (rs6000_gimple_fold_builtin): Disable
	gimple fold for VSX_BUILTIN_XVMINDP, ALTIVEC_BUILTIN_VMINFP,
	VSX_BUILTIN_XVMAXDP, ALTIVEC_BUILTIN_VMAXFP when fast-math is not
	set.

gcc/testsuite/
	* gcc.target/powerpc/vec-minmax-1.c: New test.
	* gcc.target/powerpc/vec-minmax-2.c: Likewise.
2021-11-08 10:48:49 +08:00
liuhongt
ae1de0bf72 Update documentation for -ftree-loop-vectorize and -ftree-slp-vectorize which are enabled by default at -02.
gcc/ChangeLog:

	PR tree-optimization/103077
	* doc/invoke.texi (Options That Control Optimization):
	Update documentation for -ftree-loop-vectorize and
	-ftree-slp-vectorize which are enabled by default at -02.
2021-11-08 09:38:26 +08:00
liuhongt
a1f7ead09c Add !HONOR_SNANS to simplifcation: (trunc)copysign((extend)a, (extend)b) to copysign (a, b).
> Note that this is not safe with -fsignaling-nans, so needs to be disabled
> for that option (if there isn't already logic somewhere with that effect),
> because the extend will convert a signaling NaN to quiet (raising
> "invalid"), but copysign won't, so this transformation could result in a
> signaling NaN being wrongly returned when the original code would never
> have returned a signaling NaN.
>
> --
> Joseph S. Myers
> joseph@codesourcery.com

gcc/ChangeLog

	PR target/102464
	* match.pd (Simplifcation (trunc)copysign((extend)a, (extend)b)
	to .COPYSIGN (a, b)): Add !HONOR_SNANS.
2021-11-08 09:34:35 +08:00
liuhongt
2ad1e8081f [Gimple] Simplify (trunc)fma ((extend)a, (extend)b, (extend)c) to IFN_FMA (a,b, c).
a, b, c are same type as truncation type and has less precision than
extend type, the optimization is guarded under
flag_unsafe_math_optimizations.

gcc/ChangeLog:
	PR target/102464
	* match.pd: Simplify
	(trunc)fma ((extend)a, (extend)b, (extend)c) to IFN_FMA (a, b,
	c) under flag_unsafe_math_optimizations.

gcc/testsuite/ChangeLog:

	* gcc.target/i386/pr102464-fma.c: New test.
2021-11-08 09:19:29 +08:00
GCC Administrator
3cb25fd1ad Daily bump. 2021-11-08 00:16:17 +00:00
Thomas Koenig
962ff7d284 Fix keyword name for co_reduce.
gcc/fortran/ChangeLog:

	* intrinsic.c (add_subroutines): Change keyword "operator"
	to the correct one, "operation".
	* check.c (gfc_check_co_reduce): Change OPERATOR to
	OPERATION in error messages.
	* intrinsic.texi: Change OPERATOR to OPERATION in
	documentation.

gcc/testsuite/ChangeLog:

	* gfortran.dg/co_reduce_2.f90: New test.
	* gfortran.dg/coarray_collectives_14.f90: Change OPERATOR
	to OPERATION.
	* gfortran.dg/coarray_collectives_16.f90: Likewise.
	* gfortran.dg/coarray_collectives_9.f90: Likewise.

	Co-authored by: Steve Kargl <steve@gcc.gnu.org>
2021-11-07 23:06:46 +01:00
Jan Hubicka
87e57378ba Limit range of modref-max-depth
gcc/ChangeLog:

	PR ipa/103055
	* params.opt (modref-max-depth): Add range.
	(modref-max-adjustments): Fix range.
2021-11-07 23:00:54 +01:00
Aldy Hernandez
2be794fae0 Remove VRP threader.
Now that things have stabilized, we can remove the old code.

I have left the hybrid threader in tree-ssa-threadedge, even though the
VRP threader was the only user, because we may need it as an interim
step for DOM threading removal.

Tested on x86-64 Linux.

gcc/ChangeLog:

	* tree-pass.h (make_pass_vrp_threader): Remove.
	* tree-ssa-threadbackward.c
	(back_threader_profitability::profitable_path_p): Remove
	ASSERT_EXPR references.
	* tree-ssa-threadedge.c (jt_state::register_equivs_stmt): Same.
	* tree-vrp.c (vrp_folder::simplify_casted_conds): Same.
	(execute_vrp): Same.
	(class hybrid_threader): Remove.
	(hybrid_threader::hybrid_threader): Remove.
	(hybrid_threader::~hybrid_threader): Remove.
	(hybrid_threader::before_dom_children): Remove.
	(hybrid_threader::after_dom_children): Remove.
	(execute_vrp_threader): Remove.
	(class pass_vrp_threader): Remove.
	(make_pass_vrp_threader): Remove.
2021-11-07 19:08:57 +01:00
Sandra Loosemore
ee11be7f2d Fortran: Diagnose all operands/arguments with constraint violations
04-Nov-2021  Sandra Loosemore <sandra@codesourcery.com>
	     Bernhard Reutner-Fischer <aldot@gcc.gnu.org>

	 PR fortran/101337

gcc/fortran/ChangeLog:
	* interface.c (gfc_compare_actual_formal): Continue checking
	all arguments after encountering an error.
	* intrinsic.c (do_ts29113_check): Likewise.
	* resolve.c (resolve_operator): Continue resolving on op2 error.

gcc/testsuite/ChangeLog:
	* gfortran.dg/bessel_3.f90: Expect additional diagnostics from
	multiple bad arguments in the call.
	* gfortran.dg/pr24823.f: Likewise.
	* gfortran.dg/pr39937.f: Likewise.
	* gfortran.dg/pr41011.f: Likewise.
	* gfortran.dg/pr61318.f90: Likewise.
	* gfortran.dg/c-interop/c407b-2.f90: Remove xfails.
	* gfortran.dg/c-interop/c535b-2.f90: Likewise.
2021-11-07 09:35:04 -08:00
Jan Hubicka
f6f704fd10 Fix inter-procedural EAF flags propagation with respect to !binds_to_current_def_p
While proofreading the code for handling EAF flags of !binds_to_current_def_p I
noticed that the interprocedural dataflow actually ignores the flag possibly
introducing wrong code on quite complex interposable functions in non-trivial
recursion cycles (or at ltrans partition boundary).

This patch unifies the flags changes to single place (remove_useless_eaf_flags)
and does extend modref_merge_call_site_flags to do the right thing.

lto-bootstrapped/regtested x86_64-linux.  Plan to commit it today after bit
more testing (firefox/clang build).

gcc/ChangeLog:

	* gimple.c (gimple_call_arg_flags): Use interposable_eaf_flags.
	(gimple_call_retslot_flags): Likewise.
	(gimple_call_static_chain_flags): Likewise.
	* ipa-modref.c (remove_useless_eaf_flags): Do not remove everything for
	NOVOPS.
	(modref_summary::useful_p): Likewise.
	(modref_summary_lto::useful_p): Likewise.
	(analyze_parms): Do not give up on NOVOPS.
	(analyze_function): When dumping report chnages in EAF flags
	between IPA and local pass.
	(modref_merge_call_site_flags): Compute implicit eaf flags
	based on callee ecf_flags and fnspec; if the function does not
	bind to current defs use interposable_eaf_flags.
	(modref_propagate_flags_in_scc): Update.
	* ipa-modref.h (interposable_eaf_flags): New function.
2021-11-07 18:20:45 +01:00
Bill Schmidt
a28cfe4920 rs6000: Replace the builtin expansion machinery
This patch forms the meat of the improvements for this patch series.
We develop a replacement for rs6000_expand_builtin and its supporting
functions, which are inefficient and difficult to maintain.

Differences between the old and new support in this patch include:
 - Make use of the new builtin data structures, directly looking up
   a function's information rather than searching for the function
   multiple times;
 - Test for enablement of builtins at expand time, to support #pragma
   target changes within a compilation unit;
 - Use the builtin function attributes (e.g., bif_is_cpu) to control
   special handling;
 - Refactor common code into one place; and
 - Provide common error handling in one place for operands that are
   restricted to specific values or ranges.

2021-11-07  Bill Schmidt  <wschmidt@linux.ibm.com>

gcc/
	* config/rs6000/rs6000-call.c (rs6000_expand_new_builtin): New
	forward decl.
	(rs6000_invalid_new_builtin): New function.
	(rs6000_expand_builtin): Call rs6000_expand_new_builtin.
	(rs6000_expand_ldst_mask): New function.
	(new_cpu_expand_builtin): Likewise.
	(elemrev_icode): Likewise.
	(ldv_expand_builtin): Likewise.
	(lxvrse_expand_builtin): Likewise.
	(lxvrze_expand_builtin): Likewise.
	(stv_expand_builtin): Likewise.
	(new_mma_expand_builtin): Likewise.
	(new_htm_spr_num): Likewise.
	(new_htm_expand_builtin): Likewise.
	(rs6000_expand_new_builtin): Likewise.
	(rs6000_init_builtins): Initialize altivec_builtin_mask_for_load.
2021-11-07 09:23:55 -06:00
Jan Hubicka
4898e958a9 Implement intra-procedural dataflow in ipa-modref flags propagation.
implement the (long promised) intraprocedural dataflow for
propagating eaf flags, so we can handle parameters that participate
in loops in SSA graphs. Typical example are acessors that walk linked
lists, for example.

I implemented dataflow using the standard iteration over BBs in RPO some time
ago, but did not like it becuase it had measurable compile time impact with
very small code quality effect. This is why I kept mainline to do the DFS walk
instead. The reason is that we care about flags of SSA names that corresponds
to parameters and those can be often determined from a small fraction of the
SSA graph so solving dataflow for all SSA names in a function is a waste.

This patch implements dataflow more carefully.  The DFS walk is kept in place to
solve acyclic cases and discover the relevat part of SSA graph into new graph
(which is similar to one used for inter-procedrual dataflow - we only need to
know the edges and if the access is direct or derefernced).  The RPO iterative
dataflow then works on this simplified graph.

This seems to be fast in practice. For GCC linktime we do dataflow for 4881
functions. Out of that 4726 finishes in one iteration, 144 in two and 10 in 3.

Overall 31979 functions are analysed, so we do dataflow only for bit over of
10% of cases.  131123 edges are visited by the solver.  I measured no compile
time impact of this.

gcc/ChangeLog:

	* ipa-modref.c (modref_lattice): Add do_dataflow,
	changed and propagate_to fields.
	(modref_lattice::release): Free propagate_to
	(modref_lattice::merge): Do not give up early on unknown
	lattice values.
	(modref_lattice::merge_deref): Likewise.
	(modref_eaf_analysis): Update toplevel comment.
	(modref_eaf_analysis::analyze_ssa_name): Record postponned ssa names;
	do optimistic dataflow initialization.
	(modref_eaf_analysis::merge_with_ssa_name): Build dataflow graph.
	(modref_eaf_analysis::propagate): New member function.
	(analyze_parms): Update to new API of modref_eaf_analysis.
2021-11-07 09:35:16 +01:00
GCC Administrator
9defce6228 Daily bump. 2021-11-07 00:16:19 +00:00