C++里为什么有时候有无限循环（比如while）时会出现这么奇怪的问题？
这，，，主函数没有调用unreachable函数啊，为啥还是能够打印Hello world?

这，，，按道理来讲，它不可能执行到输出的那一句的

反正我感觉，最不可思议的还是第1张图，虽然第2张图也很奇怪。。。
这个严格来讲不算UB，因为标准实际上没说过无限循环是UB，C++所有UB都是一条一条写出来的，UB发生的前提是有明确定义的，如果有需要解决的不明确行为，是标准的缺陷。    产生这个结果的是经历了3步：    1. clang发现存在死循环，因此return不可达，导致删除return

2. clang发现循环无副作用，因此删了循环    至此，main函数体内一条代码也没被生成（PS4平台生成了一条陷阱指令）    3.由于main这个函数要被CRT调用，所以main函数即使一条代码也没生成也会被调用，并产生符号，由于main函数被删空导致main符号的地址和unreachable重合了，因此调用main直接fallthrough到unreachable    C++标准只是规定任何任何代码都被认为是可以退出，无副作用死循环会被认定为无法退出进而被认定为无用而被as-if规则删除（因此不应该干涉其他代码）。现在的问题核心在于这个死循环删了会导致return可达，而clang在第一步的优化中假定了return不可达，所以clang实际上进行了1个矛盾的假设：return在1中不可达在2中又可达。    这个问题已经被提交给C++LWG，在cplusplus/draft/issues/5377，是否应该允许clang同时做出这两个优化，该行为被最终认定为UB则可以，不是则不能。