dead-stores.c revision a5495eadc816b29954e22df55aa9a9d6bb41429c
1d7d5f0223bd30dfd618762349c6209dd1d5ea3e6Daniel Dunbar// RUN: clang-cc -analyze -warn-dead-stores -verify %s && 2d7d5f0223bd30dfd618762349c6209dd1d5ea3e6Daniel Dunbar// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=basic -warn-dead-stores -verify %s && 3c037eac3bda3c636c961aab6377beea3242e81e4Ted Kremenek// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic-old-cast -analyzer-constraints=basic -warn-dead-stores -verify %s && 4d7d5f0223bd30dfd618762349c6209dd1d5ea3e6Daniel Dunbar// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=range -warn-dead-stores -verify %s && 5c037eac3bda3c636c961aab6377beea3242e81e4Ted Kremenek// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic-old-cast -analyzer-constraints=range -warn-dead-stores -verify %s && 6d7d5f0223bd30dfd618762349c6209dd1d5ea3e6Daniel Dunbar// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=basic -warn-dead-stores -verify %s && 7d7d5f0223bd30dfd618762349c6209dd1d5ea3e6Daniel Dunbar// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=range -warn-dead-stores -verify %s 88aefcbfd3c0409c26ca44c123a41edd631eab9bcTed Kremenek 949a2fd2758996b6f674babf19c75b3d01e77e2d4Ted Kremenekvoid f1() { 10aa395ba050c558b1ebf66c7868165938d98b6a5bTed Kremenek int k, y; 110fdf06e5eef80ce56ce6499ba662453919b95af1Ted Kremenek int abc=1; 121a654b60ef40e84f3943cdb581795c4d4dae1e45Ted Kremenek long idx=abc+3*5; // expected-warning {{never read}} 13aa395ba050c558b1ebf66c7868165938d98b6a5bTed Kremenek} 148aefcbfd3c0409c26ca44c123a41edd631eab9bcTed Kremenek 1549a2fd2758996b6f674babf19c75b3d01e77e2d4Ted Kremenekvoid f2(void *b) { 168aefcbfd3c0409c26ca44c123a41edd631eab9bcTed Kremenek char *c = (char*)b; // no-warning 171a654b60ef40e84f3943cdb581795c4d4dae1e45Ted Kremenek char *d = b+1; // expected-warning {{never read}} 18a316e7b735b12ce6b34961a9dcfaae34f4b08d29Douglas Gregor printf("%s", c); // expected-warning{{implicitly declaring C library function 'printf' with type 'int (char const *, ...)'}} \ 19a316e7b735b12ce6b34961a9dcfaae34f4b08d29Douglas Gregor // expected-note{{please include the header <stdio.h> or explicitly provide a declaration for 'printf'}} 208aefcbfd3c0409c26ca44c123a41edd631eab9bcTed Kremenek} 2174c43a0967d07572dd6907776d91cdb2b2e7179aTed Kremenek 2249a2fd2758996b6f674babf19c75b3d01e77e2d4Ted Kremenekvoid f3() { 230fdf06e5eef80ce56ce6499ba662453919b95af1Ted Kremenek int r; 240fdf06e5eef80ce56ce6499ba662453919b95af1Ted Kremenek if ((r = f()) != 0) { // no-warning 250fdf06e5eef80ce56ce6499ba662453919b95af1Ted Kremenek int y = r; // no-warning 260fdf06e5eef80ce56ce6499ba662453919b95af1Ted Kremenek printf("the error is: %d\n", y); 270fdf06e5eef80ce56ce6499ba662453919b95af1Ted Kremenek } 2874c43a0967d07572dd6907776d91cdb2b2e7179aTed Kremenek} 2949a2fd2758996b6f674babf19c75b3d01e77e2d4Ted Kremenek 3049a2fd2758996b6f674babf19c75b3d01e77e2d4Ted Kremenekvoid f4(int k) { 3149a2fd2758996b6f674babf19c75b3d01e77e2d4Ted Kremenek 3249a2fd2758996b6f674babf19c75b3d01e77e2d4Ted Kremenek k = 1; 3349a2fd2758996b6f674babf19c75b3d01e77e2d4Ted Kremenek 3449a2fd2758996b6f674babf19c75b3d01e77e2d4Ted Kremenek if (k) 3549a2fd2758996b6f674babf19c75b3d01e77e2d4Ted Kremenek f1(); 3649a2fd2758996b6f674babf19c75b3d01e77e2d4Ted Kremenek 371a654b60ef40e84f3943cdb581795c4d4dae1e45Ted Kremenek k = 2; // expected-warning {{never read}} 3849a2fd2758996b6f674babf19c75b3d01e77e2d4Ted Kremenek} 39f87821c086a46411883b385c743996a35cc8e154Ted Kremenek 40f87821c086a46411883b385c743996a35cc8e154Ted Kremenekvoid f5() { 41f87821c086a46411883b385c743996a35cc8e154Ted Kremenek 42f87821c086a46411883b385c743996a35cc8e154Ted Kremenek int x = 4; // no-warning 431a654b60ef40e84f3943cdb581795c4d4dae1e45Ted Kremenek int *p = &x; // expected-warning{{never read}} 44f87821c086a46411883b385c743996a35cc8e154Ted Kremenek 45a23157e6b9e2388edebd3d383dd7acfab6a4c0c0Ted Kremenek} 46a23157e6b9e2388edebd3d383dd7acfab6a4c0c0Ted Kremenek 47a23157e6b9e2388edebd3d383dd7acfab6a4c0c0Ted Kremenekint f6() { 48a23157e6b9e2388edebd3d383dd7acfab6a4c0c0Ted Kremenek 49a23157e6b9e2388edebd3d383dd7acfab6a4c0c0Ted Kremenek int x = 4; 501a654b60ef40e84f3943cdb581795c4d4dae1e45Ted Kremenek ++x; // expected-warning{{never read}} 51a23157e6b9e2388edebd3d383dd7acfab6a4c0c0Ted Kremenek return 1; 52a23157e6b9e2388edebd3d383dd7acfab6a4c0c0Ted Kremenek} 531a654b60ef40e84f3943cdb581795c4d4dae1e45Ted Kremenek 541a654b60ef40e84f3943cdb581795c4d4dae1e45Ted Kremenekint f7(int *p) { 551a654b60ef40e84f3943cdb581795c4d4dae1e45Ted Kremenek // This is allowed for defensive programming. 561a654b60ef40e84f3943cdb581795c4d4dae1e45Ted Kremenek p = 0; // no-warning 571a654b60ef40e84f3943cdb581795c4d4dae1e45Ted Kremenek return 1; 581a654b60ef40e84f3943cdb581795c4d4dae1e45Ted Kremenek} 591a654b60ef40e84f3943cdb581795c4d4dae1e45Ted Kremenek 601a654b60ef40e84f3943cdb581795c4d4dae1e45Ted Kremenekint f8(int *p) { 614489fe10fa073eb326e2c8906db170f009050911Daniel Dunbar extern int *baz(); 621a654b60ef40e84f3943cdb581795c4d4dae1e45Ted Kremenek if (p = baz()) // expected-warning{{Although the value}} 631a654b60ef40e84f3943cdb581795c4d4dae1e45Ted Kremenek return 1; 641a654b60ef40e84f3943cdb581795c4d4dae1e45Ted Kremenek return 0; 651a654b60ef40e84f3943cdb581795c4d4dae1e45Ted Kremenek} 661a654b60ef40e84f3943cdb581795c4d4dae1e45Ted Kremenek 672cfac226b028e5a2165af077268f70cd2ab4b1a8Ted Kremenekint f9() { 682cfac226b028e5a2165af077268f70cd2ab4b1a8Ted Kremenek int x = 4; 692cfac226b028e5a2165af077268f70cd2ab4b1a8Ted Kremenek x = x + 10; // expected-warning{{never read}} 702cfac226b028e5a2165af077268f70cd2ab4b1a8Ted Kremenek return 1; 712cfac226b028e5a2165af077268f70cd2ab4b1a8Ted Kremenek} 722cfac226b028e5a2165af077268f70cd2ab4b1a8Ted Kremenek 732cfac226b028e5a2165af077268f70cd2ab4b1a8Ted Kremenekint f10() { 742cfac226b028e5a2165af077268f70cd2ab4b1a8Ted Kremenek int x = 4; 752cfac226b028e5a2165af077268f70cd2ab4b1a8Ted Kremenek x = 10 + x; // expected-warning{{never read}} 762cfac226b028e5a2165af077268f70cd2ab4b1a8Ted Kremenek return 1; 772cfac226b028e5a2165af077268f70cd2ab4b1a8Ted Kremenek} 782cfac226b028e5a2165af077268f70cd2ab4b1a8Ted Kremenek 798b00b6e80dbeb04dd919699f7818344dd4cbaad9Ted Kremenekint f11() { 808b00b6e80dbeb04dd919699f7818344dd4cbaad9Ted Kremenek int x = 4; 81380277e46ec1d2d9abedcddf357ceea935cbe576Ted Kremenek return x++; // expected-warning{{never read}} 828b00b6e80dbeb04dd919699f7818344dd4cbaad9Ted Kremenek} 838b00b6e80dbeb04dd919699f7818344dd4cbaad9Ted Kremenek 84380277e46ec1d2d9abedcddf357ceea935cbe576Ted Kremenekint f11b() { 85380277e46ec1d2d9abedcddf357ceea935cbe576Ted Kremenek int x = 4; 867f5fce7200fdbf03f7d70134a57271e584fcb766Ted Kremenek return ((((++x)))); // no-warning 87380277e46ec1d2d9abedcddf357ceea935cbe576Ted Kremenek} 88380277e46ec1d2d9abedcddf357ceea935cbe576Ted Kremenek 89fc7ff5540412f8003024e1b4940fb8408dff2ca6Ted Kremenekint f12a(int y) { 90fc7ff5540412f8003024e1b4940fb8408dff2ca6Ted Kremenek int x = y; // expected-warning{{never read}} 91fc7ff5540412f8003024e1b4940fb8408dff2ca6Ted Kremenek return 1; 92fc7ff5540412f8003024e1b4940fb8408dff2ca6Ted Kremenek} 93fc7ff5540412f8003024e1b4940fb8408dff2ca6Ted Kremenekint f12b(int y) { 94fc7ff5540412f8003024e1b4940fb8408dff2ca6Ted Kremenek int x __attribute__((unused)) = y; // no-warning 95fc7ff5540412f8003024e1b4940fb8408dff2ca6Ted Kremenek return 1; 96fc7ff5540412f8003024e1b4940fb8408dff2ca6Ted Kremenek} 972cfac226b028e5a2165af077268f70cd2ab4b1a8Ted Kremenek 98efe88f5776b42ec2defb8ba29269a6c3683e9485Ted Kremenek// Filed with PR 2630. This code should produce no warnings. 99efe88f5776b42ec2defb8ba29269a6c3683e9485Ted Kremenekint f13(void) 100efe88f5776b42ec2defb8ba29269a6c3683e9485Ted Kremenek{ 101efe88f5776b42ec2defb8ba29269a6c3683e9485Ted Kremenek int a = 1; 102efe88f5776b42ec2defb8ba29269a6c3683e9485Ted Kremenek int b, c = b = a + a; 103efe88f5776b42ec2defb8ba29269a6c3683e9485Ted Kremenek 104efe88f5776b42ec2defb8ba29269a6c3683e9485Ted Kremenek if (b > 0) 105efe88f5776b42ec2defb8ba29269a6c3683e9485Ted Kremenek return (0); 106efe88f5776b42ec2defb8ba29269a6c3683e9485Ted Kremenek 107efe88f5776b42ec2defb8ba29269a6c3683e9485Ted Kremenek return (a + b + c); 108efe88f5776b42ec2defb8ba29269a6c3683e9485Ted Kremenek} 109efe88f5776b42ec2defb8ba29269a6c3683e9485Ted Kremenek 110b497ebdce35c708e902db2d49183925a612b4914Ted Kremenek// Filed with PR 2763. 11184fa6b90abf73e8cc539c9947ed5a6286f588569Ted Kremenekint f14(int count) { 112b497ebdce35c708e902db2d49183925a612b4914Ted Kremenek int index, nextLineIndex; 113b497ebdce35c708e902db2d49183925a612b4914Ted Kremenek for (index = 0; index < count; index = nextLineIndex+1) { 114b497ebdce35c708e902db2d49183925a612b4914Ted Kremenek nextLineIndex = index+1; // no-warning 115b497ebdce35c708e902db2d49183925a612b4914Ted Kremenek continue; 116b497ebdce35c708e902db2d49183925a612b4914Ted Kremenek } 117b497ebdce35c708e902db2d49183925a612b4914Ted Kremenek return index; 118b497ebdce35c708e902db2d49183925a612b4914Ted Kremenek} 11984fa6b90abf73e8cc539c9947ed5a6286f588569Ted Kremenek 12084fa6b90abf73e8cc539c9947ed5a6286f588569Ted Kremenek// Test case for <rdar://problem/6248086> 12184fa6b90abf73e8cc539c9947ed5a6286f588569Ted Kremenekvoid f15(unsigned x, unsigned y) { 12284fa6b90abf73e8cc539c9947ed5a6286f588569Ted Kremenek int count = x * y; // no-warning 12384fa6b90abf73e8cc539c9947ed5a6286f588569Ted Kremenek int z[count]; 12484fa6b90abf73e8cc539c9947ed5a6286f588569Ted Kremenek} 12584fa6b90abf73e8cc539c9947ed5a6286f588569Ted Kremenek 126610a09e409bea151a42dd907768f1e0c4b103f1fTed Kremenekint f16(int x) { 127610a09e409bea151a42dd907768f1e0c4b103f1fTed Kremenek x = x * 2; 128d2025e26738c3017af6685e342a3a746cdf8249fTed Kremenek x = sizeof(int [x = (x || x + 1) * 2]) // expected-warning{{Although the value stored to 'x' is used}} 129d2025e26738c3017af6685e342a3a746cdf8249fTed Kremenek ? 5 : 8; 130610a09e409bea151a42dd907768f1e0c4b103f1fTed Kremenek return x; 131610a09e409bea151a42dd907768f1e0c4b103f1fTed Kremenek} 132610a09e409bea151a42dd907768f1e0c4b103f1fTed Kremenek 1333b58786f85aaa173e122f6eaff0b6efa233d59a2Ted Kremenek// Self-assignments should not be flagged as dead stores. 134a5495eadc816b29954e22df55aa9a9d6bb41429cMike Stumpvoid f17() { 1353b58786f85aaa173e122f6eaff0b6efa233d59a2Ted Kremenek int x = 1; 1363b58786f85aaa173e122f6eaff0b6efa233d59a2Ted Kremenek x = x; // no-warning 1373b58786f85aaa173e122f6eaff0b6efa233d59a2Ted Kremenek} 1387f5fce7200fdbf03f7d70134a57271e584fcb766Ted Kremenek 1397f5fce7200fdbf03f7d70134a57271e584fcb766Ted Kremenek// <rdar://problem/6506065> 1407f5fce7200fdbf03f7d70134a57271e584fcb766Ted Kremenek// The values of dead stores are only "consumed" in an enclosing expression 141cd7bf230a77c550115e4a78ee371fc49a7563692Mike Stump// what that value is actually used. In other words, don't say "Although the 142cd7bf230a77c550115e4a78ee371fc49a7563692Mike Stump// value stored to 'x' is used...". 1437f5fce7200fdbf03f7d70134a57271e584fcb766Ted Kremenekint f18() { 1447f5fce7200fdbf03f7d70134a57271e584fcb766Ted Kremenek int x = 0; // no-warning 1457f5fce7200fdbf03f7d70134a57271e584fcb766Ted Kremenek if (1) 1467f5fce7200fdbf03f7d70134a57271e584fcb766Ted Kremenek x = 10; // expected-warning{{Value stored to 'x' is never read}} 1477f5fce7200fdbf03f7d70134a57271e584fcb766Ted Kremenek while (1) 1487f5fce7200fdbf03f7d70134a57271e584fcb766Ted Kremenek x = 10; // expected-warning{{Value stored to 'x' is never read}} 1497f5fce7200fdbf03f7d70134a57271e584fcb766Ted Kremenek do 1507f5fce7200fdbf03f7d70134a57271e584fcb766Ted Kremenek x = 10; // expected-warning{{Value stored to 'x' is never read}} 1517f5fce7200fdbf03f7d70134a57271e584fcb766Ted Kremenek while (1); 1527f5fce7200fdbf03f7d70134a57271e584fcb766Ted Kremenek 1537f5fce7200fdbf03f7d70134a57271e584fcb766Ted Kremenek return (x = 10); // expected-warning{{Although the value stored to 'x' is used in the enclosing expression, the value is never actually read from 'x'}} 1547f5fce7200fdbf03f7d70134a57271e584fcb766Ted Kremenek} 155d3098ee64c069a3eff4d2d0a5d655d968c7b5dd2Ted Kremenek 156d3098ee64c069a3eff4d2d0a5d655d968c7b5dd2Ted Kremenek// PR 3514: false positive `dead initialization` warning for init to global 157d3098ee64c069a3eff4d2d0a5d655d968c7b5dd2Ted Kremenek// http://llvm.org/bugs/show_bug.cgi?id=3514 158d3098ee64c069a3eff4d2d0a5d655d968c7b5dd2Ted Kremenekextern const int MyConstant; 159d3098ee64c069a3eff4d2d0a5d655d968c7b5dd2Ted Kremenekint f19(void) { 160d3098ee64c069a3eff4d2d0a5d655d968c7b5dd2Ted Kremenek int x = MyConstant; // no-warning 161d3098ee64c069a3eff4d2d0a5d655d968c7b5dd2Ted Kremenek x = 1; 162d3098ee64c069a3eff4d2d0a5d655d968c7b5dd2Ted Kremenek return x; 163d3098ee64c069a3eff4d2d0a5d655d968c7b5dd2Ted Kremenek} 164d3098ee64c069a3eff4d2d0a5d655d968c7b5dd2Ted Kremenek 16528433ff063fe5ba5eac486d4bfcfa9e210097772Ted Kremenekint f19b(void) { // This case is the same as f19. 166d3098ee64c069a3eff4d2d0a5d655d968c7b5dd2Ted Kremenek const int MyConstant = 0; 16728433ff063fe5ba5eac486d4bfcfa9e210097772Ted Kremenek int x = MyConstant; // no-warning 168d3098ee64c069a3eff4d2d0a5d655d968c7b5dd2Ted Kremenek x = 1; 169d3098ee64c069a3eff4d2d0a5d655d968c7b5dd2Ted Kremenek return x; 170d3098ee64c069a3eff4d2d0a5d655d968c7b5dd2Ted Kremenek} 171632d1ece2715b1c8a0c99e1b8b487f4c148c89d5Ted Kremenek 172632d1ece2715b1c8a0c99e1b8b487f4c148c89d5Ted Kremenekvoid f20(void) { 173632d1ece2715b1c8a0c99e1b8b487f4c148c89d5Ted Kremenek int x = 1; // no-warning 174632d1ece2715b1c8a0c99e1b8b487f4c148c89d5Ted Kremenek#pragma unused(x) 175632d1ece2715b1c8a0c99e1b8b487f4c148c89d5Ted Kremenek} 176632d1ece2715b1c8a0c99e1b8b487f4c148c89d5Ted Kremenek 177cd7bf230a77c550115e4a78ee371fc49a7563692Mike Stumpvoid halt() __attribute__((noreturn)); 178cd7bf230a77c550115e4a78ee371fc49a7563692Mike Stumpint f21() { 179cd7bf230a77c550115e4a78ee371fc49a7563692Mike Stump int x = 4; 180cd7bf230a77c550115e4a78ee371fc49a7563692Mike Stump 181cd7bf230a77c550115e4a78ee371fc49a7563692Mike Stump ++x; // expected-warning{{never read}} 182cd7bf230a77c550115e4a78ee371fc49a7563692Mike Stump if (1) { 183cd7bf230a77c550115e4a78ee371fc49a7563692Mike Stump halt(); 184cd7bf230a77c550115e4a78ee371fc49a7563692Mike Stump (void)x; 185cd7bf230a77c550115e4a78ee371fc49a7563692Mike Stump } 186cd7bf230a77c550115e4a78ee371fc49a7563692Mike Stump return 1; 187cd7bf230a77c550115e4a78ee371fc49a7563692Mike Stump} 188e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump 189e5af3ce53ec58995b09381ba645ab2117a46647bMike Stumpint j; 190e5af3ce53ec58995b09381ba645ab2117a46647bMike Stumpvoid f22() { 191e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump int x = 4; 192e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump int y1 = 4; 193e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump int y2 = 4; 194e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump int y3 = 4; 195e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump int y4 = 4; 196e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump int y5 = 4; 197e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump int y6 = 4; 198e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump int y7 = 4; 199e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump int y8 = 4; 200e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump int y9 = 4; 201e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump int y10 = 4; 2025f20363dc8ea094b3f6139f52084beb10d6fcd85Mike Stump int y11 = 4; 2035f20363dc8ea094b3f6139f52084beb10d6fcd85Mike Stump int y12 = 4; 204fefb9f7009702befaf715e7a8debc9505c3c8634Mike Stump int y13 = 4; 205fefb9f7009702befaf715e7a8debc9505c3c8634Mike Stump int y14 = 4; 206fefb9f7009702befaf715e7a8debc9505c3c8634Mike Stump int y15 = 4; 2078f9893a2beeacd5149bd2d3d4c6e130516915068Mike Stump int y16 = 4; 2088f9893a2beeacd5149bd2d3d4c6e130516915068Mike Stump int y17 = 4; 2098f9893a2beeacd5149bd2d3d4c6e130516915068Mike Stump int y18 = 4; 21022cd6581188bbbc6bedaca64ab171b1187a1c06aMike Stump int y19 = 4; 21122cd6581188bbbc6bedaca64ab171b1187a1c06aMike Stump int y20 = 4; 212e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump 213e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump ++x; // expected-warning{{never read}} 214e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump ++y1; 215e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump ++y2; 216e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump ++y3; 217e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump ++y4; 218e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump ++y5; 219e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump ++y6; 220e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump ++y7; 221e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump ++y8; 222e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump ++y9; 223e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump ++y10; 2245f20363dc8ea094b3f6139f52084beb10d6fcd85Mike Stump ++y11; 2255f20363dc8ea094b3f6139f52084beb10d6fcd85Mike Stump ++y12; 226fefb9f7009702befaf715e7a8debc9505c3c8634Mike Stump ++y13; 227fefb9f7009702befaf715e7a8debc9505c3c8634Mike Stump ++y14; 228fefb9f7009702befaf715e7a8debc9505c3c8634Mike Stump ++y15; 2298f9893a2beeacd5149bd2d3d4c6e130516915068Mike Stump ++y16; 2308f9893a2beeacd5149bd2d3d4c6e130516915068Mike Stump ++y17; 2318f9893a2beeacd5149bd2d3d4c6e130516915068Mike Stump ++y18; 23222cd6581188bbbc6bedaca64ab171b1187a1c06aMike Stump ++y19; 23322cd6581188bbbc6bedaca64ab171b1187a1c06aMike Stump ++y20; 234e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump 235e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump switch (j) { 236e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump case 1: 237e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump if (0) 238e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump (void)x; 239e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump if (1) { 240e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump (void)y1; 241e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump return; 242e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump } 243e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump (void)x; 244e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump break; 245e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump case 2: 246e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump if (0) 247e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump (void)x; 248e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump else { 249e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump (void)y2; 250e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump return; 251e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump } 252e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump (void)x; 253e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump break; 254e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump case 3: 255e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump if (1) { 256e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump (void)y3; 257e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump return; 258e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump } else 259e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump (void)x; 260e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump (void)x; 261e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump break; 262e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump case 4: 263e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump 0 ? : ((void)y4, ({ return; })); 264e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump (void)x; 265e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump break; 266e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump case 5: 267e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump 1 ? : (void)x; 268e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump 0 ? (void)x : ((void)y5, ({ return; })); 269e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump (void)x; 270e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump break; 271e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump case 6: 272e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump 1 ? ((void)y6, ({ return; })) : (void)x; 273e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump (void)x; 274e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump break; 275e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump case 7: 276e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump (void)(0 && x); 277e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump (void)y7; 278e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump (void)(0 || (y8, ({ return; }), 1)); 279e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump (void)x; 280e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump break; 281e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump case 8: 282e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump (void)(1 && (y9, ({ return; }), 1)); 283e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump (void)x; 284e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump break; 285e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump case 9: 286e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump (void)(1 || x); 287e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump (void)y10; 2885f20363dc8ea094b3f6139f52084beb10d6fcd85Mike Stump break; 2895f20363dc8ea094b3f6139f52084beb10d6fcd85Mike Stump case 10: 2908f9893a2beeacd5149bd2d3d4c6e130516915068Mike Stump while (0) { 2918f9893a2beeacd5149bd2d3d4c6e130516915068Mike Stump (void)x; 2925f20363dc8ea094b3f6139f52084beb10d6fcd85Mike Stump } 2938f9893a2beeacd5149bd2d3d4c6e130516915068Mike Stump (void)y11; 2945f20363dc8ea094b3f6139f52084beb10d6fcd85Mike Stump break; 2955f20363dc8ea094b3f6139f52084beb10d6fcd85Mike Stump case 11: 2968f9893a2beeacd5149bd2d3d4c6e130516915068Mike Stump while (1) { 2978f9893a2beeacd5149bd2d3d4c6e130516915068Mike Stump (void)y12; 2985f20363dc8ea094b3f6139f52084beb10d6fcd85Mike Stump } 2998f9893a2beeacd5149bd2d3d4c6e130516915068Mike Stump (void)x; 3005f20363dc8ea094b3f6139f52084beb10d6fcd85Mike Stump break; 301fefb9f7009702befaf715e7a8debc9505c3c8634Mike Stump case 12: 3028f9893a2beeacd5149bd2d3d4c6e130516915068Mike Stump do { 303fefb9f7009702befaf715e7a8debc9505c3c8634Mike Stump (void)y13; 3048f9893a2beeacd5149bd2d3d4c6e130516915068Mike Stump } while (0); 3058f9893a2beeacd5149bd2d3d4c6e130516915068Mike Stump (void)y14; 3068f9893a2beeacd5149bd2d3d4c6e130516915068Mike Stump break; 3078f9893a2beeacd5149bd2d3d4c6e130516915068Mike Stump case 13: 3088f9893a2beeacd5149bd2d3d4c6e130516915068Mike Stump do { 3098f9893a2beeacd5149bd2d3d4c6e130516915068Mike Stump (void)y15; 3108f9893a2beeacd5149bd2d3d4c6e130516915068Mike Stump } while (1); 3118f9893a2beeacd5149bd2d3d4c6e130516915068Mike Stump (void)x; 3128f9893a2beeacd5149bd2d3d4c6e130516915068Mike Stump break; 3138f9893a2beeacd5149bd2d3d4c6e130516915068Mike Stump case 14: 3148f9893a2beeacd5149bd2d3d4c6e130516915068Mike Stump for (;;) { 3158f9893a2beeacd5149bd2d3d4c6e130516915068Mike Stump (void)y16; 316fefb9f7009702befaf715e7a8debc9505c3c8634Mike Stump } 317fefb9f7009702befaf715e7a8debc9505c3c8634Mike Stump (void)x; 318fefb9f7009702befaf715e7a8debc9505c3c8634Mike Stump break; 3198f9893a2beeacd5149bd2d3d4c6e130516915068Mike Stump case 15: 320fefb9f7009702befaf715e7a8debc9505c3c8634Mike Stump for (;1;) { 3218f9893a2beeacd5149bd2d3d4c6e130516915068Mike Stump (void)y17; 322fefb9f7009702befaf715e7a8debc9505c3c8634Mike Stump } 323fefb9f7009702befaf715e7a8debc9505c3c8634Mike Stump (void)x; 324fefb9f7009702befaf715e7a8debc9505c3c8634Mike Stump break; 3258f9893a2beeacd5149bd2d3d4c6e130516915068Mike Stump case 16: 326fefb9f7009702befaf715e7a8debc9505c3c8634Mike Stump for (;0;) { 327fefb9f7009702befaf715e7a8debc9505c3c8634Mike Stump (void)x; 328fefb9f7009702befaf715e7a8debc9505c3c8634Mike Stump } 3298f9893a2beeacd5149bd2d3d4c6e130516915068Mike Stump (void)y18; 330fefb9f7009702befaf715e7a8debc9505c3c8634Mike Stump break; 33122cd6581188bbbc6bedaca64ab171b1187a1c06aMike Stump case 17: 33222cd6581188bbbc6bedaca64ab171b1187a1c06aMike Stump __builtin_choose_expr(0, (void)x, ((void)y19, ({ return; }))); 33322cd6581188bbbc6bedaca64ab171b1187a1c06aMike Stump (void)x; 33422cd6581188bbbc6bedaca64ab171b1187a1c06aMike Stump break; 33522cd6581188bbbc6bedaca64ab171b1187a1c06aMike Stump case 19: 33622cd6581188bbbc6bedaca64ab171b1187a1c06aMike Stump __builtin_choose_expr(1, ((void)y20, ({ return; })), (void)x); 33722cd6581188bbbc6bedaca64ab171b1187a1c06aMike Stump (void)x; 33822cd6581188bbbc6bedaca64ab171b1187a1c06aMike Stump break; 339e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump } 340e5af3ce53ec58995b09381ba645ab2117a46647bMike Stump} 341