← Back to index
|
Original Bugzilla link
Bug 24554 – Clarrification for bad codegen on postfix operators
Status
NEW
Severity
normal
Priority
P1
Component
dlang.org
Product
D
Version
D2
Platform
All
OS
All
Creation time
2024-05-17T14:59:01Z
Last change time
2024-12-15T15:28:18Z
Assigned to
No Owner
Creator
Richard (Rikki) Andrew Cattermole
Moved to GitHub: dlang.org#4141 →
Comments
Comment #0
by alphaglosined — 2024-05-17T14:59:01Z
Johan Engelen asked me on the ldc bug ticket to create a ticket to find out what the specification means. All three compilers have differing behavior. DMD:
https://github.com/ldc-developers/ldc/issues/4651
GDC:
https://forum.dlang.org/post/
[email protected]
ldc fe 2.107 as per run.dlang.org ```d void main() { int d = 42; bool o = d > d++; } ``` ``` define i32 @_Dmain({ i64, ptr } %unnamed) #0 { %d = alloca i32, align 4 ; [#uses = 4, size/byte = 4] %o = alloca i8, align 1 ; [#uses = 1, size/byte = 1] store i32 42, ptr %d, align 4 %1 = load i32, ptr %d, align 4 ; [#uses = 2] %2 = add i32 %1, 1 ; [#uses = 1] store i32 %2, ptr %d, align 4 %3 = load i32, ptr %d, align 4 ; [#uses = 1] %4 = icmp sgt i32 %3, %1 ; [#uses = 1] %5 = zext i1 %4 to i8 ; [#uses = 1] store i8 %5, ptr %o, align 1 ret i32 0 } ``` Note; the icmp is after the add, which it shouldn't be. Source:
https://twitter.com/marcos_don/status/1787629240550150361
Comment #1
by robert.schadek — 2024-12-15T15:28:18Z
THIS ISSUE HAS BEEN MOVED TO GITHUB
https://github.com/dlang/dlang.org/issues/4141
DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB