https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91501
--- Comment #5 from BCartier <baptiste.cartier at ertosgener dot com> --- Thanks for the heads up, nice to know a fix could be possible. As for the const reference in doStuff, do you mean void __attribute__((noinline)) doStuff(const struct TestStruct &myStruct) { ... } ? By doing so, wouldn't you use the address of a temporary variable (created by the macro and the function) ?