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

            Bug ID: 104941
           Summary: ICE error: invalid (pointer) operands ‘minus_expr’
                    since r12-6482-g06bc1b0c539e3a60
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: marxin at gcc dot gnu.org
                CC: siddhesh at gcc dot gnu.org
  Target Milestone: ---

Reduced from exfatprogs package:

$ cat exfatprogs.i
struct bsx64 {
  char reserved2[7];
};

struct pbr {
  int bpb;
  struct bsx64 bsx;
} static exfat_setup_boot_sector(struct pbr *ppbr) {
  struct bsx64 *pbsx = &ppbr->bsx;
  long __trans_tmp_1 = __builtin_dynamic_object_size(pbsx->reserved2, 0);
  __builtin___memset_chk(pbsx, 0, 7, __trans_tmp_1);
}

int x;

void
exfat_write_boot_sector_bd_0() {
  struct pbr *ppbr = __builtin_malloc(x);
  exfat_setup_boot_sector(ppbr);
}

$ gcc exfatprogs.i -c -D_FORTIFY_SOURCE=3 -O
exfatprogs.i: In function ‘exfat_write_boot_sector_bd_0’:
exfatprogs.i:17:1: error: type mismatch in binary expression
   17 | exfat_write_boot_sector_bd_0() {
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
long unsigned int

long unsigned int

struct bsx64 *

_6 = MAX_EXPR <_2, 4B>;
exfatprogs.i:17:1: error: invalid (pointer) operands ‘minus_expr’
_11 = _6 - 4B;
during GIMPLE pass: objsz
exfatprogs.i:17:1: internal compiler error: verify_gimple failed
0xf97bf5 verify_gimple_in_cfg(function*, bool)
        /home/marxin/Programming/gcc/gcc/tree-cfg.cc:5561
0xe55f3e execute_function_todo
        /home/marxin/Programming/gcc/gcc/passes.cc:2084
0xe5655b execute_todo
        /home/marxin/Programming/gcc/gcc/passes.cc:2138
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.

Reply via email to