jdoerfert added a comment. In D70366#1970299 <https://reviews.llvm.org/D70366#1970299>, @LevitatingLion wrote:
> While adding tests to clang I realized the attribute is not working as > intended when using an optimization level of zero, because clang adds the > noinline attribute to all functions. In this case the optimizer cannot > distinguish between functions originally marked noinline (where recursive > always-inlining should stop) and those where clang added the attribute (where > recursive always-inlining should continue). > > Is this acceptable? I think we should fix this, and recursively inline at > optimization level zero. GCC's documentation on the flatten attribute states > that "every call inside this function is inlined, if possible", clang's that > calls are "inlined unless it is impossible to do so". > > Maybe we can add an additional string attribute when adding the noinline > attribute to functions which are not marked noinline in the source code, > something like "noinline-added-by-clang". I don't know if that's a legitimate > use case for a string attribute, but it wouldn't be very invasive. What do > you think? TBH, I would issue a warning if we see `flatten` in O0 that says this will not work and be done with it. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D70366/new/ https://reviews.llvm.org/D70366 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits