Mohammad Norouzi via llvm-dev
2016-Feb-08 14:39 UTC
[llvm-dev] distinguish program and temporary variables
Hi, I need to check if a variable belongs to the program originally. Consider the following code line: y = x + 4 and its corresponding llvm ir (roughly): %16 = load i32 %x %add = add i32 %16, i32 4 store i32 %add, %y I need to distinguish between %16, %add and %x, %y. Any help is appreciated. Best, Mohammad -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160208/53bae800/attachment.html>
John Criswell via llvm-dev
2016-Feb-08 15:35 UTC
[llvm-dev] distinguish program and temporary variables
On 2/8/16 9:39 AM, Mohammad Norouzi via llvm-dev wrote:> Hi, > > I need to check if a variable belongs to the program originally. > Consider the following code line: > > y = x + 4 > > and its corresponding llvm ir (roughly): > > %16 = load i32 %x > %add = add i32 %16, i32 4 > store i32 %add, %y > > I need to distinguish between %16, %add and %x, %y.You might be able to use the Debug information embedded within the LLVM IR to determine what is an original variable and what is a temporary added by LLVM. However, I think that such an approach is fragile. It sounds like you need to be analyzing Clang ASTs instead of LLVM IR. The Clang AST represents a program in its original source form, so you can tell what is a program variable, in what file it was defined, its original source type, etc. Regards, John Criswell> > Any help is appreciated. > > Best, > Mohammad > > > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev-- John Criswell Assistant Professor Department of Computer Science, University of Rochester http://www.cs.rochester.edu/u/criswell -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160208/748c1193/attachment.html>
Mohammad Norouzi via llvm-dev
2016-Feb-08 15:54 UTC
[llvm-dev] distinguish program and temporary variables
> Hi, > > I need to check if a variable belongs to the program originally. Consider > the following code line: > > y = x + 4 > > and its corresponding llvm ir (roughly): > > %16 = load i32 %x > %add = add i32 %16, i32 4 > store i32 %add, %y > > I need to distinguish between %16, %add and %x, %y. > > > You might be able to use the Debug information embedded within the LLVM IR > to determine what is an original variable and what is a temporary added by > LLVM. However, I think that such an approach is fragile. >yes, Debug info provides lots of useful info and i think there should be sth about this case. But I don't know which api or method does this.> > It sounds like you need to be analyzing Clang ASTs instead of LLVM IR. > The Clang AST represents a program in its original source form, so you can > tell what is a program variable, in what file it was defined, its original > source type, etc. >I'm not sure about Clang ASTs but this is part of an llvm pass which analyzes llvm IR. So, i doubt if i can use Clang AST. Best, Mohammad> > Regards, > > John Criswell > > > Any help is appreciated. > > Best, > Mohammad > > > _______________________________________________ > LLVM Developers mailing listllvm-dev at lists.llvm.orghttp://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev > > > > -- > John Criswell > Assistant Professor > Department of Computer Science, University of Rochesterhttp://www.cs.rochester.edu/u/criswell > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160208/bcd38785/attachment.html>
Mehdi Amini via llvm-dev
2016-Feb-08 16:59 UTC
[llvm-dev] distinguish program and temporary variables
> On Feb 8, 2016, at 6:39 AM, Mohammad Norouzi via llvm-dev <llvm-dev at lists.llvm.org> wrote: > > Hi, > > I need to check if a variable belongs to the program originally. Consider the following code line: > > y = x + 4 > > and its corresponding llvm ir (roughly): > > %16 = load i32 %x > %add = add i32 %16, i32 4 > store i32 %add, %y > > I need to distinguish between %16, %add and %x, %y.This look like it will quickly degrades with optimization to a point where it won't be meaningful. Why are you needing this? What are you trying to accomplish? -- Mehdi
Mohammad Norouzi via llvm-dev
2016-Feb-08 17:17 UTC
[llvm-dev] distinguish program and temporary variables
I'm writing a pass that eliminates some variables. To show the effect of the pass i need to show that I deleted the variables that originally appear in the user code, not temporary variables added by llvm. On Mon, Feb 8, 2016 at 5:59 PM, Mehdi Amini <mehdi.amini at apple.com> wrote:> > > On Feb 8, 2016, at 6:39 AM, Mohammad Norouzi via llvm-dev < > llvm-dev at lists.llvm.org> wrote: > > > > Hi, > > > > I need to check if a variable belongs to the program originally. > Consider the following code line: > > > > y = x + 4 > > > > and its corresponding llvm ir (roughly): > > > > %16 = load i32 %x > > %add = add i32 %16, i32 4 > > store i32 %add, %y > > > > I need to distinguish between %16, %add and %x, %y. > > > This look like it will quickly degrades with optimization to a point where > it won't be meaningful. > Why are you needing this? What are you trying to accomplish? > > -- > Mehdi > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160208/a6e4aa43/attachment.html>
Apparently Analagous Threads
- distinguish program and temporary variables
- distinguish program and temporary variables
- [LLVMdev] [icFuzz] Help needed with analyzing randomly generated tests that fail on clang 3.4 trunk
- [LLVMdev] [icFuzz] Help needed with analyzing randomly generated tests that fail on clang 3.4 trunk
- Find the instructions where a particular value is defined