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

            Bug ID: 121478
           Summary: [ICE] internal compiler error: in fold_convert_loc, at
                    fold-const.cc:2670
           Product: gcc
           Version: 16.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: njuwy at smail dot nju.edu.cn
  Target Milestone: ---

Compiler Explorer: https://godbolt.org/z/dx3zfh88v


The crash triggering program (compile with `gcc-16 -O3`):
```
#include <stddef.h>
#include <stdlib.h>
typedef struct {
    int data[5];
    nullptr_t np;
} container_t;
void process_array(int *arr, size_t len, nullptr_t nullp) {
    for (size_t i = 0; i < len; ++i) {
        switch (arr[i] % 4) {
            case 1:
                if (nullp == nullptr) {
                    arr[i] *= -1;
                    [[fallthrough]];
                }
            case 2:
                arr[i] = abs(arr[i]);
                break;
            default:
                arr[i] = 0;
        }
    }
}
int main(void) {
    container_t c = {
        .data = { -3, 1, 4, 2, 7 },
        .np = nullptr
    };
    process_array(c.data, 5, c.np);
}

```

The crash output:
```
during GIMPLE pass: lsplit
<source>: In function 'process_array':
<source>:7:6: internal compiler error: in fold_convert_loc, at
fold-const.cc:2670
    7 | void process_array(int *arr, size_t len, nullptr_t nullp) {
      |      ^~~~~~~~~~~~~
0x2550a15 diagnostics::context::diagnostic_impl(rich_location*,
diagnostics::metadata const*, diagnostics::option_id, char const*,
__va_list_tag (*) [1], diagnostics::kind)
        ???:0
0x25462b6 internal_error(char const*, ...)
        ???:0
0xa04a1c fancy_abort(char const*, int, char const*)
        ???:0
0x1365852 number_of_iterations_exit(loop*, edge_def*, tree_niter_desc*, bool,
bool, basic_block_def**)
        ???: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.
Compiler returned: 1
```

Reply via email to