Commit 62bbcf7f authored by Adéla Štěpková's avatar Adéla Štěpková
Browse files

add attributes to assume placeholder, so that it is not optimizad away

parent ca15c5ae
Loading
Loading
Loading
Loading
+14 −3
Original line number Diff line number Diff line
@@ -112,9 +112,20 @@ Function* HelperFunctionsBuilder::getAssumePlaceholder(Type* type)
    // outs() << *type << '\n';
    auto typeName = getTypeNameLLVM(type);
    auto assumePlaceholderName = placeholderAssumeFunctionName + "_" + typeName;
    auto* F = module.getOrInsertFunction(assumePlaceholderName, getAssumePlaceholderType(type))
                  .getCallee();
    return cast<Function>(F);

    auto* existingF = module.getFunction(assumePlaceholderName);
    if (existingF) {
        return existingF;
    }

    auto* F = cast<Function>(module.getOrInsertFunction(assumePlaceholderName, getAssumePlaceholderType(type))
                  .getCallee());

    F->addFnAttr(Attribute::OptimizeNone);
    F->addFnAttr(Attribute::NoInline);
    F->addFnAttr(Attribute::NoUnwind);
    F->addFnAttr(Attribute::UWTable);
    return F;
}

LLVMContext& HelperFunctionsBuilder::getContext() { return module.getContext(); }