[LLVMdev] Two questions on type based alias analysis in c
Hongxu Chen
leftcopy.chx at gmail.com
Fri Jan 2 02:04:32 PST 2015
Dear cfe-dev and llvmdev,
I was doing some preliminary surveys on the type based alias analysis in C
with LLVM toolchains, but encountered some problems.
(1) Can we get tbaa metadata in LLVM IR without modifying cfe or adding
other optimizations during IR?
In my previous experiments, I fail to find a way to generate these metadata
by invoking clang driver at O0 optimization level.
Specially, I found the thread titled "strict aliasing in LLVM"(
https://groups.google.com/forum/#!topic/llvm-dev/mjDAf8a_LdI) tells that
using "-mllvm -enable-tbaa" might work. However when I use this command
below, still no tbaa metada area is found in LLVM IR.
clang -O0 -fstrict-aliasing -Wstrict-aliasing my-example.c -emit-llvm
-S -mllvm -enable-tbaa
And I somewhat suspect that `-mllvm -enable-tbaa` is even not necessary
since I found that "enable-tbaa" seems to be on by default: with
clang -xc /dev/null -c -mllvm -print-all-options | grep tbaa
It prints:
-combiner-use-tbaa = 1 (default:
1)
-enable-tbaa = 1
(default: 1)
-use-tbaa-in-sched-mi = 1 (default:
1)
In the meantime, with optimization O1(or higher levels) it's possible to
get these metadata. The problem is that I cannot get the similar not-alias
result for this case below(taken from Page 29 of the slides:
http://llvm.org/devmtg/2012-11/Gohman-AliasAnalysis.pdf) if the x is local
to a function, as the temp pointer variable would be optimized out during
"-O1" compilation.
int x;
*(float *)&x = 2.3f;
x = 4;
(2) Are there large celeberated programs that is known to be compatible
with ANSI C strict aliasing rule(
https://en.wikipedia.org/wiki/Aliasing_(computing)#Conflicts_with_optimization
)?
>From the answer on stackoverflow(http://stackoverflow.com/a/99010/528929) I
guess that I have to find those candidates from a post-c99 codebase that
does not involve device or messaging sending programs. Any suggestions?
Thanks and Regards,
Hongxu Chen
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150102/292892cd/attachment.html>
More information about the llvm-dev
mailing list