From stuckey@mrcnext.cso.uiuc.edu Wed Oct 28 23:12:04 1992 Received: from calvin.sfasu.edu by umaxc.weeg.uiowa.edu (5.61.jnf/920629) on Wed, 28 Oct 92 23:12:00 -0600 id AA21533 with SMTP Received: from garcon.cso.uiuc.edu by calvin.sfasu.EDU with SMTP (5.59/25-eef) id AA02556; Wed, 28 Oct 92 23:02:30 CST Return-Path: Received: from mrcnext.cso.uiuc.edu by garcon.cso.uiuc.edu with SMTP id AA01327 (5.67a8+/IDA-1.5 for ); Wed, 28 Oct 1992 22:59:44 -0600 Received: by mrcnext.cso.uiuc.edu (NeXT-1.0 (From Sendmail 5.52)/NeXT-1.0) id AA12993; Wed, 28 Oct 92 22:58:00 CST Date: Wed, 28 Oct 92 22:58:00 CST From: stuckey@mrcnext.cso.uiuc.edu (Anthony J. Stuckey) Message-Id: <9210290458.AA12993@mrcnext.cso.uiuc.edu> To: hyperc-l@calvin.sfasu.edu Subject: jump2.c -- improved, with examples. Status: R Notes on Jump.c By Anthony J. Stuckey, 10-28-92. Version 1: 10-27-92: did only jump combination. Version 2: 10-28-92: added detection of no-op jumps Jump.c addresses one of the problem cases of HyperC's CP-code generation. It looks for cases where two consecutive instructions are jumps, and tries to combine them in such a way as to make one instruction out of them. This problem occurs at the end of some switch() statements, in for loops and some other places that use break, and potentially where goto's are used. No-op jumps are jumps that jump to the following instruction. >From what I know, they appear in only one place: switch statements that are badly terminated. This program is intended to be added to your "cc" script, just before either asmcp or mac. Example source is included, to show you where the problems this program catches are generated in C code. They are probably not an exhaustive test, just a couple examples I've run across. This program will run on any machine that will run HyperC. There's no charge for it, but comments are welcome at my address in the source. Packed with Binscii + Shrinkit. FiLeStArTfIlEsTaRt ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789() IJUMP2.SHK AsxoAAAACA(4PIAgAAAAAAAAAAAAAsxoAkDp GVvTlzW6DMHGAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAjCAAAAwGAAAAAAAA GVvT40C2BAAPAMAABAAAA8CAAAw4AQAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAwAAAAAGAAAAAAAAAAIAAAABAAAAAAAAAAAAgMACAAAAIAA AAAAl4HAvBAAAAwENVlSD5CUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAsLLAAsNAvEAEoBIVgKEAtpjmYgL4FJ6AhBxC4BI3Od4ApZjmRSJ9ML8A054G BQJ0hDTcpBBHJLCJjf2ADBBEYQLoMb48vlDyZgs6FY8UUFYQ5QK0NcSegYzGhSox NYwMjAJih68UnH5EmdTyEJJIjfKCvN6mhQp7MJ0ASgoHhi76MZY6vtoGhRI3rN38 kRrQpRZ5OaUEnhIn9JkRwcj2pMZnRzb6lfiOjYTGsqySrTympNDYdyE5knFaLuz0 (MSJpZSGwdLXVKS5lIAzzRZH0aq6OH5s4ABWZJ6nkunqslbmUSoWMO)kkh40pA(y OZ6MWwtac40jjw50tIOHJDb5gM749qMieb2O2kBLqBhWOJa2ue3EtiTXh98B8ptf bT44Eq96MtJbQAz6p00eowdiOazgJhBxaCzr7sqGYzag4GLqBDJQ0hRBmGAA8oRp 30YyoDqWCNZv80q4TKcx54gijjh6pLRujsMqg4Os2QaUjrM04CjjIs8qYrcvH8aU qjQQdHgpiwAc47sN00C6qwBc3DQKN(smiyixxUTrIsJn2BpKGhwkTjiF1UaLhNgv Wq9NwqGRCPSFr0rkQvTTT2QQoEKAYgd63YjyxIk6QOro0O9aootND34wjIBICd9p LrmG8XoLzG9aUzoPIOTjRJGD6IONXkwSCiJQXbhjPOCKQSq1QYgIDgHhiBxDGGGq Iqp13U8atsm5aZSCGE0soimGpicgVUFU2ZDiPAhKCbhO6UYyRjm0qHbhFmO(YohB xUaIDjK24BhJMoImwD9FAudgJArRBJwsIIKI4oaItVoQj3y2cGZ3JKKqIAZIpooQ BUIaCYghAHqAchUstGELrjI2UABDp6cLQReqQVkEDBS2S85hGCD0ACEFJWQoKDh7 gnjtkCHYipvpNbD05ygHpIpQclmoLlpllOzAZtqUIlxwVlvNCZji2SrjDoJISHzp 2qOW(rV(aGzSQadQ9IpBNik44TeO6c7DODCxGRZuRvikOJl1pk6oYrXJSmhhz0k2 eLCEkYOtxAsTWQ5UMia3L5Wq2wbK0hk3ehYUNM(IIncJ322QUgUQIkTcovQBc)RO BGmFp1jIrDlDEiB6Q496xwwIrtitAhIpfLKKi5pJXcSq32LSRf3WJGsBwT5JSq4F tf3PX8ABbn(oaxGNdD7SBMoX65BhIGMAYiJIcjgoXe8cVi3dKICKdjWLe)dXiCXl lJPCf9HMgRJEyrggfA3ZWbSfGE4B)E8(a8vIk8G8CjjSgBE)CDwggw3TCEAuEc10 gCOEDIfgk4QQYAM(fxCHgvx7QPWBSLAQa0nqV8FRDihJQ0o(8WCfS5P46BMKACRX fRoLAhavOPwqNlAUM4FG5iPGhRuuC4Lc(oRwQcAd1ZCPDFr7GL6XBFsud8CRd4cI WSkChAsOr1pL4wMA92hULoGLYOwsQbKwcZRBsD0xcMcqvgOxs6gMotzCeLGQbWw8 FZM2jl5YoNdHOXzh7sQ45RmC7evqw1O4pGgjuT2i8YIW8cs9LlXKkqP1kIbERtGq U2YeRSLDuwwpD0lk7PRAeoJhPecekQBgQ5Lgh0jnrEW5mQ2i8K)PhQ4mZZeU61RU 11qo)AUqOQ2jJzVHQSRFD4AbIFtsGApzEgk2bpxYIvLzUii8tUOZNEisiSGTwh8s YAXBQH1aaMPKKxZvqQnDSJWjobSJoIfgKHBRSJ(24bthwLCbbTiGVQOArzZtkg3l TEjp5IoglELsBokLW1(FyTIEzVEzeAMTACpG05BfKWQREpwAyYIoPEExBAmIKVBR sZxBJEaj3iGouaOfr2MeNZhXSUHwOa4YkSjfoiBIinsHUCBEc5AYINMcFBfThEdR cMXBcLagZaoYnMloBBkbnaM(2nJ1lJaw8NMYCmAsToKjtgDpJhEkiBlmFQjopWmK wz8tRnnUzgw6imerRpub05ust1DmCOEyiStORVnHqV2VGw3WKdU1qralVJ80Vr5V 1yGBFjxqxZE26YgykWLlp3EaavCTGfr1r4KVdsSpGqK7ho(y8C5r9)UzWQlSnUFG qzEYqtpUGVJ2U1ZVj9RlAq5J2Y0xBklK9U2aMnpCFVtnr2Vaq21ZGj5LZ4adlt6q aB5yyakn9JUt9zWbBTtgpav2sWEu3Oub(bsvctqVX5eFWtSKGYwj9ERuXdWK3yl2 uehPt3hMLuEdqi)0sipl2te7bvSA2a97NJOsn6GQeHsy9WlYu2hkKkzeOy8XKPLV b9SrVsZnWqY)10vpwkR79C(Gvevas0AsVsbbmOs3EE80jBLhexcJ34r4OlxpJmk7 WytxDfv4uWZoKEXTnNh0qA8ls5u7gtaw2eCGFguq9qn7LMmiAF6qv45Ocz3CDCSW 8rrNdJfLdL4R1OQA(sCwTAGsoQF79d1lxa7UstSlspTWdRa2XuuVfv5PZ(YItZsu T6FnlYOnJj9sv5xbLdHjDlThTqstOiW1nNZIZrHt(DmvFh5sTbOTQnrmtaHab3bg )chZRFdmk(hxnt1g5MmSWdJM7YqboTGHTft7DZlg8AJYzUjaoGcGDSjXjvSyaRrI GSh0x)X9uYFb(q)114cYMlUa6XN6cnMVbSbTsv1bw)gRl6b0bTo8Py2yZ7slvYqG tXzn3FyZ4otuvebTo33s5ObblQYxpOodxJkWSjzRy7b593Cvz1DbcqNWIavpq5xC 1PPbuVq3Xcrcg)O3crXs05JdcFLWfk1BtPLf0WvtvxyQ6fPdmYPzNpZ9X8er8q7q 2zEMM2OwzXnc9lLeuCj9w7dT7c9mPwi43nq9L2e7mD515a7NyIhGP6x6wHOXGVjz TmZVy6AQYBHoXt0KKImKpFwDxAN3EI0gllDH5RK7Oc2UzBIi4CI3ha8EtpjmoBI4 EJQ0clTighI3MJWYIkTHYbaBBCS0t4zyhR5EMd6M7RAzM4hbgCLOgwomhSJyMY2U bITUM43OkLbO0RZys7tVBL6AuJDixQKyhMxEuNZnphCUqXkAeZ5ywJawJRk8mJbF oZTYgYyEjBjiIAIWFdyY755AkC7xLQgUqARFlBPVlObiMRSk2Aiive0AyosCB9IG OY0EtEMCZi76Ma(kIJzmGc3NjaQ4uVtXZSpzod5ov1rRpiJzlfYSNUxCgOIENaig hFzwpoIJzl58gQNbBwL6JTck0BT4hROQMnH62dzGBbKsMaqOUDxC)43gM0bkFhjH 1N9s4eykJbuiePdZhW)mY0eG2EkAA5d(nrDKhCJQwrhhvMwkwRuowEKCopAk(y(r F84KsCw(wT44jJm9yLjQ9GMADCl8S0orDiQ7YqTjAN6MIoJEpsoACBJqKbzrg6CS 8rzMzkLkDCq3RLywzOMKQ49gy04gIBn2DMguvMmWiiRM7XwwphmXuDxKEMgGIpnH X(C0pJncIE4JhGqETTGMLSYAIrAgeSDjhGMdM)OLRSyEgpEzE5ZzJ8CQkp)NkmjL jhqnZyDINMwmAhthQkjaDiKzAZTD7MAgIwNN5c8gqAGXSfPUFOAoIImFEYKFoOtL gfDzug(kIa7OWsQoDBJRiNLBEGQlYesMwgCkCpd(F1lhXNOuTA43xbljwsjYdgkR MMsCrsJCf0oaNUWr8U(oT36ydQkzHmkSjii1mjDDHBJ44VOTQ0wooOFORki2EPqY AB074)gICgB5ZX03adHANA8NNx9QBzfwSE(LAxa)yzIhEv0dAwkuG2vNGEQB7qlx Ry8toozWaUYoGKg2(IkLYsQgBgtTC)NhOEYha4BN54QjqBj6MmYIJG8A4gpKOW4T z12BcTuC2gDYlxUHi7I7TQgn6FThMAHGLhCFQUQITiiQbMT1Ln(ctcYr3Y2U7AkT dUTbOwU3w5EFG7WIJIDXozaJkJK2e2NmbaeuZ4gSScZZOOBoiQ4Lojiy8woyc8iv pG8RiX1vtG4OBDEUVjccpyRncosHTwyqBBETYUYZLMum3RmiGwOXglktyxJgFC2H e6TFeXajjg75c1c12jwRvamhMOHCrAP44JwdAA4TCoG5ikYQCBtoTw9BOCGK)Vjp aXWnjDFR42DNjOOoGyvpZsoaqApuMLw9537jPEq2nkQWLEEFfvwwXB8bgEOA8WAp 4OQocasdI2rFKbeOoN)HMy794AFGQITSQ69XkJjBiO1CArRExOAkOnVKEeBKkqwA h7zFOlOTJgzZFI1ctzig1xQ5WOccxcs7hp4AYsmQqUP4)zpw7BfBfux9ChHHQNBE q1HEcMEK(eO2vDcObCYKG0)Xl)Di)9WnfQ)KIQw9SECRHtXEVIAZAdGvxqjJMCGf U)aHrsBIk8ovisd8Xwe)Kiiv(HX0AI0OEjRvR0gHMXEfiIhnlY84K(gkIx2cA9cH ixzBa9YUXgAFFjf)PnelMJogaHR30gEaNKlKkPi2HM8IJbzRUSZEb8BT(mtLO5GP 03nfFBiIU)b2MGdsktz95IBGqUVPtSZok8FFHj1oyE2JLw5iN4C3nvE27JVjlwjj oNtIx1ORum4TkYObaiXpyY2Wsz3lLXjofhcGA(gamyC3JkxNyEHQwm4ssQKlFhUp TpEd8y(l5Xz3UT5Be(WceQrxImtM2f1zL)JhsJ6kJrKASaXa07(lXFU5FSQWNOn1 ogXRZtfOYpTSc2JVBZCrNp4NTaCeNBiCTeT53IdOiSnlpT0z6OQFW8kTAzIdZkOl Tl0uSapRMqPppNDqUaYWlGn7j2)Aq0wS(12K0jKtRoOPFYUkRZcpreuoq0xYLOt2 oShCqWRVApq9ekJyIZ6skkyuEr)lE7lpdDlknWDJJms(jOrvlkibqkBXCK0V49Zd PRR1VnRc1qqv9G4nYvlqFhNWpWjdrVLOaWHL90kPqwa9GxahRtcJ17sykgss(d)y 0w0MA2sLhTfBwwdfANdn8q0ZaRd6BfZHFjw(gFGD8ZE7bfKMpcA8OA2dTadGIoYH vpDJI0C(HQCePiW2YfCLmyxzQw1sJZOkXFvAiaGUVDnrZtDxLEe6FOz7nRJg4UmI IHYg48CUhFEwXkguiBpVCegL0h31L4JQfi3DBAdOCA1OS2GXiJABhEvDtFrDXZsd k2KlkTYwcgURGAp6BCJhubQvgRv0Xtr0mQWubvV2qjv15KsMxtQ7rHwAURBwwl72 bA(du2GgCIriKcuCRJhiEg0jYXjgH4g9n5swywPXtOcCq4pwAl3zaSAEvEEvKERA lBsH1qnh9MUgMEkXGSJBkiD8iFeIuFsEdvJq6Qm8KwgzbQKjUroLIgzR4Nolxg2W BCd0awBVQWqA3coA0EIzRriTAjuc5uUrJW2RA6ohnZbetidOLuRhu(ebwkiBFAQh fkhxQrsXOyoYidVW1Hyc7mPFRPhHLrLxG6Wz9IrEsm19btRs9C2RtX74xRT(jxN0 FLRSaCdLqv7Nm2e8RM5l4WCbCBCIgTYESWkV2SwTtGQb)St5l4BF57RKiO1UrWJK rUGZoToiJvcXyf8KE8Y18EDuWIe2RAhs8DxZLOI4sztMJfRfyD1bcgpzFwUVARXA DkJpIwgIEHmNjHGlKSoA22wFwCSJYUsYcHGNzkCnEf0Z(0XihinEDRqQAFEETnKq I4gBK8mO4ykHGXC8ebGgzHGsB7g5JHANIEOvb0swSjmOhRHaIWgUKj2Oj0CIeS0B eV3NTllhXbmxB1SlqlKvL4AlBh1qDFHldQkBL0EOKwpBY6kYh3lNTzBIXlaVePGE DnCkBKCViS1kpTmqGxkcBpAEjYGDZyQtqL2sMWFzbECUC3GEcFI5c6qJoamMbXur cGudVBlMo75FELKEL5aAj49Gcwg0prUOhHEmLYwWozVEDjJlI0Yx(ZiFTG7lcuuB N4BFdk)z0jHftS90()1HYSM3OJnODG6u0TaXmXH8TkLfY5jRW0zlyw)tZ6EmjwfM QuzIgohPQQApA1KzL5m3QwwwviHU2ivuLEKgIrHEvQ47BhkTnYAJ42g8rYY9mzjb ONInavuQkwyMKi0wL66iDsl)qyJhEAv2ygQg20AajBi6id5oMEnocG3G5MbyDKr4 injqwy0Agaur)zwIvpF8QZojOOggjSNMR34gCiAnaehCIIGCwFkH84oUjIo4HNSj riwS6AIg3cS4sDN4CFrxOM4oY6cpnCT7qzoZr(DyCFpWIE0Cu8TIBCAYgLzqpiAI 4DUgz0Y7rgL5kPjLNMKe4xdgB5YTJJZNcTIDNEJs6qbpF(i8KDlzFLUDuOiM4KsM s6CqrCO5BJ10EsQvwpeOSZ6wDgz6oHYDkSPM6KAJd24IjJmCOhpjNM(aDGyJaZVV rx)9yRDrMMSd6LuN(2jFo2Hr3VAQBl8Ed2BCLI8ohXQJ7oEBAgK)QsAEivTsOAD4 QVeOf)KLoMhFCUE4ut9bQFOR66G(4ceCzzbsLul0HEQv(eH646r(9P0DvCO4tAgM Al)QW9GBEEME5tNeCRxXFEAQCj1NY8DMBDgUgMBB7iGHAtMYtxYYghhUJJQwNumq 9IDNygFCKUIe(6IKebNNOg02iuwcwg72QFzvthorYvxmDYe(RaSFTeYY566WLEdk Es7EDYjsmmDyKjaRtj2gzUVFsWit5qrt5sx0op0NMK66oLiNAVtDwM2Cm5)FNOXY voGOyCZgtuqX86xNxU4zG8tJs9Hg23)xfnH3dfX39cbgOBAEYbU9802ZAEAAAAgA AEAAjDwLAAAAAAABAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAA AAAAAAAAAkAAgAAAAAAACAgAAAAAxAAAAAQBAIgsYVEAQ1UQuUETAAwUAAAAAAAA AAAAAAAAAAAAAAAAAAAAAcbEEM22clQATFLlD2kx0dzLBDHgbygReASbxAA7cysJ ANnMjkHmcS8Bon2OjHEjY4UkaXmODQKFJ3sgcJnM4hANZOyhi9FBRAGwLa6YuJnm BHsfPZoA3dDohnsfBD2co7mpDmMyY20s)aANqWMWDB2IZPjNTmFuBbMgZoAG4SoO YKKYwemM6FsubQsB5oxMxitoLX0Ig)2NAzEyYyshhYEBDjpDI6g5gIjFIipJPQ0B 2BDEMDFNLEH2nIpGMGr5iNbWKzWN8HF6IKTJTPhARVE4mfQ2BtJFTDFDI6gBCNzL ugxgZ6kR0sGMq6(tixqFf0oNM45uKUsYToJPc3DYnH0MzBJBuD4DIQTGzbt6e(NZ 3vPondwzK3PpBJmdxbnM4yubf)(t6QGwffbruDhYAdDjMOCEAYdME4QgLr43cnbj FOMOCIU4M2YILhsw87vjwMgYQyVwasQ6Lsl5SYLhusEhzLvuxwIqDAn3A1)vw(E) DxAsOzLTuOBpysss6Gz(bQ4zTjUjNNEdqZdN2gAgreWDxbT7tPPeEuxCA7(G4G0B ak7TKtPmCKPPi8GPbC7633TiPNgGPOjh9(ANzRdFu3w0PrnZ1GALtONtEsRBXI8M xx4KyBxPAHBFow2gwG60Pyg4Ytzs4ikQaI0j8EViqsBcWdYxiiKnTDziP7Ugotpp XbDO9O72duiP6k78Ow6u5j1zS7K9cs5PQnKcuvCFOTOuHEkgDqZxTBA6DoSLwSLB HaDFF1IXckrTv0qRjtBTkQF5IBFNQIU4DgH3RfQJdlIOa2VasV6g1g11UreT3OKq kCMjp1wAXJZsGrjjNOCo1ltGoPydjgr3CA5o72G1SFSar3MYD1LakHvTNMMowiBi 7y9DDBIQOfjjMOCkEIgNt9J45bIXphZ5mltnGEXmAkBwGVvTDZB2BAAPAIAABAAA A8CAAAw4AQAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwA AAAAJAAAAAAAAAAIAIAAAAgAAAAAAUAGDYAAFBAANFEWFxEUAMkLAAAAAAAAAAAA AAAAAAAAAAAAAAAAcSPAWuNAvEABAQDVEJQohxTEhBs2EbwUkdDm5JtGOI2A3djm RaJHMdyQgcjGhQIxOLwA094mIAo5NZ(IgoTHBSOkIH3sDkTiM6zCMJOCbcTGJB9w Na88gAxCRxrhhYImopDCcjq0MCT22J5GJTp0hWLCgkyitQDzpM)kllTxpJKJOfEC MEzG0h62OZ48uITGxZgyoV7AKBhHh6kjMf2U)JjmoB8YHNQIywxisKh8wgNStBiY BwI5OeoizFzioir3wa6k1t7iRqkyFMoEvFCCICI8GOWUFZy6Fhb6Joz62c9EgCNZ nPSUNYwi0hn2FJygg02g5xuBl0hHswDCAxu8sArHgkKV5xL2he8ACJDnMg6yNJ0A gUYHZjt3kJBuPcTHZY6rMQjWeb)moM(gYhKEn26Cjin7UcPLqqsmaqBkF2wIDhE2 MvLrimqWw58jBEkiuNajePDAFOAkwZXHDorDRslpg5xjF7G2UCGPDQYEBQAL8xTB FFEg4YBEK6yoDLifWNgxPGAWUP5IDorjhTtia4Tyy6G6SQ17zzzjrNL0hDQP((4k L)(B9z4jDLHiFAzPApKRKRS9AEMcJRQHngAjChMXaiUrJMESwie3l8Qoyi2EbEsA Dw4IDvQwIPpjpmMYa55jHmyKDrCIzzRtEmAcwa(jMRyayJ5I3xhsGFA5Ciw5cqrT y1EXjiVSWL5akgaAXREKRQTSZ9RxFLPfk(JGVgdkRXeUWo(R8OOEgZNMplkURyVn NoiyIiYLootM5QlKzoEh0MjPFuKp08TLTCStjTmSkv7LjOOaaiE99744jCkxSrcO nM(aCp8zJWKVPJAKgTILSjoaVjUIQBMFLq)Q5cUIhQLrLG9Z3wqt3CCzWA)qRlUh jou3x)Ty03g78j5UtOMJ84s86wwbv3I3tEXpetsLgHNf)5y10rS(3FBOfPiptFYH Rac8BJ4GWguSGXNkoeFqMikFS2Toemd6Zpvv91ajGouUIwAqxJChhMgL4vsCjDKj gHgtnj7nuvplO3(u96(uH4z4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AwoC