]> git.ipfire.org Git - thirdparty/gcc.git/commit
tree-optimization/102570 - teach VN about internal functions
authorRichard Biener <rguenther@suse.de>
Mon, 4 Oct 2021 08:57:45 +0000 (10:57 +0200)
committerRichard Biener <rguenther@suse.de>
Mon, 4 Oct 2021 14:52:50 +0000 (16:52 +0200)
commit55a3be2f5255d69e740d61b2c5aaba1ccbc643b8
treecfa0ab6b826ab7ef1d8368fd4bae6aefe420614e
parent22d34a2a50651d01669b6fbcdb9677c18d2197c5
tree-optimization/102570 - teach VN about internal functions

We're now using internal functions for a lot of stuff but there's
still missing VN support out of laziness.  The following instantiates
support and adds testcases for FRE and PRE (hoisting).

2021-10-04  Richard Biener  <rguenther@suse.de>

PR tree-optimization/102570
* tree-ssa-sccvn.h (vn_reference_op_struct): Document
we are using clique for the internal function code.
* tree-ssa-sccvn.c (vn_reference_op_eq): Compare the
internal function code.
(print_vn_reference_ops): Print the internal function code.
(vn_reference_op_compute_hash): Hash it.
(copy_reference_ops_from_call): Record it.
(visit_stmt): Remove the restriction around internal function
calls.
(fully_constant_vn_reference_p): Use fold_const_call and handle
internal functions.
(vn_reference_eq): Compare call return types.
* tree-ssa-pre.c (create_expression_by_pieces): Handle
generating calls to internal functions.
(compute_avail): Remove the restriction around internal function
calls.

* gcc.dg/tree-ssa/ssa-fre-96.c: New testcase.
* gcc.dg/tree-ssa/ssa-pre-33.c: Likewise.
gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-96.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-33.c [new file with mode: 0644]
gcc/tree-ssa-pre.c
gcc/tree-ssa-sccvn.c
gcc/tree-ssa-sccvn.h