https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85557
Bug ID: 85557 Summary: Incorrect calculation of function arguments with C++17 sequencing rules Product: gcc Version: 9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: ixsci at yandex dot ru Target Milestone: --- Given the following simple code: #include <iostream> using namespace std; int foo(int first, int second) { return first << second; } int main() { int i = 0; cout << "Result: " << foo(i = 1, i = 2) << "\n"; }; The latest GCC (9.0 tested on Wandbox) with -std=c++17 produces the following output: "Result: 2" but it should produce "Result: 4" because function parameters calculations are indeterminately sequenced between each other.