riccibruno added inline comments.

================
Comment at: lib/Sema/SemaTemplate.cpp:6311
         if (isa<CXXUuidofExpr>(E)) {
-          Converted = TemplateArgument(ArgResult.get());
+          Converted = TemplateArgument(ArgResult.get()->IgnoreImpCasts());
           break;
----------------
A remark which I hope is relevant. Please ignore it if I am off the mark, or if 
it is obvious.

I was looking at which of the `Expr::Ignore*` function to use for something 
else and it seems that `IgnoreParenImpCasts()` is *not* equivalent to doing 
`IgnoreParens()` + `IgnoreImpCasts()` until reaching a fixed point.

This is very surprising given the name, and given that `IgnoreParenCasts()` 
*is* equivalent to doing `IgnoreParens()` + `IgnoreCasts()` until reaching a 
fixed point.

From my notes:

> * `Expr *IgnoreParenImpCasts() LLVM_READONLY`
>  Ought to be IgnoreParens() + IgnoreImpCasts() until fixed point.
>  But actually only IgnoreParens + skip:
>  * ImplicitCastExpr
>  * MaterializeTemporaryExpr
>  * SubstNonTypeTemplateParmExpr



Repository:
  rC Clang

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D57114/new/

https://reviews.llvm.org/D57114



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to