This is what I don’t understand. noipa means, do not run interprocedural passes on this function (for whatever reason). Maybe derefined means, the function might be replaced with a different optimized function at link time (but we can still look at attributes for example).
Those two things are not the same (or we could implement the attribute through modified linkage), no matter if we currently have users that want one but not the other.
Arguments along those lines are brittle, IMHO, since they basically allows us to conflate meaning based on current use cases. (This happened a lot with attributes and it caused so many problems down the line as we untangled 3 different things all merged into one spelling “because nothing else was needed at the time”). Given that noipa is not a thing, it is not surprising we have no use cases (other than the ones introduced with the patch and that happen to correlate with maybe derefined).
That all said, I’m happy to add the noipa check in that function if we rename the function (mayBeDerefinedOrNoIPA), thus eliminating the old one. If someone wants to add the old function back, we might have found the use case to treat them explicitly. If no such use case is to be found, everyone will use the single existing (renamed) function.
WDYT?