aboutsummaryrefslogtreecommitdiff
path: root/gcc/lambda-code.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2024-11-01 11:57:32 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2024-11-01 11:57:32 +0100
commit7fdb66f0db6275118986ed8d77c94d6cfe5155c2 (patch)
treef6b675350783cc5ba06f271808ea92ed3602b206 /gcc/lambda-code.c
parent7f93910a8b5d606ad742a3594750f0c2b20d8bda (diff)
downloadgcc-master.zip
gcc-master.tar.gz
gcc-master.tar.bz2
openmp: Return error_mark_node from tsubst_attribute for errneous varidHEADtrunkmaster
We incorrectly accept some invalid declare variant cases as if declare variant wasn't there, in particular if a function template has some dependent arguments and variant name lookup fails, because that is during fn_type_unification with complain=tf_none, it just sets it to error_mark_node and doesn't complain further, because it doesn't know the substitution failed (we don't return error_mark_node from tsubst_attribute, just create TREE_LIST with error_mark_node TREE_PURPOSE). The following patch fixes it by returning error_mark_node in that case, then fn_type_unification caller can see it failed and can redo it with explain_p so that errors are reported. 2024-11-01 Jakub Jelinek <jakub@redhat.com> * pt.cc (tsubst_attribute): For "omp declare variant base" attribute if varid is error_mark_node, set val to error_mark_node rather than creating a TREE_LIST with error_mark_node TREE_PURPOSE. * g++.dg/gomp/declare-variant-10.C: New test.
Diffstat (limited to 'gcc/lambda-code.c')
0 files changed, 0 insertions, 0 deletions