Compare commits

...

3 Commits

Author SHA1 Message Date
David Mak 1fa92bb037 standalone: Remove temporary logfiles after execution 2023-09-29 16:43:48 +08:00
David Mak e8885e0bf4 standalone: Add execution of test cases via lli 2023-09-29 16:43:26 +08:00
David Mak 60305b0510 standalone: Emit IRRT IR alongside main
Allows all dependencies to be bundled into main.bc for execution.
2023-09-29 16:41:32 +08:00
3 changed files with 29 additions and 1 deletions

View File

@ -13,5 +13,9 @@ set -- "${@:1:$(($# - 1))}"
echo -n "Checking $demo... "
./interpret_demo.py "$demo" > interpreted.log
./run_demo.sh "$@" "$demo" > run.log
./run_demo_lli.sh "$@" "$demo" > run_lli.log
diff -Nau interpreted.log run.log
diff -Nau interpreted.log run_lli.log
echo "ok"
rm -f interpreted.log run.log run_lli.log

View File

@ -0,0 +1,21 @@
#!/usr/bin/env bash
set -e
if [ -z "$1" ]; then
echo "No argument supplied"
exit 1
fi
if [ -e ../../target/release/nac3standalone ]; then
nac3standalone=../../target/release/nac3standalone
else
# used by Nix builds
nac3standalone=../../target/x86_64-unknown-linux-gnu/release/nac3standalone
fi
rm -f "*.o" "*.bc" demo
$nac3standalone --emit-llvm "$@"
clang -S -std=gnu11 -Wall -Wextra -O3 -emit-llvm -o demo.bc demo.c
lli --extra-module demo.bc main.bc

View File

@ -339,6 +339,10 @@ fn main() {
let main = context
.create_module_from_ir(MemoryBuffer::create_from_memory_range(&buffers[0], "main"))
.unwrap();
// Emit bitcode with main and IRRT dependencies first before linking in the other modules.
// This helps separate the input generated from the input and the IRRT utilities.
main.link_in_module(load_irrt(&context)).unwrap();
if emit_llvm {
main.write_bitcode_to_path(Path::new("main.bc"));
}
@ -354,7 +358,6 @@ fn main() {
main.link_in_module(other).unwrap();
}
main.link_in_module(load_irrt(&context)).unwrap();
let mut function_iter = main.get_first_function();
while let Some(func) = function_iter {