[Bug c++/114663] Several contracts test cases fail with -fsanitize=undefined -fsanitize-trap

2024-07-08 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114663

Ville Voutilainen  changed:

   What|Removed |Added

 CC||ville.voutilainen at gmail dot 
com

--- Comment #3 from Ville Voutilainen  ---
(4) We can have multiple failing contracts in one test, as long as
- the continuation mode is on
- all such contracts are evaluated, I mean checked.

In other words, no mixing of would-fail (axiom) contracts with ones that we
want to
test to fail.

So, the tests are bad. contract10.C has a failing axiom contract in it, but it
also tries to test checked contracts for failing. That won't work. The axiom
contract's assumption nukes the whole test.

We should test failing checked contracts by looking at the output of the run,
and
separately from that, test failing unchecked contracts by looking at the tree
output
of the compilation. And not mix the two, unless we do all testing by looking at
the
tree output. But we should never have failing unchecked contracts in tests
where
we also want to runtime-verify contract failures.

I do expect to eventually resurrect axiom contracts in a non-assumed form, and
when we do that, there should be a possibility to runtime-check them with
code that is entirely compiler-instrumented/generated. But that work is some
ways off, and in the meantime we should remove the UB from runtime tests that
attempt to runtime-test for contract failures.

[Bug c++/115601] ICE when compiling a function marked noipa/noinline called in a contract predicate

2024-06-23 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115601

--- Comment #2 from Ville Voutilainen  ---
Created attachment 58499
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=58499=edit
Preprocessed source

[Bug c++/115601] New: ICE when compiling a function marked noipa/noinline called in a contract predicate

2024-06-23 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115601

Bug ID: 115601
   Summary: ICE when compiling a function marked noipa/noinline
called in a contract predicate
   Product: gcc
   Version: 15.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: ville.voutilainen at gmail dot com
  Target Milestone: ---

[Bug middle-end/112312] New: GCC fails to optimize a C++ algorithm with a function passed in as well as with a lambda

2023-10-31 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112312

Bug ID: 112312
   Summary: GCC fails to optimize a C++ algorithm with a function
passed in as well as with a lambda
   Product: gcc
   Version: 14.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: middle-end
  Assignee: unassigned at gcc dot gnu.org
  Reporter: ville.voutilainen at gmail dot com
  Target Milestone: ---

See 
https://godbolt.org/z/s8dWGzb9r

When passing a (pointer to) function as a predicate argument for a C++ stdlib
algorithm, various people hope that it optimizes as well as passing a lambda
that does exactly the same thing. And with clang, it does. With gcc, the
generated
code is much worse for the function case, even though the function definition
is nearby and visible.

The test code used on godbolt pasted for convenience:

#include 
#include 
#include 

static bool pred1(const std::string& a, const std::string& b)
{
return false;
}

auto pred2 = [](const std::string& a, const std::string& b)
{
return false;
};

bool func1(const std::vector& vec, const std::string& needle)
{
return std::ranges::lower_bound(vec, needle, pred1) != vec.end();
}

bool func2(const std::vector& vec, const std::string& needle)
{
return std::ranges::lower_bound(vec, needle, pred2) != vec.end();
}

[Bug c++/110851] New: [contracts] Inheriting multiple base functions with clashing contracts is not diagnosed

2023-07-30 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110851

Bug ID: 110851
   Summary: [contracts] Inheriting multiple base functions with
clashing contracts is not diagnosed
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: ville.voutilainen at gmail dot com
  Target Milestone: ---

See https://wandbox.org/permlink/SICxkVAe2gVql3Ae

tl;dr:

struct Base1  {
  virtual void g(int x) [[ pre : x > 0 ]] {}
};
struct Base2  {
  virtual void g(int x) [[ pre : x <= 0 ]] {}
};

struct Derived : public Base1, public Base2 {
  virtual void g(int x) override {}
};

int main()
{
Derived d1;
Base1& b1 = d1;
Base2& b2 = d1;
b1.g(42);
//b2.g(-42);
}

The various online compilers accept and run the code. On my machine, I get an
assembler diagnostic:
/tmp/ccYlVuY9.s: Assembler messages:
/tmp/ccYlVuY9.s:53: Error: symbol `_ZN7Derived1gEi' is already defined

which is saying that Derived::g(int)
is already defined.

The declaration of Derived::g() ought to be ill-formed, because the base
functions do not have the same list of contracts.

[Bug c++/108099] [12/13 Regression] ICE with type alias with `signed __int128_t`

2022-12-21 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108099

Ville Voutilainen  changed:

   What|Removed |Added

 CC||ville.voutilainen at gmail dot 
com

--- Comment #11 from Ville Voutilainen  ---
More cases that ICE:

template  using AT = int;
using AA = AT;

template  struct AT{};
using AA = AT;

template  struct AT{};
AT x;

[Bug libstdc++/107525] propagate_const should not be using SFINAE on its conversion operators

2022-11-04 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107525

Ville Voutilainen  changed:

   What|Removed |Added

 CC||ville.voutilainen at gmail dot 
com

--- Comment #8 from Ville Voutilainen  ---
(In reply to Jonathan Wakely from comment #7)
> Ping Ville: please take a look

Looks fine to me.

[Bug c++/85889] lambda expression can capture structured bindings

2022-11-01 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85889

--- Comment #5 from Ville Voutilainen  ---
And the papers that changed this are
https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1091r3.html and
https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1381r1.html

[Bug c++/85889] lambda expression can capture structured bindings

2022-11-01 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85889

Ville Voutilainen  changed:

   What|Removed |Added

 Status|SUSPENDED   |ASSIGNED

--- Comment #4 from Ville Voutilainen  ---
Clang and MSVC now accept the code in their C++20 modes. Close as invalid? Or
does someone want to fix this for the C++17 and below modes only?

I don't suppose we ever decided in the committee to make this a DR.

[expr.prim.lambda.capture]/4 says:
"The identifier in a simple-capture shall denote a local entity (6.5.3, 6.1)."
6.1 specifies structured bindings to be local entities, so capturing them is
now supported.

[Bug c++/107049] error: ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::operator __sv_type() const [with _CharT = char; _Traits = std::char_traits; _Alloc = std::allocator; __sv_type

2022-09-27 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107049

Ville Voutilainen  changed:

   What|Removed |Added

 CC||ville.voutilainen at gmail dot 
com

--- Comment #9 from Ville Voutilainen  ---
Just a historical anecdote of something eerily similar in so many ways,
including Jonathan's reduction and its steps :) :
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94197

[Bug c++/106567] [13 Regression] An array with a dependent type and initializer-deduced bound is treated as an array of unknown bound when captured in a lambda

2022-09-13 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106567

--- Comment #7 from Ville Voutilainen  ---
Since this is a 13 regression, we can close this, right? There's no backports
needed.

[Bug c++/106423] -Wc++20-compat diagnostics not suppressed by #pragma GCC diagnostic ignored

2022-08-17 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106423

--- Comment #4 from Ville Voutilainen  ---
(In reply to Tom Honermann from comment #3)
> I believe this issue can be resolved as fixed via commit
> 60468d6cd46a3bd3afe8ff856f82afcd4c65a217 for the gcc 13 release.

Yes, it's normal procedure that the bz will be closed as fixed once the patches
have been merged, it's just a separate step.

[Bug c++/106423] -Wc++20-compat diagnostics not suppressed by #pragma GCC diagnostic ignored

2022-08-09 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106423

Ville Voutilainen  changed:

   What|Removed |Added

 CC||ville.voutilainen at gmail dot 
com
   Last reconfirmed||2022-08-09
 Ever confirmed|0   |1
 Status|UNCONFIRMED |NEW

[Bug c++/106567] [13 regression] An array with a dependent type and initializer-deduced bound is treated as an array of unknown bound when captured in a lambda

2022-08-08 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106567

--- Comment #1 from Ville Voutilainen  ---
Repro without std::vector:

template 
void urgh()
{
const V x[] = {V(0), V(1), V(2), V(0)};

[&]() {
for (auto& v : x) {}
}();
}

void no_urgh()
{
using V = int;

const V x[] = {V(0), V(1), V(2), V(0)};

[&]() {
for (auto& v : x) {}
}();
}

int main()
{
no_urgh();
urgh();
}

[Bug c++/106567] New: An array with a dependent type and initializer-deduced bound is treated as an array of unknown bound when captured in a lambda

2022-08-08 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106567

Bug ID: 106567
   Summary: An array with a dependent type and initializer-deduced
bound is treated as an array of unknown bound when
captured in a lambda
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: ville.voutilainen at gmail dot com
  Target Milestone: ---

Test:

#include 

template 
void urgh()
{
using V = typename T::value_type;

const V x[] = {V(0), V(1), V(2), V(0)};

[&]() {
for (auto& v : x) {}
}();
}

void no_urgh()
{
using V = int;

const V x[] = {V(0), V(1), V(2), V(0)};

[&]() {
for (auto& v : x) {}
}();
}

int main()
{
no_urgh();
urgh>();
}

Live demo at https://wandbox.org/permlink/9hSQdxhNzgDCuXYZ

prog.cc: In instantiation of 'void urgh() [with T = std::vector]':
prog.cc:29:27:   required from here
prog.cc:11:9: error: range-based 'for' expression of type 'const int []' has
incomplete type
   11 | for (auto& v : x) {}
  | ^~~

[Bug libstdc++/105926] Using a spaceship operator on an optional of a type derived from optional causes infinite constraint recursion

2022-06-11 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105926

Ville Voutilainen  changed:

   What|Removed |Added

   Assignee|unassigned at gcc dot gnu.org  |ville.voutilainen at 
gmail dot com

--- Comment #1 from Ville Voutilainen  ---
I have a patch for it, and this likely needs a LWG issue and probably a LEWG
ack. I'll submit the latter soon-ish, and will post the patch for review, too.

[Bug libstdc++/105926] New: Using a spaceship operator on an optional of a type derived from optional causes infinite constraint recursion

2022-06-11 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105926

Bug ID: 105926
   Summary: Using a spaceship operator on an optional of a type
derived from optional causes infinite constraint
recursion
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libstdc++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: ville.voutilainen at gmail dot com
  Target Milestone: ---

Testcase:

#include 

struct oink : std::optional {
};

bool operator<(const oink&, const oink) {return false;}
bool operator>(const oink&, const oink) {return true;}
bool operator<=(const oink&, const oink) {return false;}
bool operator>=(const oink&, const oink) {return true;}
bool operator==(const oink&, const oink) {return false;}
bool operator!=(const oink&, const oink) {return true;}

int main()
{
oink a;
std::optional b;
b <=> a;
}

Ends up, eventually, with..

error: satisfaction of atomic constraint 'requires(const typename
std::remove_reference<_Tp>::type& __t, const typename
std::remove_reference<_Arg>::type& __u) {{__t < __u} -> decltype(auto)
[requires std::__detail::__boolean_testable<, >];{__t > __u} ->
decltype(auto) [requires std::__detail::__boolean_testable<,
>];{__t <= __u} -> decltype(auto) [requires
std::__detail::__boolean_testable<, >];{__t >= __u} ->
decltype(auto) [requires std::__detail::__boolean_testable<,
>];{__u < __t} -> decltype(auto) [requires
std::__detail::__boolean_testable<, >];{__u > __t} ->
decltype(auto) [requires std::__detail::__boolean_testable<,
>];{__u <= __t} -> decltype(auto) [requires
std::__detail::__boolean_testable<, >];{__u >= __t} ->
decltype(auto) [requires std::__detail::__boolean_testable<, >];}
[with _Up = oink; _Tp = oink]' depends on itself
  302 | = requires(const remove_reference_t<_Tp>& __t,
  |   ^~~~
  303 |const remove_reference_t<_Up>& __u) {
  |~
  304 |   { __t <  __u } -> __boolean_testable;
  |   ~
  305 |   { __t >  __u } -> __boolean_testable;
  |   ~
  306 |   { __t <= __u } -> __boolean_testable;
  |   ~
  307 |   { __t >= __u } -> __boolean_testable;
  |   ~
  308 |   { __u <  __t } -> __boolean_testable;
  |   ~
  309 |   { __u >  __t } -> __boolean_testable;
  |   ~
  310 |   { __u <= __t } -> __boolean_testable;
  |   ~
  311 |   { __u >= __t } -> __boolean_testable;
  |   ~
  312 | };

The relevant bit being "satisfaction of atomic constraint foo depends on
itself".

[Bug c++/82470] Structured bindings don't work with std::tuple if a type has a get member function

2021-08-31 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82470

--- Comment #7 from Ville Voutilainen  ---
We should close this, the fixes are in 11 and the related bugs have been closed
without backports. I'm happy to let JWakely do that closing, but I don't think
he'll disagree on it. :P

[Bug c++/82470] Structured bindings don't work with std::tuple if a type has a get member function

2021-08-30 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82470

--- Comment #6 from Ville Voutilainen  ---
I think this was fixed by the fix for
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71096

[Bug c++/62274] [C++11] Variadic templates expansion into non-variadic class template

2021-08-01 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62274

Ville Voutilainen  changed:

   What|Removed |Added

 CC||jason at redhat dot com

--- Comment #7 from Ville Voutilainen  ---
I think this may be subject to various Core discussions. Jason?

[Bug libstdc++/99277] C++2a synchronisation is inefficient in GCC 11

2021-02-26 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99277

Ville Voutilainen  changed:

   What|Removed |Added

 CC||ville.voutilainen at gmail dot 
com

--- Comment #5 from Ville Voutilainen  ---
Look people, this just *CAN'T* be a blocker for GCC11. That's a tail wagging a
dog; yeah sure there may be an ABI break in a C++20 concurrency facility, but
to have that block the GCC 11 release is just.. ..unfathomable. Just my 0.02 on
the blocker-ness of this.

[Bug c++/98646] New: A static_cast confuses -Wnonnull, causing false positives

2021-01-12 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98646

Bug ID: 98646
   Summary: A static_cast confuses -Wnonnull, causing false
positives
   Product: gcc
   Version: 11.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: ville.voutilainen at gmail dot com
  Target Milestone: ---

Created attachment 49957
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=49957=edit
Preprocessed source

Compile with

/usr/local/bin/c++ -DQT_ASCII_CAST_WARNINGS -DQT_BUILDING_QT
-DQT_BUILD_XCB_PLUGIN -DQT_BUILD_XCB_QPA_LIB_LIB -DQT_CORE_LIB
-DQT_DEPRECATED_WARNINGS -DQT_DEPRECATED_WARNINGS_SINCE=0x06
-DQT_DISABLE_DEPRECATED_BEFORE=0x05 -DQT_GUI_LIB -DQT_MOC_COMPAT
-DQT_NO_CAST_TO_ASCII -DQT_NO_EXCEPTIONS -DQT_NO_FOREACH -DQT_OPENGL_LIB
-DQT_USE_QSTRINGBUILDER -DXcbQpa_EXPORTS -D_LARGEFILE64_SOURCE
-D_LARGEFILE_SOURCE -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -Wall
-Wextra -fno-exceptions -fPIC -Werror -Wno-error=cpp
-Wno-error=deprecated-declarations -Wno-error=strict-overflow
-Wno-error=implicit-fallthrough -Wno-error=deprecated-copy
-Wno-error=redundant-move -Wno-error=init-list-lifetime
-Wno-error=format-overflow -Wsuggest-override -std=c++17 -c winid-nonnull.cpp

The result is
/home/vivoutil/kuutti/kuuttikutonen/qt5/qtbase/src/plugins/platforms/xcb/qxcbwindow.cpp:
In member function ‘void QXcbWindow::show()’:
/home/vivoutil/kuutti/kuuttikutonen/qt5/qtbase/src/plugins/platforms/xcb/qxcbwindow.cpp:685:91:
error: ‘this’ pointer null [-Werror=nonnull]
  685 | transientXcbParent = static_cast(tp->handle())->winId();
  |
  ^
In file included from
/home/vivoutil/kuutti/kuuttikutonen/qt5/qtbase/src/plugins/platforms/xcb/qxcbwindow.cpp:40:
/home/vivoutil/kuutti/kuuttikutonen/qt5/qtbase/src/plugins/platforms/xcb/qxcbwindow.h:87:9:
note: in a call to non-static member function ‘virtual WId QXcbWindow::winId()
const’
   87 | WId winId() const override;
  | ^

Removing the static_cast removes the warning.

[Bug c++/97284] internal compiler error: 'global_options' are modified in local context

2021-01-12 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97284

--- Comment #10 from Ville Voutilainen  ---
Right - that's the Qt bug I'm hoping to fix, but I don't get far because of the
ICE. :) The libstdc++ headers have been reorganized, so Qt's expectations that
numeric_limits is available without including  are no longer valid with
GCC 11.

[Bug c++/97284] internal compiler error: 'global_options' are modified in local context

2021-01-12 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97284

--- Comment #8 from Ville Voutilainen  ---
Also, you can just try the actual build, if you follow
https://wiki.qt.io/Building_Qt_6_from_Git

[Bug c++/97284] internal compiler error: 'global_options' are modified in local context

2021-01-12 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97284

--- Comment #7 from Ville Voutilainen  ---
(In reply to Martin Liška from comment #5)
> Still can't reproduce it.
> Please send me also output of --verbose.

Yeah, I fed that output to g++, and then it compiles just fine. But when it's
in the actual build with all the -MD -MT -MF flags, it doesn't. Those are, btw,
in case it's of any help,
-MD -MT qtbase/qmake/CMakeFiles/qmake.dir/__/src/corelib/global/qendian.cpp.o
-MF qtbase/qmake/CMakeFiles/qmake.dir/__/src/corelib/global/qendian.cpp.o.d -o
qtbase/qmake/CMakeFiles/qmake.dir/__/src/corelib/global/qendian.cpp.o

[Bug c++/97284] internal compiler error: 'global_options' are modified in local context

2021-01-12 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97284

--- Comment #6 from Ville Voutilainen  ---
Created attachment 49946
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=49946=edit
Output of --verbose

[Bug c++/97284] internal compiler error: 'global_options' are modified in local context

2021-01-12 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97284

--- Comment #4 from Ville Voutilainen  ---
Created attachment 49943
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=49943=edit
Output of gcc -E

[Bug c++/97284] internal compiler error: 'global_options' are modified in local context

2021-01-12 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97284

--- Comment #3 from Ville Voutilainen  ---
..or maybe I'm just too dumb to invoke g++ -E properly, and the rest of the
options confuse the compiler.

[Bug c++/97284] internal compiler error: 'global_options' are modified in local context

2021-01-11 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97284

Ville Voutilainen  changed:

   What|Removed |Added

 CC||ville.voutilainen at gmail dot 
com

--- Comment #2 from Ville Voutilainen  ---
(In reply to Martin Liška from comment #1)
> Please provide a pre-processed soure file (-E option).

The output of gcc -E for this build is empty, so sure looks like the crash
is in the preprocessor.

[Bug c++/98054] [11 Regression] ICE: in pp_cxx_trait_expression, at cp/cxx-pretty-print.c:2671 since r11-4386-g9e2256dcd481ffe3

2020-12-01 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98054

Ville Voutilainen  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #6 from Ville Voutilainen  ---
Fixed.

[Bug c++/98054] [11 Regression] ICE: in pp_cxx_trait_expression, at cp/cxx-pretty-print.c:2671 since r11-4386-g9e2256dcd481ffe3

2020-11-30 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98054

--- Comment #4 from Ville Voutilainen  ---
Patch at https://gcc.gnu.org/pipermail/gcc-patches/2020-November/560591.html

[Bug c++/98054] [11 Regression] ICE: in pp_cxx_trait_expression, at cp/cxx-pretty-print.c:2671 since r11-4386-g9e2256dcd481ffe3

2020-11-30 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98054

Ville Voutilainen  changed:

   What|Removed |Added

   Assignee|unassigned at gcc dot gnu.org  |ville.voutilainen at 
gmail dot com
 Status|NEW |ASSIGNED

--- Comment #3 from Ville Voutilainen  ---
Whoops, I need to add the handling of the new intrinsics into
pp_cxx_trait_expression. This should be quite straightforward, stay tuned...

[Bug libstdc++/96269] optional comparison with nullopt fails

2020-11-05 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96269

--- Comment #9 from Ville Voutilainen  ---
Ha, well spotted. In general, in a spaceship world, you do want to provide
comparisons symmetrically and const-correctly, and that also works in the
pre-spaceship world, thus:

#include 

struct X {
  template 
  bool operator==(const T&) const {
return false;
  }
  template  friend bool operator==(const T&, const X&) {return
false;}
};

bool foo() {
  std::optional x;
#ifndef FLIP
  return x == std::nullopt;
#else
  return std::nullopt == x;
#endif
}

[Bug libstdc++/96269] optional comparison with nullopt fails

2020-11-05 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96269

--- Comment #5 from Ville Voutilainen  ---
Oh, and if you define a spaceship operator for your type, then things work
again, with or without FLIP.

[Bug libstdc++/96269] optional comparison with nullopt fails

2020-11-05 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96269

Ville Voutilainen  changed:

   What|Removed |Added

 CC||ville.voutilainen at gmail dot 
com

--- Comment #4 from Ville Voutilainen  ---
Right; even gcc trunk is happy with that code in C++17 mode with both values of
FLIP, it's the C++20 spaceship rules that cause trouble here.

[Bug c++/97663] [c++17] Function with return type 'unsigned' in nested namespace misinterpreted as deduction guide

2020-11-01 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97663

Ville Voutilainen  changed:

   What|Removed |Added

 CC||jason at redhat dot com
 Status|UNCONFIRMED |NEW
 Ever confirmed|0   |1
   Last reconfirmed||2020-11-01

[Bug libstdc++/97449] [11 Regression] libstdc++ cannot be compiled with clang after 3427e31331677ca826c5588c87924214f7e5c54b

2020-10-17 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97449

Ville Voutilainen  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #4 from Ville Voutilainen  ---
Fixed.

[Bug libstdc++/97449] [11 Regression] libstdc++ cannot be compiled with clang after 3427e31331677ca826c5588c87924214f7e5c54b

2020-10-16 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97449

--- Comment #2 from Ville Voutilainen  ---
Patch available:
https://gcc.gnu.org/pipermail/gcc-patches/2020-October/556323.html

[Bug libstdc++/97449] [11 Regression] libstdc++ cannot be compiled with clang after 3427e31331677ca826c5588c87924214f7e5c54b

2020-10-15 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97449

Ville Voutilainen  changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
 CC||ville.voutilainen at gmail dot 
com
   Assignee|unassigned at gcc dot gnu.org  |ville.voutilainen at 
gmail dot com

--- Comment #1 from Ville Voutilainen  ---
Mine. I have a patch for it already, doing testing and submission chores...

[Bug libstdc++/95904] Improve the diagnostic for conflicting return types in std::visit

2020-10-09 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95904

Ville Voutilainen  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #2 from Ville Voutilainen  ---
There are aspirations to change the variant tables to a flat one, but that's a
separate enhancement. This particular problem is fixed.

[Bug libstdc++/94890] std::tuple({0}) fails to compile with -std=c++2a

2020-09-27 Thread ville.voutilainen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94890

Ville Voutilainen  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |INVALID

--- Comment #9 from Ville Voutilainen  ---
LEWG says NO: https://cplusplus.github.io/LWG/issue3440