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 7 additions and 3 deletions

View File

@ -17,3 +17,5 @@ echo -n "Checking $demo... "
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

@ -18,5 +18,4 @@ rm -f "*.o" "*.bc" demo
$nac3standalone --emit-llvm "$@"
clang -S -std=gnu11 -Wall -Wextra -O3 -emit-llvm -o demo.bc demo.c
clang -S -std=gnu11 -Wall -Wextra -O3 -emit-llvm -o irrt.bc ../../nac3core/src/codegen/irrt/irrt.c
lli --extra-module demo.bc --extra-module irrt.bc main.bc
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 {