Skip to content

Commit 2d252ce

Browse files
committed
Add addition example
1 parent db1479e commit 2d252ce

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

examples/add.rs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
extern crate llvm;
2+
use llvm::*;
3+
use llvm::Attribute::*;
4+
fn main() {
5+
let ctx = Context::new();
6+
let module = Module::new("add", &ctx);
7+
let func = module.add_function("add", Type::get::<fn(f64, f64) -> f64>(&ctx));
8+
func.add_attributes(&[NoUnwind, ReadNone]);
9+
let entry = func.append("entry");
10+
let builder = Builder::new(&ctx);
11+
builder.position_at_end(entry);
12+
let a = &func[0];
13+
let b = &func[1];
14+
let value = builder.build_add(a, b);
15+
builder.build_ret(value);
16+
module.verify().unwrap();
17+
let ee = JitEngine::new(&module, JitOptions {opt_level: 3}).unwrap();
18+
ee.with_function(func, |add:extern fn((f64, f64)) -> f64| {
19+
println!("{} + {} = {}", 1., 2., add((1., 2.)));
20+
});
21+
}

0 commit comments

Comments
 (0)