Skip to content

Instantly share code, notes, and snippets.

@cmpark0126
Last active January 19, 2024 16:26
Show Gist options
  • Save cmpark0126/459514e8e73cac0c76284b8ec47334a7 to your computer and use it in GitHub Desktop.
Save cmpark0126/459514e8e73cac0c76284b8ec47334a7 to your computer and use it in GitHub Desktop.
How to Generate LLVM IR from C Source Code?
#!/bin/bash
name=${1%.*c} # detatch .c from c file name
clang-9 -O0 -Xclang -disable-O0-optnone -fno-discard-value-names -emit-llvm -c $name.c # convert source code(.c) to bit code(.bc)
llvm-dis-9 $name.bc -o $name.ll # generate llvm ir(.ll) from bit code(.bc) obtained above without any optimization
opt-9 -mem2reg $name.bc -o $name.mem2reg.bc # optimize bit code using `mem2reg` optimization pass before generating llvm ir
llvm-dis-9 $name.mem2reg.bc -o $name.mem2reg.ll # generate llvm ir(.ll) from optimized bit code(.bc)
@cmpark0126
Copy link
Author

$ vi temp.c                # create & write c source code file
$ sh llvm-ir-gen.sh temp.c # generate LLVM IR from `temp.c`
$ vi temp.ll               # check LLVM IR

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment