[cfe-dev] Add new AST node

Pisit Makpaisit haoremixman at gmail.com
Sat Jul 31 19:59:21 PDT 2010

I want to add the AST node for OpenMP statement. I create OmpStmt class that
inherit from Stmt class and add the definition in StmtNodes.td as follow

def OmpStmt : Stmt<1>;
def OmpAtomicStmt : DStmt<OmpStmt>;
def OmpBarrierStmt : DStmt<OmpStmt>;
def OmpCriticalStmt : DStmt<OmpStmt>;
def OmpFlushStmt : DStmt<OmpStmt>;
def OmpMasterStmt : DStmt<OmpStmt>;
def OmpOrderedStmt : DStmt<OmpStmt>;
def OmpParallelStmt : DStmt<OmpStmt>;
def OmpForStmt : DStmt<OmpStmt>;
def OmpSectionsStmt : DStmt<OmpStmt>;
def OmpSectionStmt : DStmt<OmpStmt>;
def OmpSingleStmt : DStmt<OmpStmt>;
def OmpTaskStmt : DStmt<OmpStmt>;
def OmpTaskwaitStmt : DStmt<OmpStmt>;
def OmpThreadprivateStmt : DStmt<OmpStmt>;

when I build project, it show error like

In file included from
                 from ASTImporter.cpp:21:
In member function ‘RetTy clang::StmtVisitor<ImplClass,
RetTy>::Visit(clang::Stmt*) [with ImplClass = <unnamed>::ASTNodeImporter,
RetTy = clang::Stmt*]’:
ASTImporter.cpp:3045:   instantiated from here
error: invalid static_cast from type ‘clang::Stmt*’ to type
error: invalid static_cast from type ‘clang::Stmt*’ to type
error: invalid static_cast from type ‘clang::Stmt*’ to type

OmpAtomicStmt and other OpenMP Stmt class is inherit from OmpStmt. Why the
error show that? How can I fixed?

Thanks in advance
Remixman (Pisit Makpaisit)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20100801/2ca37788/attachment.html>

More information about the cfe-dev mailing list