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.