[Bug c++/70744] New: preincrements possibly double-evaluated in GNU ternaries
donald.chai at synopsys dot com
gcc-bugzilla@gcc.gnu.org
Wed Apr 20 22:29:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70744
Bug ID: 70744
Summary: preincrements possibly double-evaluated in GNU
ternaries
Product: gcc
Version: 5.2.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: donald.chai at synopsys dot com
Target Milestone: ---
GCC, in C++ mode, appears to evaluate pre-increments twice in GNU ternaries:
$ gcc-5 --version
gcc-5 (Ubuntu 5.2.1-23ubuntu1~12.04) 5.2.1 20151031
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ cat test.c
int main() {
int x = 1;
++x ?: 1337;
return x;
}
$ gcc-5 -x c test.c; ./a.out; echo $?
2
$ gcc-5 -x c++ test.c; ./a.out; echo $?
3
Clang appears to work:
$ clang --version
Ubuntu clang version 3.4-1ubuntu3~precise2 (tags/RELEASE_34/final) (based on
LLVM 3.4)
Target: x86_64-pc-linux-gnu
Thread model: posix
$ clang -x c++ test.c; ./a.out; echo $?
test.c:3:5: warning: expression result unused [-Wunused-value]
++x ?: 1337;
^~~~~~~~~~~
1 warning generated.
2
More information about the Gcc-bugs
mailing list