Turning on enable_noundef_analysis flag allows better codegen by removing freeze instructions.
I modified clang by renaming enable_noundef_analysis flag to disable-noundef-analysis and turning it off by default.
Test updates are made as a separate patch: D108453
Hmm, if I'm reading this right, this overwrites the nonnull dereferenceable align attributes separately computed for this around l2335, right? (or inalloca and sret before that)
It sounds like an ancient bug, that's only exposed because noundef ends up triggering this logic much more often?
Many of our downstream tests hit this. The hacked up patch seems to do the job; ideally we'd feed the previously-computed attrs when constructing the AttrBuilder (which would also fix the padding argument), but we'd need to match up the IR args first. Maybe that's fine as a special-case for arg 0 though