Hi, Kees, Thanks for the testing case. Yes, I noticed this issue too, and already fixed it in my private branch.
With the latest patch, the compilation has no issue: [opc@qinzhao-ol8u3-x86 108896]$ sh t /home/opc/Install/latest-d/bin/gcc -O2 -c -o /dev/null bug.c [opc@qinzhao-ol8u3-x86 108896]$ Qing > On Aug 17, 2023, at 2:38 AM, Kees Cook <keesc...@chromium.org> wrote: > > On Wed, Aug 16, 2023 at 10:31:30PM -0700, Kees Cook wrote: >> On Fri, Aug 04, 2023 at 07:44:28PM +0000, Qing Zhao wrote: >>> This is the 2nd version of the patch, per our discussion based on the >>> review comments for the 1st version, the major changes in this version >> >> I've been using Coccinelle to find and annotate[1] structures (193 so >> far...), and I've encountered 2 cases of GCC internal errors. I'm working >> on a minimized test case, but just in case these details are immediately >> helpful, here's what I'm seeing: > > Okay, I got it minimized: > > $ cat poc.c > struct a { > unsigned long c; > char d[] __attribute__((__counted_by__(c))); > } *b; > > void f(long); > > void e(void) { > long g = __builtin_dynamic_object_size(b->d, 1); > f(g); > } > $ gcc -O2 -c -o /dev/null poc.c > poc.c: In function 'e': > poc.c:8:6: error: incorrect sharing of tree nodes > 8 | void e(void) { > | ^ > *b.0_1 > _2 = &b.0_1->d; > during GIMPLE pass: objsz > poc.c:8:6: internal compiler error: verify_gimple failed > 0xfe97fd verify_gimple_in_cfg(function*, bool, bool) > ../../../../gcc/gcc/tree-cfg.cc:5646 > 0xe84894 execute_function_todo > ../../../../gcc/gcc/passes.cc:2088 > 0xe84dee execute_todo > ../../../../gcc/gcc/passes.cc:2142 > > -- > Kees Cook