Hi Willy, Thank you for taking the time to investigate this. I really appreciate the detailed follow-up.
Have a good day/night! Best, Yongqiang Tian On Thu, 3 Sept 2026 at 17:19, Willy Tarreau <[email protected]> wrote: > > Hi Yongqiang, > > On Thu, Sep 03, 2026 at 06:49:40AM +1000, Yongqiang Tian wrote: > > Hi Willy, > > > > Thank you for looking into this. Please let me know if any additional > > information or testing from my side would be helpful. > > Sorry for the delay. I've run some extra tests, and I found that indeed > as you said, your change is generally enough for clang 14+ to place a > tail jump, while without the change it wouldn't do it. So that's great. > I also noticed that clang 13 shows complain_with_dbg() and that my > previous attempt didn't help, so happy to drop it. > > Out of curiosity I tried the [[clang::musttail]] attribute on the > return statement, then the compiler yells at me: > > src/debug.c:1119:23: error: cannot perform a tail call to function > 'ha_backtrace_to_stderr' because its signature is > incompatible with the calling function > 1119 | [[clang::musttail]] return > ha_backtrace_to_stderr(!!(dbg->details & DBG_DET_FAT_FATL)); > | ^ > src/debug.c:296:1: note: target function has type mismatch at 1st parameter > (expected 'int' but has 'struct debug_count *') > 296 | __attribute__((noinline)) void ha_backtrace_to_stderr(int hint) > | ^ > > while we don't really care since the args don't play a role here (and > the best proof is that the compiler happily does the job without being > asked to do so). > > So I'm merging your patch, adding one line about clang 13 for posterity. > > Thank you! > Willy

