https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104076

            Bug ID: 104076
           Summary: bogus -Wdangling-pointer on a conditional
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: msebor at gcc dot gnu.org
  Target Milestone: ---

As reported in
https://gcc.gnu.org/pipermail/gcc-patches/2022-January/588620.html, the new
-Wdangling-pointer issues a false positive for the following test case:

$ cat t.C && g++ -S -Wall t.C
#include <initializer_list>

struct S1
{
  S1 (int);
  ~S1 ();
};

struct S2 { S2 (std::initializer_list<S1>); };

S2 f1();

S2 f2(bool b)
{
  return b ? f1() : S2{0};
}

t.C: In function ‘S2 f2(bool)’:
t.C:16:1: warning: dangling pointer to an unnamed temporary may be used
[-Wdangling-pointer=]
   16 | }
      | ^
t.C:15:25: note: unnamed temporary defined here
   15 |   return b ? f1() : S2{0};
      |                         ^
t.C:16:1: warning: dangling pointer to an unnamed temporary may be used
[-Wdangling-pointer=]
   16 | }
      | ^
t.C:15:25: note: unnamed temporary defined here
   15 |   return b ? f1() : S2{0};
      |                         ^

Reply via email to