summaryrefslogtreecommitdiffstats
path: root/test/Analysis/engine/replay-without-inlining.c
diff options
context:
space:
mode:
authordim <dim@FreeBSD.org>2012-08-15 20:02:54 +0000
committerdim <dim@FreeBSD.org>2012-08-15 20:02:54 +0000
commit554bcb69c2d785a011a30e7db87a36a87fe7db10 (patch)
tree9abb1a658a297776086f4e0dfa6ca533de02104e /test/Analysis/engine/replay-without-inlining.c
parentbb67ca86b31f67faee50bd10c3b036d65751745a (diff)
downloadFreeBSD-src-554bcb69c2d785a011a30e7db87a36a87fe7db10.zip
FreeBSD-src-554bcb69c2d785a011a30e7db87a36a87fe7db10.tar.gz
Vendor import of clang trunk r161861:
http://llvm.org/svn/llvm-project/cfe/trunk@161861
Diffstat (limited to 'test/Analysis/engine/replay-without-inlining.c')
-rw-r--r--test/Analysis/engine/replay-without-inlining.c57
1 files changed, 57 insertions, 0 deletions
diff --git a/test/Analysis/engine/replay-without-inlining.c b/test/Analysis/engine/replay-without-inlining.c
new file mode 100644
index 0000000..9ec2d08
--- /dev/null
+++ b/test/Analysis/engine/replay-without-inlining.c
@@ -0,0 +1,57 @@
+// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc -verify %s
+
+typedef struct {
+ char I[4];
+ int S;
+} Hdr;
+typedef struct {
+ short w;
+} Hdr2;
+typedef struct {
+ Hdr2 usedtobeundef;
+} Info;
+typedef struct {
+ const unsigned char *ib;
+ int cur;
+ int end;
+} IB;
+inline unsigned long gl(IB *input);
+inline void gbs(IB *input, unsigned char *buf, int count);
+void getB(IB *st, Hdr2 *usedtobeundef);
+inline unsigned char gb(IB *input) {
+ if (input->cur + 1 > input->end)
+ ;
+ return input->ib[(input->cur)++];
+}
+static void getID(IB *st, char str[4]) {
+ str[0] = gb(st);
+ str[1] = gb(st);
+ str[2] = gb(st);
+ str[3] = gb(st);
+}
+static void getH(IB *st, Hdr *header) {
+ getID (st, header->I);
+ header->S = gl(st);
+}
+static void readILBM(IB *st, Info *pic) {
+ // Initialize field;
+ pic->usedtobeundef.w = 5;
+
+ // Time out in the function so that we will be forced to retry with no inlining.
+ Hdr header;
+ getH (st, &header);
+ getID(st, header.I);
+ int i = 0;
+ while (st->cur < st->end && i < 4) {
+ i++;
+ getH (st, &header);
+ }
+}
+int bitmapImageRepFromIFF(IB st, const unsigned char *ib, int il) {
+ Info pic;
+ st.ib = ib;
+ st.cur = 0;
+ st.end = il;
+ readILBM(&st,&pic);
+ return pic.usedtobeundef.w; // No undefined value warning here.
+}
OpenPOWER on IntegriCloud