Hi again,
some additional details:
On 06/06/2012 11:20 AM, Paolo Carlini wrote:
Hi,
On 06/06/2012 03:57 AM, Jason Merrill wrote:
On 06/05/2012 08:23 PM, Paolo Carlini wrote:
@@ -1695,6 +1695,8 @@ implicit_conversion (tree to, tree from, tree
expr
|LOOKUP_NO_TEMP_BIND|LOOKUP_NO_RVAL_BIND|LOOKUP_PREFER_RVALUE
|LOOKUP_NO_NARROWING|LOOKUP_PROTECT);
+ complain&= ~tf_error;
I don't think we want warnings from implicit_conversion, either.
I thought we already somewhat discussed this issue (when I said that
passing tf_warning instead of tf_none could work better, remember?),
but now I see that I kept a lot of it for myself . If I do something like
complain&= ~(tf_warning|tf_error);
then we regress on, eg, g++.old-deja/g++.benjamin/16077.C, that is, we
don't produce any warnings anymore.
The warning belongs to joust, called by tourney, called by
build_user_type_conversion_1, called by implicit_conversion.
When a couple of days ago I mentioned my quick tests with hackish
changes, I had just noticed that the testsuite was Ok if only in
implicit_conversion I allowed tf_warning to be passed to
reference_binding and build_user_type_conversion_1.
Then, later on, I thought that before these changes for 53567 nothing
was preventing warnings to be emitted, thus maybe we only wanted to gate
away hard errors, like before we gated away hard errors with the big
flags &= line which wasn't including LOOKUP_COMPLAIN, and leave warnings
(or any other tsubst_flags for that matter) alone in the whole
implicit_conversion.
I see now, I didn't remember this detail, that besides Benjamin's, the
only other testsuite regression with ~(tf_warning|tf_error) is:
g++.old-deja/g++.other/overcnv2.C
which is again about the same warning in joust.
Paolo.