> If you could also share the two preprocessed versions of thread.c would > be of great help.  You should be able to do it adding to your original > GCC invokation like "-E -o thread.i". What I ended up doing was: cd src make thread.o -W thread.c CFLAGS='-g3 -O2 -gdwarf-2 -Wno-error=implicit-function-declaration -E -o thread.i' I hope this is what you were after. The addition of '-Wno-error=implicit-function-declaration' comes from issue #70889 btw. I've also edited the "E:/Git/emacs-debug-gcc14/emacs" paths in the thread.i files by hand so they don't show up in the diff; they were originally compiled in two separate folders. The resulting files are almost exactly the same: diff -ubBw thread.i thread-attr-no-optimize-sibling-calls.i --- thread.i    2024-05-15 20:34:08 +0000 +++ thread-attr-no-optimize-sibling-calls.i     2024-05-15 20:33:44 +0000 @@ -152355,12 +152355,13 @@  } +__attribute__((optimize("no-optimize-sibling-calls")))  void  mark_threads (void)  {    flush_stack_call_func (mark_threads_callback, -# 1181 "thread.c" 3 4 +# 1182 "thread.c" 3 4                                                 ((void *)0) -# 1181 "thread.c" +# 1182 "thread.c"                                                     );  }