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

Donn Seeley <donn.seeley at everfox dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |donn.seeley at everfox dot com

--- Comment #6 from Donn Seeley <donn.seeley at everfox dot com> ---
I'm seeing this problem in GCC 14.2.1.  I'm trying to put together automated
ASAN testing for our product, and it's very annoying.  The problem isn't
exclusive to <regex>.

Here's my simple reproducer:

  #include <string>
  #include <regex>

  std::regex re{"x"};

  std::string x2y(const std::string& s)
  {
      return std::regex_replace(s, re, "y");
  }

I build it with:

  g++ -std=gnu++17 -O2 -fsanitize=address -Werror -Wall -Wextra -c
regex_bug.cpp

It produces the same set of error messages as the OP.  I can include the full
blast of messages if anyone's interested.  The failure occurs with -O1 and
higher optimization levels, but not -O0.

After I found that the problem doesn't appear when building with -O0, I did
some bisection to identify the optimizations that trigger the problem.  I can
build the test program successfully with:

  g++ -std=gnu++17 -O1 -fsanitize=address -fno-tree-dominator-opts
-fno-tree-fre -Werror -Wall -Wextra -c regex_bug.cpp

or

  g++ -std=gnu++17 -O2 -fsanitize=address -fno-code-hoisting
-fno-tree-dominator-opts -fno-tree-fre -fno-tree-pre -Werror -Wall -Wextra -c
regex_bug.cpp

For now, I have added "#pragma GCC optimize (0)" directives for "#include
<regex>" in our source code.

Reply via email to