[Bug c++/91705] [9/10 Regression] operator++ broken in constexpr floating point code

2019-09-10 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91705 --- Comment #9 from Marek Polacek --- Author: mpolacek Date: Tue Sep 10 21:04:33 2019 New Revision: 275613 URL: https://gcc.gnu.org/viewcvs?rev=275613&root=gcc&view=rev Log: PR c++/91705 - constexpr evaluation rejects ++/-- on floats.

[Bug c++/91705] [9/10 Regression] operator++ broken in constexpr floating point code

2019-09-10 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91705 --- Comment #8 from Jakub Jelinek --- Ah, you're right. Perhaps it could be done by doing the constexpr evaluation only if not CONSTANT_CLASS_P (offset) or similar, TREE_CONSTANT is probably not good enough as that is likely set already on the u

[Bug c++/91705] [9/10 Regression] operator++ broken in constexpr floating point code

2019-09-10 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91705 --- Comment #7 from Marek Polacek --- Stuff like (int *) 4 is invalid in constexpr, but that's what OFFSET can be. Comes from 6442 inc = cp_convert (argtype, inc, complain); in cp_build_unary_op. E.g., int array[4]; constexpr int *fo

[Bug c++/91705] [9/10 Regression] operator++ broken in constexpr floating point code

2019-09-10 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91705 Jakub Jelinek changed: What|Removed |Added CC||jakub at gcc dot gnu.org --- Comment #6

[Bug c++/91705] [9/10 Regression] operator++ broken in constexpr floating point code

2019-09-09 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91705 Marek Polacek changed: What|Removed |Added Status|NEW |ASSIGNED Assignee|unassigned a

[Bug c++/91705] [9/10 Regression] operator++ broken in constexpr floating point code

2019-09-09 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91705 --- Comment #5 from Marek Polacek --- But using fold_simple instead does seem to work, so I'll go with that.

[Bug c++/91705] [9/10 Regression] operator++ broken in constexpr floating point code

2019-09-09 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91705 --- Comment #4 from Marek Polacek --- Nevermind, that doesn't work.

[Bug c++/91705] [9/10 Regression] operator++ broken in constexpr floating point code

2019-09-09 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91705 --- Comment #3 from Marek Polacek --- Candidate fix: --- a/gcc/cp/constexpr.c +++ b/gcc/cp/constexpr.c @@ -4162,7 +4162,6 @@ cxx_eval_increment_expression (const constexpr_ctx *ctx, tree t, tree type = TREE_TYPE (t); tree op = TREE_OPERAND

[Bug c++/91705] [9/10 Regression] operator++ broken in constexpr floating point code

2019-09-09 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91705 Marek Polacek changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed|