digitalmars.D.bugs - [Issue 20376] New: disable this(ref return scope Foo rhs) enables
- d-bugmail puremagic.com (40/40) Nov 09 2019 https://issues.dlang.org/show_bug.cgi?id=20376
https://issues.dlang.org/show_bug.cgi?id=20376 Issue ID: 20376 Summary: disable this(ref return scope Foo rhs) enables broken binaries (out-of-bounds access) Product: D Version: D2 Hardware: x86_64 OS: Linux Status: NEW Severity: regression Priority: P1 Component: dmd Assignee: nobody puremagic.com Reporter: asumface gmail.com Consider this example: struct Foo { disable this(ref return scope Foo rhs); } uint[2000] fun() safe { return Foo(); } void main() safe { import std; writeln(fun); } This will compile and print garbage data, (although a segfault is probably possible as well), despite there being an obvious type mismatch. If the function signature is changed to a non-array type, e. g. float fun() safe LDC will raise: Invalid bitcast %4 = bitcast %onlineapp.Foo* %1 to float, !dbg !1241 in function _D9onlineapp3funFNfZf LLVM ERROR: Broken function found, compilation aborted! DMD will not complain and complete the compilation as before. run.dlang.org suggests that this happens since release 2.086. --
Nov 09 2019