From 2579ecbd199e3e8790c99ffc8469ecd02ed08ad7 Mon Sep 17 00:00:00 2001 From: ychenfo Date: Tue, 11 Jan 2022 17:25:07 +0800 Subject: [PATCH] nac3core: irrt module get attribute id using name instead of hard code --- nac3core/src/codegen/irrt/mod.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/nac3core/src/codegen/irrt/mod.rs b/nac3core/src/codegen/irrt/mod.rs index 6ba63b73..8a84642b 100644 --- a/nac3core/src/codegen/irrt/mod.rs +++ b/nac3core/src/codegen/irrt/mod.rs @@ -1,6 +1,9 @@ use super::CodeGenContext; use inkwell::{ - attributes::AttributeLoc, context::Context, memory_buffer::MemoryBuffer, module::Module, + attributes::{Attribute, AttributeLoc}, + context::Context, + memory_buffer::MemoryBuffer, + module::Module, values::IntValue, }; @@ -11,10 +14,10 @@ pub fn load_irrt(ctx: &Context) -> Module { ); let irrt_mod = Module::parse_bitcode_from_buffer(&bitcode_buf, ctx).unwrap(); // add alwaysinline attributes to power function to help them get inlined - // alwaysinline enum = 1, see release/13.x/llvm/include/llvm/IR/Attributes.td + let inline_attr = Attribute::get_named_enum_kind_id("alwaysinline"); for symbol in &["__nac3_irrt_int_exp_int32_t", "__nac3_irrt_int_exp_int64_t"] { let function = irrt_mod.get_function(symbol).unwrap(); - function.add_attribute(AttributeLoc::Function, ctx.create_enum_attribute(1, 0)); + function.add_attribute(AttributeLoc::Function, ctx.create_enum_attribute(inline_attr, 0)); } irrt_mod }