dead-stores.c revision f87821c086a46411883b385c743996a35cc8e154
1aa395ba050c558b1ebf66c7868165938d98b6a5bTed Kremenek// RUN: clang -warn-dead-stores -verify %s
28aefcbfd3c0409c26ca44c123a41edd631eab9bcTed Kremenek
349a2fd2758996b6f674babf19c75b3d01e77e2d4Ted Kremenekvoid f1() {
4aa395ba050c558b1ebf66c7868165938d98b6a5bTed Kremenek  int k, y;
50fdf06e5eef80ce56ce6499ba662453919b95af1Ted Kremenek  int abc=1;
60fdf06e5eef80ce56ce6499ba662453919b95af1Ted Kremenek  long idx=abc+3*5; // expected-warning {{value stored to variable is never used}}
7aa395ba050c558b1ebf66c7868165938d98b6a5bTed Kremenek}
88aefcbfd3c0409c26ca44c123a41edd631eab9bcTed Kremenek
949a2fd2758996b6f674babf19c75b3d01e77e2d4Ted Kremenekvoid f2(void *b) {
108aefcbfd3c0409c26ca44c123a41edd631eab9bcTed Kremenek char *c = (char*)b; // no-warning
118aefcbfd3c0409c26ca44c123a41edd631eab9bcTed Kremenek char *d = b+1; // expected-warning {{value stored to variable is never used}}
128aefcbfd3c0409c26ca44c123a41edd631eab9bcTed Kremenek printf("%s", c);
138aefcbfd3c0409c26ca44c123a41edd631eab9bcTed Kremenek}
1474c43a0967d07572dd6907776d91cdb2b2e7179aTed Kremenek
1549a2fd2758996b6f674babf19c75b3d01e77e2d4Ted Kremenekvoid f3() {
160fdf06e5eef80ce56ce6499ba662453919b95af1Ted Kremenek  int r;
170fdf06e5eef80ce56ce6499ba662453919b95af1Ted Kremenek  if ((r = f()) != 0) { // no-warning
180fdf06e5eef80ce56ce6499ba662453919b95af1Ted Kremenek    int y = r; // no-warning
190fdf06e5eef80ce56ce6499ba662453919b95af1Ted Kremenek    printf("the error is: %d\n", y);
200fdf06e5eef80ce56ce6499ba662453919b95af1Ted Kremenek  }
2174c43a0967d07572dd6907776d91cdb2b2e7179aTed Kremenek}
2249a2fd2758996b6f674babf19c75b3d01e77e2d4Ted Kremenek
2349a2fd2758996b6f674babf19c75b3d01e77e2d4Ted Kremenekvoid f4(int k) {
2449a2fd2758996b6f674babf19c75b3d01e77e2d4Ted Kremenek
2549a2fd2758996b6f674babf19c75b3d01e77e2d4Ted Kremenek  k = 1;
2649a2fd2758996b6f674babf19c75b3d01e77e2d4Ted Kremenek
2749a2fd2758996b6f674babf19c75b3d01e77e2d4Ted Kremenek  if (k)
2849a2fd2758996b6f674babf19c75b3d01e77e2d4Ted Kremenek    f1();
2949a2fd2758996b6f674babf19c75b3d01e77e2d4Ted Kremenek
3049a2fd2758996b6f674babf19c75b3d01e77e2d4Ted Kremenek  k = 2;  // expected-warning {{value stored to variable is never used}}
3149a2fd2758996b6f674babf19c75b3d01e77e2d4Ted Kremenek}
32f87821c086a46411883b385c743996a35cc8e154Ted Kremenek
33f87821c086a46411883b385c743996a35cc8e154Ted Kremenekvoid f5() {
34f87821c086a46411883b385c743996a35cc8e154Ted Kremenek
35f87821c086a46411883b385c743996a35cc8e154Ted Kremenek  int x = 4; // no-warning
36f87821c086a46411883b385c743996a35cc8e154Ted Kremenek  int *p = &x; // expected-warning{{value stored to variable is never used}}
37f87821c086a46411883b385c743996a35cc8e154Ted Kremenek
38f87821c086a46411883b385c743996a35cc8e154Ted Kremenek}