summaryrefslogtreecommitdiff
path: root/old/llvmtests/README
blob: 6755a79051a9671b66d473cf0d98145b3c34e20a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# generate LLVM IR
clang -o hello.l -O0 -S -emit-llvm hello.c
clang --target=x86_64-pc-linux-gnu -o hello-x86_64.l -O0 -S -emit-llvm hello.c
clang --target=i386-pc-linux-gnu -o hello-i386.l -O0 -S -emit-llvm hello.c
clang --target=aarch64-unknown-linux-gui -o hello-aarch64.l -O0 -S -emit-llvm hello.c

# optimize and compare
opt -S hello.l > hello-opt.l
xxdiff hello.l hello-opt.l

# run LLVM code in interpreter
lli hello.l

# generate native assembler
llc -O0 hello.l -o hello.s
llc -O0 hello-x86_64.l -march=x86-64 -o hello-amd64.s
llc -O0 hello-i386.l -march=i386 -o hello-i386.s
llc -O0 hello-aarch64.l -march=aarch64 -o hello-aarch64.s

# cross toolchains needed for i386 and aarch64
as -o hello.o hello.s
gcc -o hello hello.o

# TBD
gcc -fverbose-asm -Os -S -o hello.s hello.c