[LLVMdev] How to use WhileStmt to implement while loop in LLVM
Nick Lewycky
nicholas at mxc.ca
Sun May 26 02:18:32 PDT 2013
Rasha Omar wrote:
> No, I need to use it in LLVM pass. Could it work?
No. The language available at llvm-time is the one in
llvm.org/docs/LangRef.html which doesn't have a while statement. For one
obvious example, how would this work if the input language wasn't C/C++
to begin with?
If you absolutely need to do this for a non-production-quality project
(ie., research project or other one-off), you can jam the WhileStmt
pointer value as an integer into a metadata node when doing IRGen from
clang, and reinterpret it back on the llvm side. We will not accept
patches which do this sort of thing, and this is very much warranty void
territory. Your generated IR will not work if you try to run llvm tools
outside the clang process.
Nick
> On 26 May 2013 10:41, Nick Lewycky <nicholas at mxc.ca
> <mailto:nicholas at mxc.ca>> wrote:
>
> Rasha Omar wrote:
>
> Dear All,
>
> I have a question
>
> How could I use |WhileStmt class| in Stmt.h
>
> http://clang.llvm.org/doxygen/ Stmt_8h_source.html
> <http://clang.llvm.org/doxygen/Stmt_8h_source.html>
>
> to implement |while loop| like |while(i==1){}| that is required
> to be
> inserted
>
> For example, Convert x++; y++; to x++; while(i=1){} y++;
>
> from the class's constructor:
>
> |WhileStmt(ASTContext &C, VarDecl *Var, Expr *cond, Stmt
> *body,SourceLocation WL);
> //I know C --> 1
> //Var--> i
> //cond --> =
> //body --> NOP
> //WL --> ??|
>
> but how to implement these terms in LLVM pass? and what's the
> SourceLocation?
>
>
> Do you actually mean LLVM pass? Or are you working inside clang (for
> example, on a source code rewriter)? If so, email cfe-dev instead.
>
> Nick
>
>
>
>
> --
> *Rasha Salah Omar
> Msc Student at E-JUST
> Demonestrator at Faculty of Computers and Informatics
> Benha University
> *
More information about the llvm-dev
mailing list