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.