https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120273

Iain Sandoe <iains at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|2025-05-20 00:00:00         |2025-5-21

--- Comment #9 from Iain Sandoe <iains at gcc dot gnu.org> ---
nope - nothing has become corrupted.

One of the objectives of the changes:

cp_coroutine_transform::wrap_original_function_body ()
{
  /* Avoid the code here attaching a location that makes the debugger jump.  */
  iloc_sentinel stable_input_loc (fn_start);
  location_t loc = UNKNOWN_LOCATION;
  input_location = loc;


but...deep in the lookup code (called for the co_await operator) ...

frame #5: 0x000000010022c6b0 cc1plus`cxx_make_type(code=RECORD_TYPE) at
lex.cc:1139:15
   1136     {
   1137       /* Set up some flags that give proper default behavior.  */
   1138       struct c_fileinfo *finfo =
-> 1139         get_fileinfo (LOCATION_FILE (input_location));

this is an unfortunate feature of the GCC code, there are lots of places where
it goes straight to input_location which is not helpful when synthesising code
that does not relate to the current input_location.

This part of the infrastructure does not seem to be prepared to deal with
"UNKNOWN_LOCATION" as the current input_location.

We can "fix" this by backing out of the intended improvements in debug
locations .. or, I guess, figure out how get_fileinfo should behave for an
UNKOWN_LOCATION.

Reply via email to