public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r12-7629] c++: give fold expressions a location
@ 2022-03-12 20:02 Patrick Palka
0 siblings, 0 replies; only message in thread
From: Patrick Palka @ 2022-03-12 20:02 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:28750ac2765e808aa4f45a73c630e53575834efd
commit r12-7629-g28750ac2765e808aa4f45a73c630e53575834efd
Author: Patrick Palka <ppalka@redhat.com>
Date: Sat Mar 12 14:57:56 2022 -0500
c++: give fold expressions a location
This improves diagnostic quality for unsatisfied atomic constraints
that consist of a fold expression, e.g. in concepts/diagnostic3.C
the "evaluated to false" diagnostic now points to the expression:
.../diagnostic3.C:10:22: note: the expression ‘(foo<Ts> && ...) [with Ts = {int, char}]’ evaluated to ‘false’
10 | requires (foo<Ts> && ...)
| ~~~~~~~~~~~~^~~~
gcc/cp/ChangeLog:
* semantics.cc (finish_unary_fold_expr): Use input_location
instead of UNKNOWN_LOCATION.
(finish_binary_fold_expr): Likewise.
gcc/testsuite/ChangeLog:
* g++.dg/concepts/diagnostic3.C: Adjusted expected location of
"evaluated to false" diagnostics.
Diff:
---
gcc/cp/semantics.cc | 4 ++--
gcc/testsuite/g++.dg/concepts/diagnostic3.C | 8 ++++----
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/gcc/cp/semantics.cc b/gcc/cp/semantics.cc
index da270e8f05c..d5565ebe02d 100644
--- a/gcc/cp/semantics.cc
+++ b/gcc/cp/semantics.cc
@@ -12197,7 +12197,7 @@ finish_unary_fold_expr (tree expr, int op, tree_code dir)
/* Build the fold expression. */
tree code = build_int_cstu (integer_type_node, abs (op));
- tree fold = build_min_nt_loc (UNKNOWN_LOCATION, dir, code, pack);
+ tree fold = build_min_nt_loc (input_location, dir, code, pack);
FOLD_EXPR_MODIFY_P (fold) = (op < 0);
TREE_TYPE (fold) = build_dependent_operator_type (NULL_TREE,
FOLD_EXPR_OP (fold),
@@ -12226,7 +12226,7 @@ finish_binary_fold_expr (tree pack, tree init, int op, tree_code dir)
{
pack = make_pack_expansion (pack);
tree code = build_int_cstu (integer_type_node, abs (op));
- tree fold = build_min_nt_loc (UNKNOWN_LOCATION, dir, code, pack, init);
+ tree fold = build_min_nt_loc (input_location, dir, code, pack, init);
FOLD_EXPR_MODIFY_P (fold) = (op < 0);
TREE_TYPE (fold) = build_dependent_operator_type (NULL_TREE,
FOLD_EXPR_OP (fold),
diff --git a/gcc/testsuite/g++.dg/concepts/diagnostic3.C b/gcc/testsuite/g++.dg/concepts/diagnostic3.C
index 7796e264251..410651a9c1a 100644
--- a/gcc/testsuite/g++.dg/concepts/diagnostic3.C
+++ b/gcc/testsuite/g++.dg/concepts/diagnostic3.C
@@ -7,18 +7,18 @@ template<typename T>
concept foo = (bool)(foo_v<T> | foo_v<T&>);
template<typename... Ts>
-requires (foo<Ts> && ...)
+requires (foo<Ts> && ...) // { dg-message "with Ts = .int, char... evaluated to .false." }
void
-bar() // { dg-message "with Ts = .int, char... evaluated to .false." }
+bar()
{ }
template<int>
struct S { };
template<int... Is>
-requires (foo<S<Is>> && ...)
+requires (foo<S<Is>> && ...) // { dg-message "with Is = .2, 3, 4... evaluated to .false." }
void
-baz() // { dg-message "with Is = .2, 3, 4... evaluated to .false." }
+baz()
{ }
void
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-03-12 20:02 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-12 20:02 [gcc r12-7629] c++: give fold expressions a location Patrick Palka
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).