From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29916 invoked by alias); 16 May 2012 10:30:00 -0000 Received: (qmail 29905 invoked by uid 22791); 16 May 2012 10:29:59 -0000 X-SWARE-Spam-Status: No, hits=-4.3 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00,KHOP_THREADED X-Spam-Check-By: sourceware.org Received: from localhost (HELO gcc.gnu.org) (127.0.0.1) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 16 May 2012 10:29:02 +0000 From: "rguenth at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug tree-optimization/53364] [4.7/4.8 Regression] Wrong code generation Date: Wed, 16 May 2012 10:32:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: tree-optimization X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: rguenth at gcc dot gnu.org X-Bugzilla-Status: NEW X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: 4.7.1 X-Bugzilla-Changed-Fields: Status Last reconfirmed Component Known to work Target Milestone Ever Confirmed Known to fail Message-ID: In-Reply-To: References: X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2012-05/txt/msg01619.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53364 Richard Guenther changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2012-05-16 Component|c++ |tree-optimization Known to work| |4.6.3 Target Milestone|--- |4.7.1 Ever Confirmed|0 |1 Known to fail| |4.7.1 --- Comment #5 from Richard Guenther 2012-05-16 10:28:58 UTC --- Confirmed. Reduced testcase: extern "C" void abort (void); template inline const _Tp& min(const _Tp& __a, const _Tp& __b) { if (__b < __a) return __b; return __a; } struct A { int m_x; explicit A(int x) : m_x(x) {} operator int() const { return m_x; } }; struct B : public A { public: explicit B(int x) : A(x) {} }; int data = 1; int main() { B b = B(10); b = min(b, B(data)); if (b != 1) abort (); return 0; }