[llvm] [ForceFunctionAttrs] Fix handling of conflicts for more attributes (PR #186304)

Justin Fargnoli via llvm-commits llvm-commits at lists.llvm.org
Fri Mar 13 18:08:27 PDT 2026


================
@@ -45,10 +45,46 @@ static cl::opt<std::string> CSVFilePath(
         "add to them in the form of `f1,attr1` or `f2,attr2=str`."));
 
 static bool hasConflictingFnAttr(Attribute::AttrKind Kind, Function &F) {
-  if (Kind == Attribute::AlwaysInline)
-    return F.hasFnAttribute(Attribute::NoInline);
-  if (Kind == Attribute::NoInline)
+  switch (Kind) {
+  case Attribute::AlwaysInline:
+    return F.hasFnAttribute(Attribute::NoInline) ||
+           F.hasFnAttribute(Attribute::OptimizeNone);
----------------
justinfargnoli wrote:

> Only functions with the alwaysinline attribute are valid candidates for inlining into the body of this function. ([source](https://llvm.org/docs/LangRef.html#function-attributes))

It doesn't look like `optnone` conflicts with `alwaysinline`. 

https://github.com/llvm/llvm-project/pull/186304


More information about the llvm-commits mailing list