public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
* [Bug c++/65896] New: Erroneous uninitialized variable access error in constexpr function with temporary variables
@ 2015-04-26 16:32 david at doublewise dot net
2015-04-27 1:12 ` [Bug c++/65896] " david at doublewise dot net
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: david at doublewise dot net @ 2015-04-26 16:32 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65896
Bug ID: 65896
Summary: Erroneous uninitialized variable access error in
constexpr function with temporary variables
Product: gcc
Version: 5.1.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: david at doublewise dot net
Target Milestone: ---
file.cpp
==================================================
struct base{};
struct derived : base {
constexpr derived():
base{},
m_value(0) {
}
constexpr derived(derived & other):
base{},
m_value(other) {
}
constexpr explicit operator int() const {
return m_value;
}
int m_value;
};
constexpr int by_ref(derived && value) {
return (derived(value), 0);
}
constexpr int value = by_ref(derived{});
==================================================
c++ -std=c++11 -o /dev/null file.cpp -c
gcc 4.8.3 and 4.9.3 and clang 3.5.0 successfully compile this program. gcc
5.1.1 fails with:
file.cpp:22:29: in constexpr expansion of ‘by_ref(derived())’
file.cpp:22:39: in constexpr expansion of ‘derived((* & value))’
file.cpp:10:16: in constexpr expansion of ‘(& other)->derived::operator
int()’
file.cpp:22:39: error: accessing uninitialized member ‘derived::m_value’
constexpr int value = by_ref(derived{});
^
Changing to C++1y / C++14 does not change this.
>From gcc-bugs-return-484675-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Sun Apr 26 17:39:37 2015
Return-Path: <gcc-bugs-return-484675-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 9995 invoked by alias); 26 Apr 2015 17:39:37 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 9971 invoked by uid 48); 26 Apr 2015 17:39:33 -0000
From: "msebor at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug c/65892] gcc fails to implement N685 aliasing of union members
Date: Sun, 26 Apr 2015 17:39:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: c
X-Bugzilla-Version: 5.0
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: msebor at gcc dot gnu.org
X-Bugzilla-Status: UNCONFIRMED
X-Bugzilla-Resolution:
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org
X-Bugzilla-Target-Milestone: ---
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields: bug_status resolution
Message-ID: <bug-65892-4-Mku0twnELx@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-65892-4@http.gcc.gnu.org/bugzilla/>
References: <bug-65892-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2015-04/txt/msg02227.txt.bz2
Content-length: 876
https://gcc.gnu.org/bugzilla/show_bug.cgi?ide892
Martin Sebor <msebor at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|RESOLVED |UNCONFIRMED
Resolution|DUPLICATE |---
--- Comment #4 from Martin Sebor <msebor at gcc dot gnu.org> ---
Thanks for the pointer! I had looked for a related bug report but couldn't
find it.
There's an important difference between the test cases in pr14319 and the one
here that's easy to overlook. The rule only applies to structs defined in
unions, not those defined at file scope and only used to declare union members,
and to translation units in which the union definition is visible. I would
recommend closing pr14319 as NOTABUG. I have reopened this bug.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug c++/65896] Erroneous uninitialized variable access error in constexpr function with temporary variables 2015-04-26 16:32 [Bug c++/65896] New: Erroneous uninitialized variable access error in constexpr function with temporary variables david at doublewise dot net @ 2015-04-27 1:12 ` david at doublewise dot net 2015-04-27 8:39 ` [Bug c++/65896] [5/6 Regression] " redi at gcc dot gnu.org ` (3 subsequent siblings) 4 siblings, 0 replies; 6+ messages in thread From: david at doublewise dot net @ 2015-04-27 1:12 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65896 David Stone <david at doublewise dot net> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |david at doublewise dot net --- Comment #1 from David Stone <david at doublewise dot net> --- I have simplified the test case further: struct base {}; struct derived : base { constexpr derived(): base{}, m_value(0) { } int m_value; }; constexpr int by_ref(derived && value) { return value.m_value; } constexpr int value = by_ref(derived{}); ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug c++/65896] [5/6 Regression] Erroneous uninitialized variable access error in constexpr function with temporary variables 2015-04-26 16:32 [Bug c++/65896] New: Erroneous uninitialized variable access error in constexpr function with temporary variables david at doublewise dot net 2015-04-27 1:12 ` [Bug c++/65896] " david at doublewise dot net @ 2015-04-27 8:39 ` redi at gcc dot gnu.org 2015-04-28 21:27 ` jason at gcc dot gnu.org ` (2 subsequent siblings) 4 siblings, 0 replies; 6+ messages in thread From: redi at gcc dot gnu.org @ 2015-04-27 8:39 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65896 Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |rejects-valid Status|UNCONFIRMED |NEW Last reconfirmed| |2015-04-27 Known to work| |4.8.3, 4.9.2 Summary|Erroneous uninitialized |[5/6 Regression] Erroneous |variable access error in |uninitialized variable |constexpr function with |access error in constexpr |temporary variables |function with temporary | |variables Ever confirmed|0 |1 Known to fail| |5.1.0, 6.0 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug c++/65896] [5/6 Regression] Erroneous uninitialized variable access error in constexpr function with temporary variables 2015-04-26 16:32 [Bug c++/65896] New: Erroneous uninitialized variable access error in constexpr function with temporary variables david at doublewise dot net 2015-04-27 1:12 ` [Bug c++/65896] " david at doublewise dot net 2015-04-27 8:39 ` [Bug c++/65896] [5/6 Regression] " redi at gcc dot gnu.org @ 2015-04-28 21:27 ` jason at gcc dot gnu.org 2015-04-29 0:58 ` jason at gcc dot gnu.org 2015-04-29 0:58 ` jason at gcc dot gnu.org 4 siblings, 0 replies; 6+ messages in thread From: jason at gcc dot gnu.org @ 2015-04-28 21:27 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65896 --- Comment #2 from Jason Merrill <jason at gcc dot gnu.org> --- Author: jason Date: Tue Apr 28 21:27:17 2015 New Revision: 222549 URL: https://gcc.gnu.org/viewcvs?rev=222549&root=gcc&view=rev Log: PR c++/65896 * constexpr.c (cxx_eval_store_expression): Don't try to actually store an empty class. Added: trunk/gcc/testsuite/g++.dg/cpp0x/constexpr-empty9.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/constexpr.c ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug c++/65896] [5/6 Regression] Erroneous uninitialized variable access error in constexpr function with temporary variables 2015-04-26 16:32 [Bug c++/65896] New: Erroneous uninitialized variable access error in constexpr function with temporary variables david at doublewise dot net ` (2 preceding siblings ...) 2015-04-28 21:27 ` jason at gcc dot gnu.org @ 2015-04-29 0:58 ` jason at gcc dot gnu.org 2015-04-29 0:58 ` jason at gcc dot gnu.org 4 siblings, 0 replies; 6+ messages in thread From: jason at gcc dot gnu.org @ 2015-04-29 0:58 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65896 Jason Merrill <jason at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |jason at gcc dot gnu.org Resolution|--- |FIXED Assignee|unassigned at gcc dot gnu.org |jason at gcc dot gnu.org Target Milestone|--- |5.2 --- Comment #4 from Jason Merrill <jason at gcc dot gnu.org> --- Fixed for 5.2, 6 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug c++/65896] [5/6 Regression] Erroneous uninitialized variable access error in constexpr function with temporary variables 2015-04-26 16:32 [Bug c++/65896] New: Erroneous uninitialized variable access error in constexpr function with temporary variables david at doublewise dot net ` (3 preceding siblings ...) 2015-04-29 0:58 ` jason at gcc dot gnu.org @ 2015-04-29 0:58 ` jason at gcc dot gnu.org 4 siblings, 0 replies; 6+ messages in thread From: jason at gcc dot gnu.org @ 2015-04-29 0:58 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65896 --- Comment #3 from Jason Merrill <jason at gcc dot gnu.org> --- Author: jason Date: Wed Apr 29 00:57:50 2015 New Revision: 222557 URL: https://gcc.gnu.org/viewcvs?rev=222557&root=gcc&view=rev Log: PR c++/65896 * constexpr.c (cxx_eval_store_expression): Don't try to actually store an empty class. Added: branches/gcc-5-branch/gcc/testsuite/g++.dg/cpp0x/constexpr-empty9.C Modified: branches/gcc-5-branch/gcc/cp/ChangeLog branches/gcc-5-branch/gcc/cp/constexpr.c ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2015-04-29 0:58 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2015-04-26 16:32 [Bug c++/65896] New: Erroneous uninitialized variable access error in constexpr function with temporary variables david at doublewise dot net 2015-04-27 1:12 ` [Bug c++/65896] " david at doublewise dot net 2015-04-27 8:39 ` [Bug c++/65896] [5/6 Regression] " redi at gcc dot gnu.org 2015-04-28 21:27 ` jason at gcc dot gnu.org 2015-04-29 0:58 ` jason at gcc dot gnu.org 2015-04-29 0:58 ` jason at gcc dot gnu.org
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).