https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120872
Bug ID: 120872 Summary: Dovecot test-json-istream test miscompiled with -ftrivial-auto-var-init={zero,pattern} Product: gcc Version: 16.0 Status: UNCONFIRMED Keywords: false-positive, wrong-code Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: sjames at gcc dot gnu.org Target Milestone: --- This comes from Dovecot's testsuite (test-json-istream.c) where it's miscompiled with -ftrivial-auto-var-init={zero,pattern}. It also shows up as -Wmaybe-uninitialized with those options. ``` enum { JSON_TYPE_NULL, JSON_TYPE_TEXT } type; char *data_val; void frobnicate(); __attribute__((pure)) char *json_node_get_data(long *size_r) { *size_r = 0; switch (type) { case JSON_TYPE_TEXT: break; case JSON_TYPE_NULL: return ""; default: frobnicate(); } return 0; } void test_json_istream_read_string() { long size_val; frobnicate(); data_val = json_node_get_data(&size_val); if (__builtin_memcmp(data_val, 0, size_val)) frobnicate(); } ``` ``` $ gcc test-json-istream.i -O2 -ftrivial-auto-var-init=zero -c -Werror=uninitialized test-json-istream.i: In function ‘test_json_istream_read_string’: test-json-istream.i:25:7: error: ‘size_val’ may be used uninitialized [-Werror=maybe-uninitialized] 25 | if (__builtin_memcmp(data_val, 0, size_val)) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ test-json-istream.i:20:8: note: ‘size_val’ was declared here 20 | long size_val; | ^~~~~~~~ cc1: some warnings being treated as errors ```