[ foo.cpp ]

struct Var {
    operator int() const;
    Var& operator = (int);
    bool operator == (int);
};
bool operator == (int, Var&);

void foo(Var var)
{
    if (var = 0);  // if (var.operator=(0))
}

[ foo.cpp.t03.gimple ]

void foo(Var) (var)
{
  bool retval.0;
  struct Var & D.1768;
  int D.1769;

  D.1768 = operator= (&var, 0);
  D.1769 = operator 1 (D.1768);
  retval.0 = D.1769 != 0;
}


-- 
           Summary: missed diagnostic about assignment used as truth value.
           Product: gcc
           Version: 4.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: pluto at agmk dot net
 GCC build triplet: i686-pld-linux
  GCC host triplet: i686-pld-linux
GCC target triplet: i686-pld-linux


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25689


Reply via email to