------- 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

Reply via email to