> On Feb 14, 2017, at 22:27, Subhendu Malakar <subhendu.m...@gmail.com> wrote: > > Thanks for the reply. > > Indeed, I was not building "clang" from source. I'm going to build it now. > > Just curious to know if it is possible to negate the option > "discard-value-names" like "no-discard-value-names", etc. such that I don't > have to copy paste the whole thing again and again. Couldn't find any such > option in "clang -cc1 --help".
No, but there probably should be. Same with similar options like -disable-free and -disable-llvm-verifier. Feel free to file a bug at bugs.llvm.org and CC me. > > Thanks. > > On Wednesday 15 February 2017 05:44 AM, Duncan P. N. Exon Smith wrote: >>> On 2017-Feb-13, at 23:10, Subhendu Malakar via cfe-users >>> <cfe-users@lists.llvm.org> wrote: >>> >>> Hi, >>> I'm a newbie in LLVM environment. >>> >>> I'm trying to generate the LLVM IR of a c file using clang. The command >>> line argument I'm passing is as : >>> "clang -O0 -S -emit-llvm test.c -c -o test.ll" >> If you add "-###" to the end of the command-line you can see the raw -cc1 >> command for the compilation. Depending on your version of clang, you should >> see "-discard-value-names" in there. If you repeat the -cc1 command >> yourself, skipping that option, you'll get variable names. >> >> If you're compiling clang yourself (it doesn't sound like you are, but just >> in case), this -discard-value-names option is *not* passed by default in >> asserts builds. >> >>> It is generating the LLVM IR properly but I'm not getting the variable >>> names. e.g, >>> >>> for the c file : >>> #include <stdio.h> >>> >>> int main() >>> { >>> int x; >>> int y; >>> x = 2; >>> y =4; >>> int z = x*y; >>> >>> if(x==y) >>> { >>> z = x*y; >>> return z; >>> } else >>> { >>> z = x+y; >>> } >>> printf("z = %d", z); >>> return 0; >>> } >>> >>> >>> the corresponding llvm IR is : >>> >>> ; Function Attrs: nounwind uwtable >>> define i32 @main() #0 { >>> %1 = alloca i32, align 4 >>> %2 = alloca i32, align 4 >>> %3 = alloca i32, align 4 >>> %4 = alloca i32, align 4 >>> store i32 0, i32* %1, align 4 >>> store i32 2, i32* %2, align 4 >>> store i32 4, i32* %3, align 4 >>> %5 = load i32, i32* %2, align 4 >>> %6 = load i32, i32* %3, align 4 >>> %7 = mul nsw i32 %5, %6 >>> store i32 %7, i32* %4, align 4 >>> %8 = load i32, i32* %2, align 4 >>> %9 = load i32, i32* %3, align 4 >>> %10 = icmp eq i32 %8, %9 >>> br i1 %10, label %11, label %16 >>> >>> ; <label>:11: ; preds = %0 >>> %12 = load i32, i32* %2, align 4 >>> %13 = load i32, i32* %3, align 4 >>> %14 = mul nsw i32 %12, %13 >>> store i32 %14, i32* %4, align 4 >>> %15 = load i32, i32* %4, align 4 >>> store i32 %15, i32* %1, align 4 >>> br label %21 >>> >>> ; <label>:16: ; preds = %0 >>> %17 = load i32, i32* %2, align 4 >>> %18 = load i32, i32* %3, align 4 >>> %19 = add nsw i32 %17, %18 >>> store i32 %19, i32* %4, align 4 >>> br label %20 >>> >>> ; <label>:20: ; preds = %16 >>> store i32 0, i32* %1, align 4 >>> br label %21 >>> >>> ; <label>:21: ; preds = %20, %11 >>> %22 = load i32, i32* %1, align 4 >>> ret i32 %22 >>> } >>> >>> >>> I wanted to get the variables in their original name i.e, x,y,z instead of >>> %1,%2,%3, etc. >>> Is it possible to do so? >>> >>> Thanks. >>> _______________________________________________ >>> cfe-users mailing list >>> cfe-users@lists.llvm.org >>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users > _______________________________________________ cfe-users mailing list cfe-users@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users