diff --git a/artiq/compiler/transforms/llvm_ir_generator.py b/artiq/compiler/transforms/llvm_ir_generator.py index 8082595f9..22f60fdde 100644 --- a/artiq/compiler/transforms/llvm_ir_generator.py +++ b/artiq/compiler/transforms/llvm_ir_generator.py @@ -811,7 +811,8 @@ class LLVMIRGenerator: llptr = self.llbuilder.gep(obj, [self.llindex(0), self.llindex(index)], inbounds=True, name="ptr.{}".format(insn.name)) llval = self.llbuilder.load(llptr, name="val.{}".format(insn.name)) - llval.metadata['invariant.load'] = self.empty_metadata + if types.is_instance(typ) and attr not in typ.constant_attributes: + llval.metadata['invariant.load'] = self.empty_metadata return llval def process_SetAttr(self, insn):