------- Comment #1 from lcwu at gcc dot gnu dot org 2009-04-17 23:07 ------- This bogus warning started to show up after the fix for PR c++/39551 was submitted (at revision 146132). And the root cause for the issue is that C++ front-end generates the following code to initialize the local 'pair' array: (see build_vec_init() in cp/init.c)
*(struct pair[3] *) ({ (D.2247 = (struct pair *) &components); (D.2248 = D.2247); (D.2249 = 2); for_stmt { D.2249 != -1; --D.2249; __comp_ctor (NON_LVALUE_EXPR <D.2248>); ++D.2248; } D.2247; }) The INDIRECT_REF operation (*) in the above code was later determined useless and therefore deleted. However, since we didn't know that the INDIRECT_REF expression was actually created by the compiler (instead of coming from the user code) and therefore mistakenly emit an 'unused value' warning. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39803