1 // RUN: %clangxx_msan -m64 -O0 -g %s -o %t && %t
2 // RUN: %clangxx_msan -m64 -O0 -g -DPOSITIVE %s -o %t && not %t |& FileCheck %s
12 iconv_t cd
= iconv_open("ASCII", "ASCII");
13 assert(cd
!= (iconv_t
)-1);
16 strcpy(inbuf_
, "sample text");
19 char *outbuf
= outbuf_
;
20 size_t inbytesleft
= strlen(inbuf_
);
21 size_t outbytesleft
= sizeof(outbuf_
);
26 char *volatile p
= &u
;
32 res
= iconv(cd
, 0, 0, 0, 0);
33 assert(res
!= (size_t)-1);
35 res
= iconv(cd
, 0, 0, &outbuf
, &outbytesleft
);
36 assert(res
!= (size_t)-1);
38 res
= iconv(cd
, &inbuf
, &inbytesleft
, &outbuf
, &outbytesleft
);
39 // CHECK: MemorySanitizer: use-of-uninitialized-value
40 // CHECK: #0 {{.*}} in main {{.*}}iconv.cc:[[@LINE-2]]
41 assert(res
!= (size_t)-1);
42 assert(inbytesleft
== 0);
44 assert(memcmp(inbuf_
, outbuf_
, strlen(inbuf_
)) == 0);