// 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: