[LLVMbugs] [Bug 15532] New: False positive for -Wunused-variable in function template when calling nontrivial ctor with __func__
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Sun Mar 17 15:26:03 PDT 2013
http://llvm.org/bugs/show_bug.cgi?id=15532
Bug ID: 15532
Summary: False positive for -Wunused-variable in function
template when calling nontrivial ctor with __func__
Product: clang
Version: trunk
Hardware: PC
OS: All
Status: NEW
Severity: enhancement
Priority: P
Component: Frontend
Assignee: unassignedclangbugs at nondot.org
Reporter: matthewbg at google.com
CC: llvmbugs at cs.uiuc.edu
Classification: Unclassified
class Parser {
class Tracer {
public:
Tracer(const char*, Parser*);
};
template <char delim> void ParseFoo() {
Tracer trace(__func__, this);
}
void ParseBar() {
Tracer trace(__func__, this);
}
};
We warn on the 'trace' variable in ParseFoo, but not the one in ParseBar. The
Decl for 'trace' in ParseBar looks like:
VarDecl 0x3c83d70 </tmp/in.ii:10:5, col:32> trace 'class Parser::Tracer'
`-CXXConstructExpr 0x3c84268 <col:12, col:32> 'class Parser::Tracer' 'void
(const char *, class Parser *)'
|-ImplicitCastExpr 0x3c84250 <col:18> 'const char *' <ArrayToPointerDecay>
| `-PredefinedExpr 0x3c83e48 <col:18> 'const char [9]' lvalue __func__
`-CXXThisExpr 0x3c83e60 <col:28> 'class Parser *' this
So, in ShouldDiagnoseUnusedDecl, we correctly determine that the constructor is
non-elidable and nontrivial, and return false.
On the other hand, the 'trace' in ParseFoo looks like this:
VarDecl 0x3c83c30 </tmp/in.ii:7:5, col:32> trace 'class Parser::Tracer'
`-ParenListExpr 0x3c83cf0 <col:17, col:32> 'NULL TYPE'
|-PredefinedExpr 0x3c83c88 <col:18> '<dependent type>' lvalue __func__
`-CXXThisExpr 0x3c83ca0 <col:28> 'class Parser *' this
We don't find a CXXConstructExpr, so ShouldDiagnoseUnusedDecl returns true.
Oops.
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20130317/1707e004/attachment.html>
More information about the llvm-bugs
mailing list