The un-surprising things is that neither GCC or clang has changed their behavior at all around $ in or near identifiers:
  C++ (-std = c++14 / c++17 / c++20 / c++23 / c++2c)

  ┌────────────┬────────┬─────────────┬─────────────┬─────────────┬─────────────┬─────────────┐
  │  Compiler  │  Ver   │    c++14    │    c++17    │    c++20    │    c++23    │    c++2c    │
  ├────────────┼────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
  │ g++-13     │ 13.3.0 │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │ —           │
  ├────────────┼────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
  │ g++-14     │ 14.2.0 │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │
  ├────────────┼────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
  │ g++-15     │ 15.2.1 │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │
  ├────────────┼────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
  │ g++-16     │ 16.1.1 │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │
  ├────────────┼────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
  │ clang++-18 │ 18.1.8 │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │
  ├────────────┼────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
  │ clang++-19 │ 19.1.7 │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │
  ├────────────┼────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
  │ clang++-20 │ 20.1.8 │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │
  ├────────────┼────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
  │ clang++-21 │ 21.1.8 │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │
  ├────────────┼────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
  │ clang++-22 │ 22.1.8 │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │
  ├────────────┼────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
  │ clang++-23 │ 23.0.0 │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │
  └────────────┴────────┴─────────────┴─────────────┴─────────────┴─────────────┴─────────────┘

  C (-std = c11 / c17 / c2x / c23)

  ┌──────────┬────────┬─────────────┬─────────────┬─────────────┬─────────────┐
  │ Compiler │  Ver   │     c11     │     c17     │     c2x     │     c23     │
  ├──────────┼────────┼─────────────┼─────────────┼─────────────┼─────────────┤
  │ gcc-13   │ 13.3.0 │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │ —           │
  ├──────────┼────────┼─────────────┼─────────────┼─────────────┼─────────────┤
  │ gcc-14   │ 14.2.0 │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │
  ├──────────┼────────┼─────────────┼─────────────┼─────────────┼─────────────┤
  │ gcc-15   │ 15.2.1 │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │
  ├──────────┼────────┼─────────────┼─────────────┼─────────────┼─────────────┤
  │ gcc-16   │ 16.1.1 │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │
  ├──────────┼────────┼─────────────┼─────────────┼─────────────┼─────────────┤
  │ clang-18 │ 18.1.8 │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │
  ├──────────┼────────┼─────────────┼─────────────┼─────────────┼─────────────┤
  │ clang-19 │ 19.1.7 │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │
  ├──────────┼────────┼─────────────┼─────────────┼─────────────┼─────────────┤
  │ clang-20 │ 20.1.8 │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │
  ├──────────┼────────┼─────────────┼─────────────┼─────────────┼─────────────┤
  │ clang-21 │ 21.1.8 │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │
  ├──────────┼────────┼─────────────┼─────────────┼─────────────┼─────────────┤
  │ clang-22 │ 22.1.8 │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │
  ├──────────┼────────┼─────────────┼─────────────┼─────────────┼─────────────┤
  │ clang-23 │ 23.0.0 │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │ foo$ / bar$ │
  └──────────┴────────┴─────────────┴─────────────┴─────────────┴─────────────┘

C++:
#include <cstdio>
#include <cstring>

#define f(x) #x
#define g(x) f(x)
#define foo  bar

int main() {
    const char* s = g(foo$);
    std::printf("g(foo$) == \"%s\"\n", s);

    if (std::strcmp(s, "foo$") == 0)
        std::puts("=> '$' IS supported in identifiers: foo$ was one identifier.");
    else if (std::strcmp(s, "bar$") == 0)
        std::puts("=> '$' is NOT supported: foo$ became macro foo -> bar, then $.");
    else
        std::puts("=> unexpected");
}
C:
#include <stdio.h>
#define f(x) #x
#define g(x) f(x)
#define foo  bar
int main(void){ printf("%s\n", g(foo$)); return 0; }