[cfe-dev] Why the argument of `delete' is converted to void* ?
Enea Zaffanella
zaffanella at cs.unipr.it
Wed Jul 4 03:42:11 PDT 2012
We have noticed that, in the AST produced by clang, the expression
argument of a CXXDeleteExpr node is implicitly converted to void*:
# cat delete.cc
struct S {};
void free(S* ps) {
delete ps;
}
# llvm/Debug+Asserts/bin/clang -cc1 -ast-dump delete.cc
[...]
void free(S *ps) (CompoundStmt 0x4822650 <delete.cc:3:18, line:5:1>
(CXXDeleteExpr 0x4822628 <line:4:3, col:10> 'void'
(ImplicitCastExpr 0x4821df8 <col:10> 'void *' <BitCast>
(ImplicitCastExpr 0x4821de0 <col:10> 'struct S *' <LValueToRValue>
(DeclRefExpr 0x4821db8 <col:10> 'struct S *' lvalue ParmVar
0x47eeb20 'ps' 'struct S *')))))
What are the reasons for introducing such an implicit cast?
Enea.
More information about the cfe-dev
mailing list