[llvm-dev] FAIL: Why does the output of "llc -march=cpp .." fail to compile with clang 3.8
James Courtier-Dutton via llvm-dev
llvm-dev at lists.llvm.org
Sun Feb 26 03:53:21 PST 2017
It seems that -march=cpp is broken.
the -march=cpp is very useful for people trying to understand the builder API.
But, if the output of -march=cpp does not even compile, it obviously
creates code that is broken, so defeats the object of helping people
understand the builder API.
Why isn't -march=cpp tested at all?
See detail below.
Kind Regards
James
Take a very simple example:
Source code for test.c:
void munge(int *P) {
P[0] = P[1] + P[2];
}
compile with:
clang -c -emit-llvm -o test.bc test.c
test that the .bc output looks sensible
llvm-dis-3.8 test.bc
<snip>
; Function Attrs: nounwind uwtable
define void @_Z5mungePi(i32* %P) #0 {
%1 = alloca i32*, align 8
store i32* %P, i32** %1, align 8
%2 = load i32*, i32** %1, align 8
%3 = getelementptr inbounds i32, i32* %2, i64 1
%4 = load i32, i32* %3, align 4
<snip>
So, that looks good.
compile to -march=cpp
llc-3.8 -march=cpp -o test.cpp test.bc
So, we should now end up with some CPP code that uses the builder
interface to generate the .bc file.
The problem is, test.cpp does not even compile.
the -march=cpp is very useful for people trying to understand the builder API.
But, if the output of -march=cpp does not even compile, it obviously
creates code that is broken, so defeats the object of helping people
understand the builder API.
Why isn't -march=cpp tested at all?
More information about the llvm-dev
mailing list