Post Reply 
Undoc'd Feature?
07-31-2022, 02:12 AM
Post: #41
RE: Undoc'd Feature?
(07-17-2022 01:05 PM)Wes Loewer Wrote:  
It does not seem to be an optimization issue. Even without optimizations turned on, the compiler gives the same results.

Here’s a simple, intentionally undefined example that indicates what each compiler is probably doing.

Code:
a = 5;
a = 1000*a++ + 100*a++ + 10*a++;  // undefined expression.
Note: Since this is undefined, there is no guarantee that the results are indicative of the results a compiler would produce in a defined case, but it does suggest what a compiler might be doing. That said, here are some results:

gcc/clang/intel all print 5670
ms prints 5553

As an additional data point, I thought I’d try an Intel compiler (ICC 2021.5.0, optimizations on) on the following function:
Code:
int Wes2(int a)
{
a = 5;
a = 1000 * a++ + 100 * a++ + 10 * a++;
return a;
}

I got the following as output:
Code:
Wes2(int):
        mov       eax, 5553
        ret

I thought I’d also try the following, slightly different, function:
Code:
int Wes3(int &a)
{
a = 5;
a = 1000 * a++ + 100 * a++ + 10 * a++;
return a;
}

This slightly different function has the compiler producing the following, noticably distinct, output:
Code:
Wes3(int&):
        mov       eax, 6
        mov       DWORD PTR [rdi], 6
        ret

(Without optimization, for this last function, the compiler is producing code that increments three distinct temporaries by one and then assigning, as a final value for “a”, one of those three incremented-once temporaries, post increment.)

When one goes rooting around with undefined behaviour, one can certainly feel the hidden contours of the magic machinery behind the scenes. That said, after seeing the above, I tried a few other similar functions and there does seem to be some issues with the Intel compiler’s handling of assignment operations post-C++17. (Even with a command-line option given to specify the version of C++ wanted.)
Find all posts by this user
Quote this message in a reply
Post Reply 


Messages In This Thread
Undoc'd Feature? - toml_12953 - 07-03-2022, 03:42 AM
RE: Undoc'd Feature? - Wes Loewer - 07-03-2022, 09:14 AM
RE: Undoc'd Feature? - toml_12953 - 07-03-2022, 09:38 AM
RE: Undoc'd Feature? - Wes Loewer - 07-03-2022, 01:16 PM
RE: Undoc'd Feature? - Wes Loewer - 07-03-2022, 01:49 PM
RE: Undoc'd Feature? - toml_12953 - 07-03-2022, 02:18 PM
RE: Undoc'd Feature? - Wes Loewer - 07-03-2022, 06:24 PM
RE: Undoc'd Feature? - Albert Chan - 07-03-2022, 07:09 PM
RE: Undoc'd Feature? - toml_12953 - 07-04-2022, 01:49 AM
RE: Undoc'd Feature? - toml_12953 - 07-04-2022, 09:41 AM
RE: Undoc'd Feature? - Wes Loewer - 07-04-2022, 03:40 PM
RE: Undoc'd Feature? - xerxes - 08-03-2022, 08:17 PM
RE: Undoc'd Feature? - parisse - 07-03-2022, 11:02 AM
RE: Undoc'd Feature? - Wes Loewer - 07-03-2022, 01:03 PM
RE: Undoc'd Feature? - parisse - 07-03-2022, 06:31 PM
RE: Undoc'd Feature? - Wes Loewer - 07-03-2022, 07:34 PM
RE: Undoc'd Feature? - jte - 07-08-2022, 03:15 AM
RE: Undoc'd Feature? - Wes Loewer - 07-08-2022, 05:00 AM
RE: Undoc'd Feature? - jte - 07-08-2022, 08:32 PM
RE: Undoc'd Feature? - Wes Loewer - 07-09-2022, 05:15 AM
RE: Undoc'd Feature? - RPNerd - 07-09-2022, 12:20 PM
RE: Undoc'd Feature? - Albert Chan - 07-09-2022, 05:10 PM
RE: Undoc'd Feature? - Wes Loewer - 07-10-2022, 05:22 AM
RE: Undoc'd Feature? - toml_12953 - 07-10-2022, 10:22 AM
RE: Undoc'd Feature? - RPNerd - 07-10-2022, 12:48 PM
RE: Undoc'd Feature? - Wes Loewer - 07-17-2022, 01:05 PM
RE: Undoc'd Feature? - jte - 07-31-2022 02:12 AM
RE: Undoc'd Feature? - Wes Loewer - 07-31-2022, 06:43 PM
RE: Undoc'd Feature? - toml_12953 - 07-31-2022, 07:25 PM
RE: Undoc'd Feature? - Wes Loewer - 08-01-2022, 03:48 AM
RE: Undoc'd Feature? - ijabbott - 07-14-2022, 05:22 PM
RE: Undoc'd Feature? - toml_12953 - 07-10-2022, 05:36 PM
RE: Undoc'd Feature? - Albert Chan - 07-10-2022, 05:57 PM
RE: Undoc'd Feature? - Wes Loewer - 07-10-2022, 07:38 PM
RE: Undoc'd Feature? - ijabbott - 07-11-2022, 07:49 PM
RE: Undoc'd Feature? - RPNerd - 07-12-2022, 11:03 AM
RE: Undoc'd Feature? - ijabbott - 07-13-2022, 09:34 PM
RE: Undoc'd Feature? - Wes Loewer - 07-12-2022, 01:49 PM
RE: Undoc'd Feature? - ijabbott - 07-13-2022, 10:12 PM
RE: Undoc'd Feature? - toml_12953 - 07-13-2022, 10:50 PM
RE: Undoc'd Feature? - jte - 07-31-2022, 01:29 AM
RE: Undoc'd Feature? - Wes Loewer - 07-31-2022, 10:13 AM
RE: Undoc'd Feature? - OlidaBel - 07-04-2022, 09:11 AM
RE: Undoc'd Feature? - toml_12953 - 07-04-2022, 09:36 AM
RE: Undoc'd Feature? - ctrclckws - 07-13-2022, 12:44 PM
RE: Undoc'd Feature? - Wes Loewer - 07-13-2022, 08:01 PM



User(s) browsing this thread: 1 Guest(s)