public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/66450] New: [5 Regression][C++11][constexpr] Issues when delegating implicit copy constructor in constexpr function
@ 2015-06-07 15:31 mosra at centrum dot cz
2015-06-08 17:48 ` [Bug c++/66450] " daniel.kruegler at googlemail dot com
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: mosra at centrum dot cz @ 2015-06-07 15:31 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66450
Bug ID: 66450
Summary: [5 Regression][C++11][constexpr] Issues when
delegating implicit copy constructor in constexpr
function
Product: gcc
Version: 5.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: mosra at centrum dot cz
Target Milestone: ---
The following code is compiled fine in both GCC 4.9.2 and Clang 3.6:
struct foo {
constexpr foo(int a);
constexpr foo(int a, int b, int c): a{a}, b{b}, c{c} {}
int a, b, c;
};
constexpr foo make_foo(int a) { return foo{a, a+1, a+2}; }
constexpr foo::foo(int a): foo{make_foo(a)} {}
int main() {
constexpr const foo f{3};
static_assert(f.a == 3, "");
static_assert(f.b == 4, "");
static_assert(f.c == 5, "");
}
In GCC 5.1 it produces an error about non-constant condition for static
assertion. If the relevant lines are changed to runtime assert (and #include
<cassert> added):
assert(f.a == 3);
assert(f.b == 4);
assert(f.c == 5);
Then all three assertions fail at runtime, because the copy constructor is
somehow not called and the structure is instead just zeroed out. HOWEVER, if
you remove all occurrences of the constexpr keyword, the code compiles, no
runtime assertion is fired and everything behaves as expected.
The behavior is the same for -std=c++11 and -std=c++14.
I think the static assertion error and the zero-initialization are somehow
related, so I put these into single issue instead of creating two separate
ones.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug c++/66450] [5 Regression][C++11][constexpr] Issues when delegating implicit copy constructor in constexpr function
2015-06-07 15:31 [Bug c++/66450] New: [5 Regression][C++11][constexpr] Issues when delegating implicit copy constructor in constexpr function mosra at centrum dot cz
@ 2015-06-08 17:48 ` daniel.kruegler at googlemail dot com
2015-06-11 15:45 ` jason at gcc dot gnu.org
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: daniel.kruegler at googlemail dot com @ 2015-06-08 17:48 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66450
Daniel Krügler <daniel.kruegler at googlemail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |daniel.kruegler@googlemail.
| |com
--- Comment #1 from Daniel Krügler <daniel.kruegler at googlemail dot com> ---
The problem also occurs in gcc HEAD 6.0.0 20150607 (experimental)
>From gcc-bugs-return-488407-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Mon Jun 08 18:04:39 2015
Return-Path: <gcc-bugs-return-488407-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 33442 invoked by alias); 8 Jun 2015 18:04:39 -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 33414 invoked by uid 48); 8 Jun 2015 18:04:34 -0000
From: "anlauf at gmx dot de" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug fortran/66461] ICE on missing end program in fixed source
Date: Mon, 08 Jun 2015 18:04:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: fortran
X-Bugzilla-Version: 5.1.1
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: anlauf at gmx dot de
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: cc
Message-ID: <bug-66461-4-7c2NluP4lj@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-66461-4@http.gcc.gnu.org/bugzilla/>
References: <bug-66461-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-06/txt/msg00739.txt.bz2
Content-length: 1136
https://gcc.gnu.org/bugzilla/show_bug.cgi?idf461
Harald Anlauf <anlauf at gmx dot de> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |anlauf at gmx dot de
--- Comment #1 from Harald Anlauf <anlauf at gmx dot de> ---
(In reply to Gerhard Steinmetz from comment #0)
> A missing end program in a "fixed" source s.f :
> program p
> integer x(2)
> x = 0
> if ( x(1) < 0 .or.
> & x(2) < 0 ) print *, x
> !end
>
> yields :
> f951: internal compiler error: free_expr0(): Bad expr type
That's obviously an old regression:
gcc/4.4.5:
pr66451.f:4.27:
if ( x(1) < 0 .or.
1
Error: Syntax error in expression at (1)
Error: Unexpected end of file in 'pr66451.f'
gcc/4.5.2:
pr66451.f:4.9:
if ( x(1) < 0 .or.
1
Internal Error at (1):
free_expr0(): Bad expr type
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug c++/66450] [5 Regression][C++11][constexpr] Issues when delegating implicit copy constructor in constexpr function
2015-06-07 15:31 [Bug c++/66450] New: [5 Regression][C++11][constexpr] Issues when delegating implicit copy constructor in constexpr function mosra at centrum dot cz
2015-06-08 17:48 ` [Bug c++/66450] " daniel.kruegler at googlemail dot com
@ 2015-06-11 15:45 ` jason at gcc dot gnu.org
2015-06-17 14:33 ` jason at gcc dot gnu.org
2015-06-23 15:30 ` paolo.carlini at oracle dot com
3 siblings, 0 replies; 5+ messages in thread
From: jason at gcc dot gnu.org @ 2015-06-11 15:45 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66450
--- Comment #2 from Jason Merrill <jason at gcc dot gnu.org> ---
Author: jason
Date: Thu Jun 11 15:45:01 2015
New Revision: 224381
URL: https://gcc.gnu.org/viewcvs?rev=224381&root=gcc&view=rev
Log:
PR c++/66450
* constexpr.c (cxx_eval_store_expression): Avoid messing up outer
ctx->ctor.
Added:
trunk/gcc/testsuite/g++.dg/cpp0x/constexpr-fwctor1.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/constexpr.c
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug c++/66450] [5 Regression][C++11][constexpr] Issues when delegating implicit copy constructor in constexpr function
2015-06-07 15:31 [Bug c++/66450] New: [5 Regression][C++11][constexpr] Issues when delegating implicit copy constructor in constexpr function mosra at centrum dot cz
2015-06-08 17:48 ` [Bug c++/66450] " daniel.kruegler at googlemail dot com
2015-06-11 15:45 ` jason at gcc dot gnu.org
@ 2015-06-17 14:33 ` jason at gcc dot gnu.org
2015-06-23 15:30 ` paolo.carlini at oracle dot com
3 siblings, 0 replies; 5+ messages in thread
From: jason at gcc dot gnu.org @ 2015-06-17 14:33 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66450
--- Comment #3 from Jason Merrill <jason at gcc dot gnu.org> ---
Author: jason
Date: Wed Jun 17 14:33:02 2015
New Revision: 224557
URL: https://gcc.gnu.org/viewcvs?rev=224557&root=gcc&view=rev
Log:
PR c++/66450
* constexpr.c (cxx_eval_store_expression): Avoid messing up outer
ctx->ctor.
Added:
branches/gcc-5-branch/gcc/testsuite/g++.dg/cpp0x/constexpr-fwctor1.C
Modified:
branches/gcc-5-branch/gcc/cp/ChangeLog
branches/gcc-5-branch/gcc/cp/constexpr.c
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug c++/66450] [5 Regression][C++11][constexpr] Issues when delegating implicit copy constructor in constexpr function
2015-06-07 15:31 [Bug c++/66450] New: [5 Regression][C++11][constexpr] Issues when delegating implicit copy constructor in constexpr function mosra at centrum dot cz
` (2 preceding siblings ...)
2015-06-17 14:33 ` jason at gcc dot gnu.org
@ 2015-06-23 15:30 ` paolo.carlini at oracle dot com
3 siblings, 0 replies; 5+ messages in thread
From: paolo.carlini at oracle dot com @ 2015-06-23 15:30 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66450
Paolo Carlini <paolo.carlini at oracle dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Blocks| |55004
Resolution|--- |FIXED
Target Milestone|--- |5.2
--- Comment #4 from Paolo Carlini <paolo.carlini at oracle dot com> ---
Fixed then.
Referenced Bugs:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55004
[Bug 55004] [meta-bug] constexpr issues
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2015-06-23 15:30 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-06-07 15:31 [Bug c++/66450] New: [5 Regression][C++11][constexpr] Issues when delegating implicit copy constructor in constexpr function mosra at centrum dot cz
2015-06-08 17:48 ` [Bug c++/66450] " daniel.kruegler at googlemail dot com
2015-06-11 15:45 ` jason at gcc dot gnu.org
2015-06-17 14:33 ` jason at gcc dot gnu.org
2015-06-23 15:30 ` paolo.carlini at oracle dot com
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).