https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99694
--- Comment #12 from Martin Liška <marxin at gcc dot gnu.org> --- > > (1)From my understanding, compilers should compile well (no crashing or > performance issue) with those test programs although they contain UB. Yes, a compiler should produce a valid error message and exit for invalid input. However, e.g. in case of C++, error recovery is very difficult and we have a bazillion of invalid tests for which we either crash or loop infinitely. > Ideally, programmers may introduce a UB by accident in their program, after > compiling, not to mention whether the warning message emitted by compilers > is correct or not, compilers should exit normally. Am I correct here? Yes. However, having an UBSAN input, wrong things can happen during run-time. That's why we have all the sanitizers in the GCC (and Clang). > (2)From my experience, those bugs caused by the UB-included program can > always occur in the optimization phase. So I think those test cases can be > critical as well (compared with wrong-code issues)? How do you categorize > the importance of related crashes or performance issues caused by such test > programs? There are categorized pretty low, as expained. > > I am asking the question because I am thinking whether the effort is > worthing or not if I devise a tool that can produce diverse syntactic valid > but may contain UB test programs to detect crashes or performance issues in > compilers. The motivation is that I noticed the goal of most existing > program generators (e.g.,Csmith [1], YARPGen [2]) is to produce UB-free test > programs to detect miscompiliation bugs in compilers, few (only CCG [3], a > quite old tool so that may be hard to find bugs right now) aims to detect > crashs using programs with UB. So I guess our community may lack such test > cases to further stress compilers. If such diverse test programs (such as > the reported one) can help improve the quality of compilers, I'd like to > spend some time on it. I would not spend much time on it. It's pretty easy to create an invalid input which cause compiler to crash. What's more interesting are valid inputs that lead to a wrong-code. That's why all these tools try having UBSAN free input.