Landing: c31d01c3eaec

Project / Subsystem

gcc / c++/modules

Date

2026-04-29

Author

Patrick Palka

Commit

c31d01c3eaecfce32659d5e6acaf0cd858ef0569

Source

github

Perf win

No

Breaking

No

All attributes

project
gcc
subsystem
c++/modules
patch_id
commit_hash
c31d01c3eaecfce32659d5e6acaf0cd858ef0569
source_type
github
headline
C++ Modules: Fix merging of member functions
tldr
Declaration merging now considers whether a member function has an implicit or explicit object parameter to avoid ICEs.
author
Patrick Palka
outcome
committed
performance_win
false
breaking_change
false
series_id
series_parts
[]
tags
  • c++
  • modules
  • bugfix
discussion_id_link
bugzilla_pr
date
2026-04-29T00:00:00.000Z

The C++ module merging process in GCC could ICE during declaration merging of static member functions. The merge key lacked sufficient information to differentiate between overloads differing only by the presence of an object parameter. This patch adds iobj_p and xobj_p bits to the merge key to resolve this ambiguity, fixing the ICE. New test cases are added.