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

            Bug ID: 117295
           Summary: ICE: in edge_before_returns_twice_call, at
                    gimple-iterator.cc:957 with returns_twice and -O1
                    -fsanitize=address -finstrument-functions
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: sanitizer
          Assignee: unassigned at gcc dot gnu.org
          Reporter: iamanonymous.cs at gmail dot com
                CC: dodji at gcc dot gnu.org, dvyukov at gcc dot gnu.org,
                    jakub at gcc dot gnu.org, kcc at gcc dot gnu.org
  Target Milestone: ---

Maybe similar to bug 114687. 
There is something broken with -fsanitize=address -finstrument-functions and
returns_twice.

Program:
$ cat mutant.c
long b;
void abort();
void __attribute__((returns_twice)) a() { abort(); }
void d();
void c() {
  switch (b) {
  case 6:
    a();
  case 0:
    d();
  }
}

Command Lines:
$ gcc -O1 -fsanitize=address -finstrument-functions mutant.c
during GIMPLE pass: asan
mutant.c: In function 'c':
mutant.c:5:6: internal compiler error: in edge_before_returns_twice_call, at
gimple-iterator.cc:957
    5 | void c() {
      |      ^
0x5071bcf diagnostic_context::report_diagnostic(diagnostic_info*)
        ???:0
0x50724a1 diagnostic_context::diagnostic_impl(rich_location*,
diagnostic_metadata const*, int, char const*, __va_list_tag (*) [1],
diagnostic_t)
        ???:0
0x50924c7 internal_error(char const*, ...)
        ???:0
0x50729e4 fancy_abort(char const*, int, char const*)
        ???:0
0x160e0b1 gsi_safe_insert_before(gimple_stmt_iterator*, gimple*)
        ???:0
Please submit a full bug report, with preprocessed source (by using
-freport-bug).
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.

Godbolt link: https://godbolt.org/z/Tx67TxvPd

Reply via email to