diff options
author | Jakub Jelinek <jakub@redhat.com> | 2020-05-27 10:25:56 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2020-05-27 10:25:56 +0200 |
commit | baff22c48bdee9cb644b7336bf6f20f799531507 (patch) | |
tree | 4f364b848f4423d8b072c1c08da38a0c0ef1e43b /gcc/tree-ssa-loop-im.c | |
parent | 79ea774f9a9d36d986152d93f9eae4a9ba36b37b (diff) | |
download | gcc-baff22c48bdee9cb644b7336bf6f20f799531507.zip gcc-baff22c48bdee9cb644b7336bf6f20f799531507.tar.gz gcc-baff22c48bdee9cb644b7336bf6f20f799531507.tar.bz2 |
openmp: Fix up omp_declare_variant{s,_alt} htab handling
This patch fixes a GC ICE. During debugging, I've found that during
gimplification we can actually call omp_resolve_declare_variant multiple
times and it would create a new magic declare_variant_alt FUNCTION_DECL
each time, which is undesirable, once we have such a decl, we should just
use that. The other problem is that there was no cgraph node removal hook.
As the omp_declare_variants htab is used just early during gimplification,
we can just clear the whole htab, rather than trying to lookup and remove
a particular entry. The other hash table is used later as well and that
one uses just DECL_UID as hash, so in that case the patch removes the elt.
2020-05-27 Jakub Jelinek <jakub@redhat.com>
PR middle-end/95315
* omp-general.c (omp_declare_variant_remove_hook): New function.
(omp_resolve_declare_variant): Always return base if it is already
declare_variant_alt magic decl itself. Register
omp_declare_variant_remove_hook as cgraph node removal hook.
* gcc.dg/gomp/pr95315.c: New test.
Diffstat (limited to 'gcc/tree-ssa-loop-im.c')
0 files changed, 0 insertions, 0 deletions