long fun(long a,long b,long c){ return a<b?a<c?a:b<c?b:c:b; } long baz(long a, long b){ bool s=(a<0)!=(b<0); a = a>0?a:-a; return s ? a : a; } struct R{ ulong bar, qux; bool c; R foo(){ if(!c){ long a = baz(bar, 0), b = baz(bar, 0), c = baz(bar, 0); return R(fun(a,b,c), fun(a,b,c)); } return R(); } } void main(){auto x=R().foo();} when compiled with dmd -O -release -inline (64bit), the program fails with a segfault during runtime on my machine. Removing any of the flags makes it run through.
https://github.com/D-Programming-Language/dmd/pull/528
https://github.com/D-Programming-Language/dmd/commit/dc31bfc4bbc108e386dd0c38312dbf3fb740d9fa https://github.com/D-Programming-Language/dmd/commit/3d84dede8f0da57aecdeea772eb3027c673a29e7
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル