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

            Bug ID: 99389
           Summary: [modules] bad serialization of data
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: nathan at gcc dot gnu.org
  Target Milestone: ---

Triaging 99377 runs into this:

// bug_a.ii
template<typename _CharT>
class basic_string_view
{
public:
  basic_string_view(const _CharT* __str) noexcept
  {}
  bool
    empty() const noexcept
  { return !_M_len; }

private:
  unsigned _M_len;
};

using string_view = basic_string_view<char>;

// bug_b.ii
export module hello;

import "bug_a.ii";

export inline bool Check (const string_view& n)
{
  return !n.empty ();
}


// bug_c.ii
import hello;

int main ()
{
  return Check ("World") ? 0 : 1;
}

./cc1plus -quiet -fmodule-header   bug_a.ii && ./cc1plus -quiet -fmodules-ts
bug_b.ii && ./cc1plus -quiet -fmodules-ts bug_c.ii
In module imported at bug_c.ii:1:1:
hello: In function 'int main()':
hello: error: failed to read compiled module cluster 1: Bad file data
hello: note: compiled module file is 'gcm.cache/hello.gcm'
hello: error: failed to read compiled module cluster 2: Bad file data
bug_c.ii:5:10: fatal error: failed to load binding '::Check@hello'
    5 |   return Check ("World") ? 0 : 1;
      |          ^~~~~

we failed to find _M_len as that instantiation's not (yet?) loaded

Reply via email to