From 222e2a7620e6520ffaf4fc4e69d79c18da31542e Mon Sep 17 00:00:00 2001 From: "Zancanaro; Carlo" Date: Mon, 24 Sep 2012 09:58:17 +1000 Subject: Add the clang library to the repo (with some of my changes, too). --- clang/test/Analysis/inline-plist.c | 369 +++++++++++++++++++++++++++++++++++++ 1 file changed, 369 insertions(+) create mode 100644 clang/test/Analysis/inline-plist.c (limited to 'clang/test/Analysis/inline-plist.c') diff --git a/clang/test/Analysis/inline-plist.c b/clang/test/Analysis/inline-plist.c new file mode 100644 index 0000000..549082d --- /dev/null +++ b/clang/test/Analysis/inline-plist.c @@ -0,0 +1,369 @@ +// RUN: %clang --analyze %s -Xclang -analyzer-ipa=inlining -o %t +// RUN: FileCheck -input-file %t %s + +// +void mmm(int y) { + if (y != 0) + y++; +} + +int foo(int x, int y) { + mmm(y); + if (x != 0) + x++; + return 5/x; +} + +// Test a bug triggering only when inlined. +void has_bug(int *p) { + *p = 0xDEADBEEF; +} + +void test_has_bug() { + has_bug(0); +} + + +// CHECK: +// CHECK: +// CHECK: +// CHECK: files +// CHECK: +// CHECK: +// CHECK: diagnostics +// CHECK: +// CHECK: +// CHECK: path +// CHECK: +// CHECK: +// CHECK: kindcontrol +// CHECK: edges +// CHECK: +// CHECK: +// CHECK: start +// CHECK: +// CHECK: +// CHECK: line11 +// CHECK: col5 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: line11 +// CHECK: col10 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: end +// CHECK: +// CHECK: +// CHECK: line12 +// CHECK: col5 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: line12 +// CHECK: col5 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: +// CHECK: +// CHECK: +// CHECK: +// CHECK: kindcontrol +// CHECK: edges +// CHECK: +// CHECK: +// CHECK: start +// CHECK: +// CHECK: +// CHECK: line12 +// CHECK: col5 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: line12 +// CHECK: col5 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: end +// CHECK: +// CHECK: +// CHECK: line12 +// CHECK: col9 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: line12 +// CHECK: col9 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: +// CHECK: +// CHECK: +// CHECK: +// CHECK: kindevent +// CHECK: location +// CHECK: +// CHECK: line12 +// CHECK: col9 +// CHECK: file0 +// CHECK: +// CHECK: ranges +// CHECK: +// CHECK: +// CHECK: +// CHECK: line12 +// CHECK: col9 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: line12 +// CHECK: col14 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: +// CHECK: depth0 +// CHECK: extended_message +// CHECK: Assuming 'x' is equal to 0 +// CHECK: message +// CHECK: Assuming 'x' is equal to 0 +// CHECK: +// CHECK: +// CHECK: kindcontrol +// CHECK: edges +// CHECK: +// CHECK: +// CHECK: start +// CHECK: +// CHECK: +// CHECK: line12 +// CHECK: col9 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: line12 +// CHECK: col9 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: end +// CHECK: +// CHECK: +// CHECK: line14 +// CHECK: col5 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: line14 +// CHECK: col5 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: +// CHECK: +// CHECK: +// CHECK: +// CHECK: kindcontrol +// CHECK: edges +// CHECK: +// CHECK: +// CHECK: start +// CHECK: +// CHECK: +// CHECK: line14 +// CHECK: col5 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: line14 +// CHECK: col5 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: end +// CHECK: +// CHECK: +// CHECK: line14 +// CHECK: col12 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: line14 +// CHECK: col12 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: +// CHECK: +// CHECK: +// CHECK: +// CHECK: kindevent +// CHECK: location +// CHECK: +// CHECK: line14 +// CHECK: col12 +// CHECK: file0 +// CHECK: +// CHECK: ranges +// CHECK: +// CHECK: +// CHECK: +// CHECK: line14 +// CHECK: col12 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: line14 +// CHECK: col14 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: +// CHECK: depth0 +// CHECK: extended_message +// CHECK: Division by zero +// CHECK: message +// CHECK: Division by zero +// CHECK: +// CHECK: +// CHECK: descriptionDivision by zero +// CHECK: categoryLogic error +// CHECK: typeDivision by zero +// CHECK: issue_context_kindfunction +// CHECK: issue_contextfoo +// CHECK: location +// CHECK: +// CHECK: line14 +// CHECK: col12 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: +// CHECK: path +// CHECK: +// CHECK: +// CHECK: kindevent +// CHECK: location +// CHECK: +// CHECK: line23 +// CHECK: col3 +// CHECK: file0 +// CHECK: +// CHECK: ranges +// CHECK: +// CHECK: +// CHECK: +// CHECK: line23 +// CHECK: col3 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: line23 +// CHECK: col12 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: +// CHECK: depth0 +// CHECK: extended_message +// CHECK: Calling 'has_bug' +// CHECK: message +// CHECK: Calling 'has_bug' +// CHECK: +// CHECK: +// CHECK: kindevent +// CHECK: location +// CHECK: +// CHECK: line18 +// CHECK: col1 +// CHECK: file0 +// CHECK: +// CHECK: depth1 +// CHECK: extended_message +// CHECK: Entered call from 'test_has_bug' +// CHECK: message +// CHECK: Entered call from 'test_has_bug' +// CHECK: +// CHECK: +// CHECK: kindcontrol +// CHECK: edges +// CHECK: +// CHECK: +// CHECK: start +// CHECK: +// CHECK: +// CHECK: line18 +// CHECK: col1 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: line18 +// CHECK: col1 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: end +// CHECK: +// CHECK: +// CHECK: line19 +// CHECK: col3 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: line19 +// CHECK: col3 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: +// CHECK: +// CHECK: +// CHECK: +// CHECK: kindevent +// CHECK: location +// CHECK: +// CHECK: line19 +// CHECK: col3 +// CHECK: file0 +// CHECK: +// CHECK: ranges +// CHECK: +// CHECK: +// CHECK: +// CHECK: line19 +// CHECK: col4 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: line19 +// CHECK: col4 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: +// CHECK: depth1 +// CHECK: extended_message +// CHECK: Dereference of null pointer (loaded from variable 'p') +// CHECK: message +// CHECK: Dereference of null pointer (loaded from variable 'p') +// CHECK: +// CHECK: +// CHECK: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK: categoryLogic error +// CHECK: typeDereference of null pointer +// CHECK: issue_context_kindfunction +// CHECK: issue_contexthas_bug +// CHECK: location +// CHECK: +// CHECK: line19 +// CHECK: col3 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: +// CHECK: +// CHECK: -- cgit v1.2.3