* [Bug libstdc++/54025] atomic<chrono::duration> won't compile: chrono::duration::duration() is not C++11 compliant
2012-07-19 2:55 [Bug libstdc++/54025] New: atomic<chrono::duration> won't compile: chrono::duration::duration() is not C++11 compliant chip at pobox dot com
@ 2012-07-19 2:57 ` chip at pobox dot com
2012-07-19 8:34 ` redi at gcc dot gnu.org
` (14 subsequent siblings)
15 siblings, 0 replies; 17+ messages in thread
From: chip at pobox dot com @ 2012-07-19 2:57 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54025
--- Comment #1 from Chip Salzenberg <chip at pobox dot com> 2012-07-19 02:56:57 UTC ---
Created attachment 27829
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=27829
patch to duration default ctor
^ permalink raw reply [flat|nested] 17+ messages in thread
* [Bug libstdc++/54025] atomic<chrono::duration> won't compile: chrono::duration::duration() is not C++11 compliant
2012-07-19 2:55 [Bug libstdc++/54025] New: atomic<chrono::duration> won't compile: chrono::duration::duration() is not C++11 compliant chip at pobox dot com
2012-07-19 2:57 ` [Bug libstdc++/54025] " chip at pobox dot com
@ 2012-07-19 8:34 ` redi at gcc dot gnu.org
2012-07-19 9:40 ` paolo.carlini at oracle dot com
` (13 subsequent siblings)
15 siblings, 0 replies; 17+ messages in thread
From: redi at gcc dot gnu.org @ 2012-07-19 8:34 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54025
Jonathan Wakely <redi at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |rejects-valid
Status|UNCONFIRMED |NEW
Last reconfirmed| |2012-07-19
Ever Confirmed|0 |1
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-07-19 08:34:03 UTC ---
confirmed
^ permalink raw reply [flat|nested] 17+ messages in thread
* [Bug libstdc++/54025] atomic<chrono::duration> won't compile: chrono::duration::duration() is not C++11 compliant
2012-07-19 2:55 [Bug libstdc++/54025] New: atomic<chrono::duration> won't compile: chrono::duration::duration() is not C++11 compliant chip at pobox dot com
2012-07-19 2:57 ` [Bug libstdc++/54025] " chip at pobox dot com
2012-07-19 8:34 ` redi at gcc dot gnu.org
@ 2012-07-19 9:40 ` paolo.carlini at oracle dot com
2012-07-19 10:20 ` redi at gcc dot gnu.org
` (12 subsequent siblings)
15 siblings, 0 replies; 17+ messages in thread
From: paolo.carlini at oracle dot com @ 2012-07-19 9:40 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54025
Paolo Carlini <paolo.carlini at oracle dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |redi at gcc dot gnu.org
--- Comment #3 from Paolo Carlini <paolo.carlini at oracle dot com> 2012-07-19 09:40:07 UTC ---
Jon, shall I just apply patch and testcase?
^ permalink raw reply [flat|nested] 17+ messages in thread
* [Bug libstdc++/54025] atomic<chrono::duration> won't compile: chrono::duration::duration() is not C++11 compliant
2012-07-19 2:55 [Bug libstdc++/54025] New: atomic<chrono::duration> won't compile: chrono::duration::duration() is not C++11 compliant chip at pobox dot com
` (2 preceding siblings ...)
2012-07-19 9:40 ` paolo.carlini at oracle dot com
@ 2012-07-19 10:20 ` redi at gcc dot gnu.org
2012-07-19 11:57 ` paolo.carlini at oracle dot com
` (11 subsequent siblings)
15 siblings, 0 replies; 17+ messages in thread
From: redi at gcc dot gnu.org @ 2012-07-19 10:20 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54025
--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-07-19 10:20:07 UTC ---
Yes, I think so. I initially wondered if there was some interaction with PR
53901 but I think that just makes the bug visible, duration's constructor
should be explicitly-defaulted anyway.
^ permalink raw reply [flat|nested] 17+ messages in thread
* [Bug libstdc++/54025] atomic<chrono::duration> won't compile: chrono::duration::duration() is not C++11 compliant
2012-07-19 2:55 [Bug libstdc++/54025] New: atomic<chrono::duration> won't compile: chrono::duration::duration() is not C++11 compliant chip at pobox dot com
` (3 preceding siblings ...)
2012-07-19 10:20 ` redi at gcc dot gnu.org
@ 2012-07-19 11:57 ` paolo.carlini at oracle dot com
2012-07-19 12:06 ` redi at gcc dot gnu.org
` (10 subsequent siblings)
15 siblings, 0 replies; 17+ messages in thread
From: paolo.carlini at oracle dot com @ 2012-07-19 11:57 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54025
--- Comment #5 from Paolo Carlini <paolo.carlini at oracle dot com> 2012-07-19 11:57:04 UTC ---
If we just do the change and nothing else, 20_util/duration/cons/constexpr.cc
doesn't compile anymore with this error:
/scratch/Gcc/svn-dirs/trunk/libstdc++-v3/testsuite/20_util/duration/cons/constexpr.cc:27:42:
required from here
/scratch/Gcc/svn-dirs/trunk/libstdc++-v3/testsuite/util/testsuite_common_types.h:698:18:
error: uninitialized const '__obj' [-fpermissive]
{ constexpr _Tp __obj; }
^
In file included from
/scratch/Gcc/svn-dirs/trunk/libstdc++-v3/testsuite/20_util/duration/cons/constexpr.cc:21:0:
/home/paolo/Gcc/svn-dirs/trunk-build/x86_64-unknown-linux-gnu/libstdc++-v3/include/chrono:220:14:
note: 'const struct std::chrono::duration<long int>' has no user-provided
default constructor
struct duration
^
/home/paolo/Gcc/svn-dirs/trunk-build/x86_64-unknown-linux-gnu/libstdc++-v3/include/chrono:231:12:
note: constructor is not user-provided because it is explicitly defaulted in
the class body
constexpr duration() = default;
^
/home/paolo/Gcc/svn-dirs/trunk-build/x86_64-unknown-linux-gnu/libstdc++-v3/include/chrono:349:6:
note: and the implicitly-defined constructor does not initialize
'std::chrono::duration<long int>::rep std::chrono::duration<long int>::__r'
rep __r;
^
^ permalink raw reply [flat|nested] 17+ messages in thread
* [Bug libstdc++/54025] atomic<chrono::duration> won't compile: chrono::duration::duration() is not C++11 compliant
2012-07-19 2:55 [Bug libstdc++/54025] New: atomic<chrono::duration> won't compile: chrono::duration::duration() is not C++11 compliant chip at pobox dot com
` (4 preceding siblings ...)
2012-07-19 11:57 ` paolo.carlini at oracle dot com
@ 2012-07-19 12:06 ` redi at gcc dot gnu.org
2012-07-19 12:08 ` redi at gcc dot gnu.org
` (9 subsequent siblings)
15 siblings, 0 replies; 17+ messages in thread
From: redi at gcc dot gnu.org @ 2012-07-19 12:06 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54025
--- Comment #6 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-07-19 12:06:32 UTC ---
I think that test is wrong, a duration is only constexpr_default_constructible
if the rep type has a default-constructor, but std::chrono::seconds uses a
scalar rep.
I think the test should use something like this to check duration is
constexpr-default-constructible:
struct Seconds {
constexpr Seconds() = default;
std::chrono::seconds s{};
};
test1.operator()<std::chrono::duration<Seconds>>();
^ permalink raw reply [flat|nested] 17+ messages in thread
* [Bug libstdc++/54025] atomic<chrono::duration> won't compile: chrono::duration::duration() is not C++11 compliant
2012-07-19 2:55 [Bug libstdc++/54025] New: atomic<chrono::duration> won't compile: chrono::duration::duration() is not C++11 compliant chip at pobox dot com
` (5 preceding siblings ...)
2012-07-19 12:06 ` redi at gcc dot gnu.org
@ 2012-07-19 12:08 ` redi at gcc dot gnu.org
2012-07-19 12:17 ` paolo.carlini at oracle dot com
` (8 subsequent siblings)
15 siblings, 0 replies; 17+ messages in thread
From: redi at gcc dot gnu.org @ 2012-07-19 12:08 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54025
--- Comment #7 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-07-19 12:08:29 UTC ---
(In reply to comment #6)
> I think that test is wrong, a duration is only constexpr_default_constructible
> if the rep type has a default-constructor
... that initializes all its members.
^ permalink raw reply [flat|nested] 17+ messages in thread
* [Bug libstdc++/54025] atomic<chrono::duration> won't compile: chrono::duration::duration() is not C++11 compliant
2012-07-19 2:55 [Bug libstdc++/54025] New: atomic<chrono::duration> won't compile: chrono::duration::duration() is not C++11 compliant chip at pobox dot com
` (6 preceding siblings ...)
2012-07-19 12:08 ` redi at gcc dot gnu.org
@ 2012-07-19 12:17 ` paolo.carlini at oracle dot com
2012-07-19 12:19 ` redi at gcc dot gnu.org
` (7 subsequent siblings)
15 siblings, 0 replies; 17+ messages in thread
From: paolo.carlini at oracle dot com @ 2012-07-19 12:17 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54025
--- Comment #8 from Paolo Carlini <paolo.carlini at oracle dot com> 2012-07-19 12:17:13 UTC ---
Understood, thanks. A couple of times in the past I already tweeked a bit some
of those tests. Let me see...
^ permalink raw reply [flat|nested] 17+ messages in thread
* [Bug libstdc++/54025] atomic<chrono::duration> won't compile: chrono::duration::duration() is not C++11 compliant
2012-07-19 2:55 [Bug libstdc++/54025] New: atomic<chrono::duration> won't compile: chrono::duration::duration() is not C++11 compliant chip at pobox dot com
` (7 preceding siblings ...)
2012-07-19 12:17 ` paolo.carlini at oracle dot com
@ 2012-07-19 12:19 ` redi at gcc dot gnu.org
2012-07-19 12:23 ` paolo.carlini at oracle dot com
` (6 subsequent siblings)
15 siblings, 0 replies; 17+ messages in thread
From: redi at gcc dot gnu.org @ 2012-07-19 12:19 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54025
--- Comment #9 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-07-19 12:19:05 UTC ---
Another option would be to give duration::__rep a NSDMI, which leaves the
testcase valid (as a QoI feature, I believe)
^ permalink raw reply [flat|nested] 17+ messages in thread
* [Bug libstdc++/54025] atomic<chrono::duration> won't compile: chrono::duration::duration() is not C++11 compliant
2012-07-19 2:55 [Bug libstdc++/54025] New: atomic<chrono::duration> won't compile: chrono::duration::duration() is not C++11 compliant chip at pobox dot com
` (8 preceding siblings ...)
2012-07-19 12:19 ` redi at gcc dot gnu.org
@ 2012-07-19 12:23 ` paolo.carlini at oracle dot com
2012-07-19 12:34 ` redi at gcc dot gnu.org
` (5 subsequent siblings)
15 siblings, 0 replies; 17+ messages in thread
From: paolo.carlini at oracle dot com @ 2012-07-19 12:23 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54025
--- Comment #10 from Paolo Carlini <paolo.carlini at oracle dot com> 2012-07-19 12:23:40 UTC ---
I see. For now I would rather just minimally tweak to testcase. If you want to
play a bit more with this and experiment with the various options, just let me
know.
^ permalink raw reply [flat|nested] 17+ messages in thread
* [Bug libstdc++/54025] atomic<chrono::duration> won't compile: chrono::duration::duration() is not C++11 compliant
2012-07-19 2:55 [Bug libstdc++/54025] New: atomic<chrono::duration> won't compile: chrono::duration::duration() is not C++11 compliant chip at pobox dot com
` (9 preceding siblings ...)
2012-07-19 12:23 ` paolo.carlini at oracle dot com
@ 2012-07-19 12:34 ` redi at gcc dot gnu.org
2012-07-19 12:48 ` paolo.carlini at oracle dot com
` (4 subsequent siblings)
15 siblings, 0 replies; 17+ messages in thread
From: redi at gcc dot gnu.org @ 2012-07-19 12:34 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54025
--- Comment #11 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-07-19 12:34:19 UTC ---
Oh, I think our current code might be intentional, we should ask Benjamin:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3303.html
See c++std-lib-32464 for rational for the std semantics i.e.
duration<trivial_type> is a trivial type, and leaves the rep uninitialized.
^ permalink raw reply [flat|nested] 17+ messages in thread
* [Bug libstdc++/54025] atomic<chrono::duration> won't compile: chrono::duration::duration() is not C++11 compliant
2012-07-19 2:55 [Bug libstdc++/54025] New: atomic<chrono::duration> won't compile: chrono::duration::duration() is not C++11 compliant chip at pobox dot com
` (10 preceding siblings ...)
2012-07-19 12:34 ` redi at gcc dot gnu.org
@ 2012-07-19 12:48 ` paolo.carlini at oracle dot com
2012-07-19 15:18 ` daniel.kruegler at googlemail dot com
` (3 subsequent siblings)
15 siblings, 0 replies; 17+ messages in thread
From: paolo.carlini at oracle dot com @ 2012-07-19 12:48 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54025
Paolo Carlini <paolo.carlini at oracle dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |bkoz at gcc dot gnu.org,
| |daniel.kruegler at
| |googlemail dot com
--- Comment #12 from Paolo Carlini <paolo.carlini at oracle dot com> 2012-07-19 12:48:19 UTC ---
Ah! Let's add in CC both Benjamin and Daniel then.
^ permalink raw reply [flat|nested] 17+ messages in thread
* [Bug libstdc++/54025] atomic<chrono::duration> won't compile: chrono::duration::duration() is not C++11 compliant
2012-07-19 2:55 [Bug libstdc++/54025] New: atomic<chrono::duration> won't compile: chrono::duration::duration() is not C++11 compliant chip at pobox dot com
` (11 preceding siblings ...)
2012-07-19 12:48 ` paolo.carlini at oracle dot com
@ 2012-07-19 15:18 ` daniel.kruegler at googlemail dot com
2012-07-19 15:26 ` paolo.carlini at oracle dot com
` (2 subsequent siblings)
15 siblings, 0 replies; 17+ messages in thread
From: daniel.kruegler at googlemail dot com @ 2012-07-19 15:18 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54025
--- Comment #13 from Daniel Krügler <daniel.kruegler at googlemail dot com> 2012-07-19 15:18:16 UTC ---
(In reply to comment #12)
> Ah! Let's add in CC both Benjamin and Daniel then.
I more and more tend to change my mind: I recommend to ignore the
recommendation of N3303 and to make duration conforming with the current
library spec. The described use-case here makes very much sense to me and
demonstrates to me that N3303 did overreact here. But I would be happy to hear
Benjamin's position as well.
^ permalink raw reply [flat|nested] 17+ messages in thread
* [Bug libstdc++/54025] atomic<chrono::duration> won't compile: chrono::duration::duration() is not C++11 compliant
2012-07-19 2:55 [Bug libstdc++/54025] New: atomic<chrono::duration> won't compile: chrono::duration::duration() is not C++11 compliant chip at pobox dot com
` (12 preceding siblings ...)
2012-07-19 15:18 ` daniel.kruegler at googlemail dot com
@ 2012-07-19 15:26 ` paolo.carlini at oracle dot com
2012-07-20 9:49 ` paolo at gcc dot gnu.org
2012-07-20 9:51 ` paolo.carlini at oracle dot com
15 siblings, 0 replies; 17+ messages in thread
From: paolo.carlini at oracle dot com @ 2012-07-19 15:26 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54025
Paolo Carlini <paolo.carlini at oracle dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |ASSIGNED
AssignedTo|unassigned at gcc dot |paolo.carlini at oracle dot
|gnu.org |com
Target Milestone|--- |4.8.0
--- Comment #14 from Paolo Carlini <paolo.carlini at oracle dot com> 2012-07-19 15:25:39 UTC ---
Thanks Daniel. Therefore let's wait a bit in case Benjamin disagrees, otherwise
I'll take care of applying patchlet + testcase + tweak to the existing
constexpr testcase,
^ permalink raw reply [flat|nested] 17+ messages in thread
* [Bug libstdc++/54025] atomic<chrono::duration> won't compile: chrono::duration::duration() is not C++11 compliant
2012-07-19 2:55 [Bug libstdc++/54025] New: atomic<chrono::duration> won't compile: chrono::duration::duration() is not C++11 compliant chip at pobox dot com
` (13 preceding siblings ...)
2012-07-19 15:26 ` paolo.carlini at oracle dot com
@ 2012-07-20 9:49 ` paolo at gcc dot gnu.org
2012-07-20 9:51 ` paolo.carlini at oracle dot com
15 siblings, 0 replies; 17+ messages in thread
From: paolo at gcc dot gnu.org @ 2012-07-20 9:49 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54025
--- Comment #15 from paolo at gcc dot gnu.org <paolo at gcc dot gnu.org> 2012-07-20 09:49:02 UTC ---
Author: paolo
Date: Fri Jul 20 09:48:57 2012
New Revision: 189711
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=189711
Log:
2012-07-20 Chip Salzenberg <chip@pobox.com>
Jonathan Wakely <jwakely.gcc@gmail.com>
PR libstdc++/54025
* include/std/chrono (duration<>::duration): Fix per C++11.
* testsuite/20_util/duration/cons/54025.cc: New.
* testsuite/20_util/duration/cons/constexpr.cc: Adjust.
Added:
trunk/libstdc++-v3/testsuite/20_util/duration/cons/54025.cc
Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/std/chrono
trunk/libstdc++-v3/testsuite/20_util/duration/cons/constexpr.cc
^ permalink raw reply [flat|nested] 17+ messages in thread
* [Bug libstdc++/54025] atomic<chrono::duration> won't compile: chrono::duration::duration() is not C++11 compliant
2012-07-19 2:55 [Bug libstdc++/54025] New: atomic<chrono::duration> won't compile: chrono::duration::duration() is not C++11 compliant chip at pobox dot com
` (14 preceding siblings ...)
2012-07-20 9:49 ` paolo at gcc dot gnu.org
@ 2012-07-20 9:51 ` paolo.carlini at oracle dot com
15 siblings, 0 replies; 17+ messages in thread
From: paolo.carlini at oracle dot com @ 2012-07-20 9:51 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54025
Paolo Carlini <paolo.carlini at oracle dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |RESOLVED
Version|4.7.1 |4.8.0
Resolution| |FIXED
AssignedTo|paolo.carlini at oracle dot |unassigned at gcc dot
|com |gnu.org
--- Comment #16 from Paolo Carlini <paolo.carlini at oracle dot com> 2012-07-20 09:51:39 UTC ---
Done.
^ permalink raw reply [flat|nested] 17+ messages in thread