Thread overview | ||||||
---|---|---|---|---|---|---|
|
December 09, 2004 if(0) / goto / return | ||||
---|---|---|---|---|
| ||||
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 goto_09.d # int main(){ # if(0){ # label: # return 0; # }else{ # goto label; # } # assert(0); # } > function main function expected to return a value of type int test cases: http://svn.kuehne.cn/dstress/run/goto_08.d http://svn.kuehne.cn/dstress/run/goto_09.d Thomas -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.9.13 (GNU/Linux) iD8DBQFBt/an3w+/yD4P9tIRAu0SAJ91qG6O+c6FVWyEXEEQpRf2oce4LgCghAuA 1TxdeyrCvMRSPuigMfCnbeo= =ANlH -----END PGP SIGNATURE----- |
December 09, 2004 Re: if(0) / goto / return | ||||
---|---|---|---|---|
| ||||
Posted in reply to Thomas Kuehne | On Thu, 9 Dec 2004 07:54:32 +0100, Thomas Kuehne <thomas-dloop@kuehne.thisisspam.cn> wrote: > > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > goto_09.d > # int main(){ > # if(0){ > # label: > # return 0; > # }else{ > # goto label; > # } > # assert(0); > # } > >> function main function expected to return a value of type int > > test cases: > http://svn.kuehne.cn/dstress/run/goto_08.d > http://svn.kuehne.cn/dstress/run/goto_09.d > > Thomas > > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.9.13 (GNU/Linux) > > iD8DBQFBt/an3w+/yD4P9tIRAu0SAJ91qG6O+c6FVWyEXEEQpRf2oce4LgCghAuA > 1TxdeyrCvMRSPuigMfCnbeo= > =ANlH > -----END PGP SIGNATURE----- Im not sure this counts as a bug... putting a return somewhere around that assert should workaround it if you manage to find a case where this matters. (Cases like this where the compiler is expected to reduce the code for you would only introduce bugs, IMHO, something dmd has WELL underhand (;) Walter)) -- "Unhappy Microsoft customers have a funny way of becoming Linux, Salesforce.com and Oracle customers." - www.microsoft-watch.com: "The Year in Review: Microsoft Opens Up" -- "I plan on at least one critical patch every month, and I haven't been disappointed." - Adam Hansen, manager of security at Sonnenschein Nath & Rosenthal LLP (Quote from http://www.eweek.com/article2/0,1759,1736104,00.asp) -- "It's been a challenge to "reteach or retrain" Web users to pay for content, said Pizey" -Wired website: "The Incredible Shrinking Comic" |
December 09, 2004 Re: if(0) / goto / return | ||||
---|---|---|---|---|
| ||||
Posted in reply to Simon Buchan | -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Simon Buchan schrieb am Fri, 10 Dec 2004 03:14:55 +1300: > On Thu, 9 Dec 2004 07:54:32 +0100, Thomas Kuehne ><thomas-dloop@kuehne.thisisspam.cn> wrote: > >> goto_09.d >> # int main(){ >> # if(0){ >> # label: >> # return 0; >> # }else{ >> # goto label; >> # } >> # assert(0); >> # } >> >>> function main function expected to return a value of type int >> >> test cases: >> http://svn.kuehne.cn/dstress/run/goto_08.d >> http://svn.kuehne.cn/dstress/run/goto_09.d >> > > Im not sure this counts as a bug... putting a return somewhere around that assert should workaround it if you manage to find a case where this matters. (Cases like this where the compiler is expected to reduce the code for you would only introduce bugs, IMHO, something dmd has WELL underhand (;) Walter)) Actually it seems to be exactly a bug where the compiler _did_ reduce the code. Compare with the goto_08 test - it's the same, only that the if condition isn't static. goto_08 compiles and executes without a glitch. Thomas -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.9.13 (GNU/Linux) iD8DBQFBuF+V3w+/yD4P9tIRAoj+AJ9Ja2eS+fjBkxa0ev9q3k/SjK4JRQCgqA+1 5/CZDQiQ2DHYZzucR+jOHtg= =GUQX -----END PGP SIGNATURE----- |
December 14, 2004 Re: if(0) / goto / return | ||||
---|---|---|---|---|
| ||||
Posted in reply to Thomas Kuehne | -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 > Simon Buchan schrieb am Fri, 10 Dec 2004 03:14:55 +1300: >> On Thu, 9 Dec 2004 07:54:32 +0100, Thomas Kuehne >><thomas-dloop@kuehne.thisisspam.cn> wrote: >> >>> goto_09.d >>> # int main(){ >>> # if(0){ >>> # label: >>> # return 0; >>> # }else{ >>> # goto label; >>> # } >>> # assert(0); >>> # } >>> >>>> function main function expected to return a value of type int >>> >>> test cases: >>> http://svn.kuehne.cn/dstress/run/goto_08.d >>> http://svn.kuehne.cn/dstress/run/goto_09.d >>> >> >> Im not sure this counts as a bug... putting a return somewhere around that assert should workaround it if you manage to find a case where this matters. (Cases like this where the compiler is expected to reduce the code for you would only introduce bugs, IMHO, something dmd has WELL underhand (;) Walter)) > > Actually it seems to be exactly a bug where the compiler _did_ reduce the code. The culprit is statement.c -> *IfStatement::semantic. Either the short-circuit evaluation has to be disable (that's what I am currently doing) or the short-circuit evaluation has to look for labels referenced from outside. Thomas -----BEGIN PGP SIGNATURE----- iD8DBQFBvrkD3w+/yD4P9tIRApYNAKC0cYktRoxZ8SyG2T9cg1HS9nHpvACgoXod 9kVZKNqsZ7YWuL1PU1O1Low= =ufPR -----END PGP SIGNATURE----- |
Copyright © 1999-2021 by the D Language Foundation