// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-output=text -verify %s // RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-output=plist-multi-file %s -o - | FileCheck %s void foo_irrelevant(int c) { if (c) return; c++; return; } void foo(int c, int *x) { if (c) //expected-note@-1{{Assuming 'c' is not equal to 0}} //expected-note@-2{{Taking true branch}} return; *x = 5; } int use(int c) { int xx; //expected-note{{Variable 'xx' declared without an initial value}} int *y = &xx; foo (c, y); //expected-note@-1{{Calling 'foo'}} //expected-note@-2{{Returning from 'foo'}} foo_irrelevant(c); return xx+3; //expected-warning{{The left operand of '+' is a garbage value}} //expected-note@-1{{The left operand of '+' is a garbage value}} } //CHECK: //CHECK: files //CHECK: //CHECK: //CHECK: diagnostics //CHECK: //CHECK: //CHECK: path //CHECK: //CHECK: //CHECK: kindevent //CHECK: location //CHECK: //CHECK: line19 //CHECK: col5 //CHECK: file0 //CHECK: //CHECK: ranges //CHECK: //CHECK: //CHECK: //CHECK: line19 //CHECK: col5 //CHECK: file0 //CHECK: //CHECK: //CHECK: line19 //CHECK: col10 //CHECK: file0 //CHECK: //CHECK: //CHECK: //CHECK: depth0 //CHECK: extended_message //CHECK: Variable 'xx' declared without an initial value //CHECK: message //CHECK: Variable 'xx' declared without an initial value //CHECK: //CHECK: //CHECK: kindcontrol //CHECK: edges //CHECK: //CHECK: //CHECK: start //CHECK: //CHECK: //CHECK: line19 //CHECK: col5 //CHECK: file0 //CHECK: //CHECK: //CHECK: line19 //CHECK: col7 //CHECK: file0 //CHECK: //CHECK: //CHECK: end //CHECK: //CHECK: //CHECK: line21 //CHECK: col5 //CHECK: file0 //CHECK: //CHECK: //CHECK: line21 //CHECK: col7 //CHECK: file0 //CHECK: //CHECK: //CHECK: //CHECK: //CHECK: //CHECK: //CHECK: kindevent //CHECK: location //CHECK: //CHECK: line21 //CHECK: col5 //CHECK: file0 //CHECK: //CHECK: ranges //CHECK: //CHECK: //CHECK: //CHECK: line21 //CHECK: col5 //CHECK: file0 //CHECK: //CHECK: //CHECK: line21 //CHECK: col14 //CHECK: file0 //CHECK: //CHECK: //CHECK: //CHECK: depth0 //CHECK: extended_message //CHECK: Calling 'foo' //CHECK: message //CHECK: Calling 'foo' //CHECK: //CHECK: //CHECK: kindevent //CHECK: location //CHECK: //CHECK: line10 //CHECK: col1 //CHECK: file0 //CHECK: //CHECK: depth1 //CHECK: extended_message //CHECK: Entered call from 'use' //CHECK: message //CHECK: Entered call from 'use' //CHECK: //CHECK: //CHECK: kindcontrol //CHECK: edges //CHECK: //CHECK: //CHECK: start //CHECK: //CHECK: //CHECK: line10 //CHECK: col1 //CHECK: file0 //CHECK: //CHECK: //CHECK: line10 //CHECK: col4 //CHECK: file0 //CHECK: //CHECK: //CHECK: end //CHECK: //CHECK: //CHECK: line11 //CHECK: col5 //CHECK: file0 //CHECK: //CHECK: //CHECK: line11 //CHECK: col6 //CHECK: file0 //CHECK: //CHECK: //CHECK: //CHECK: //CHECK: //CHECK: //CHECK: kindcontrol //CHECK: edges //CHECK: //CHECK: //CHECK: start //CHECK: //CHECK: //CHECK: line11 //CHECK: col5 //CHECK: file0 //CHECK: //CHECK: //CHECK: line11 //CHECK: col6 //CHECK: file0 //CHECK: //CHECK: //CHECK: end //CHECK: //CHECK: //CHECK: line11 //CHECK: col9 //CHECK: file0 //CHECK: //CHECK: //CHECK: line11 //CHECK: col9 //CHECK: file0 //CHECK: //CHECK: //CHECK: //CHECK: //CHECK: //CHECK: //CHECK: kindevent //CHECK: location //CHECK: //CHECK: line11 //CHECK: col9 //CHECK: file0 //CHECK: //CHECK: ranges //CHECK: //CHECK: //CHECK: //CHECK: line11 //CHECK: col9 //CHECK: file0 //CHECK: //CHECK: //CHECK: line11 //CHECK: col9 //CHECK: file0 //CHECK: //CHECK: //CHECK: //CHECK: depth1 //CHECK: extended_message //CHECK: Assuming 'c' is not equal to 0 //CHECK: message //CHECK: Assuming 'c' is not equal to 0 //CHECK: //CHECK: //CHECK: kindcontrol //CHECK: edges //CHECK: //CHECK: //CHECK: start //CHECK: //CHECK: //CHECK: line11 //CHECK: col9 //CHECK: file0 //CHECK: //CHECK: //CHECK: line11 //CHECK: col9 //CHECK: file0 //CHECK: //CHECK: //CHECK: end //CHECK: //CHECK: //CHECK: line14 //CHECK: col9 //CHECK: file0 //CHECK: //CHECK: //CHECK: line14 //CHECK: col14 //CHECK: file0 //CHECK: //CHECK: //CHECK: //CHECK: //CHECK: //CHECK: //CHECK: kindevent //CHECK: location //CHECK: //CHECK: line21 //CHECK: col5 //CHECK: file0 //CHECK: //CHECK: ranges //CHECK: //CHECK: //CHECK: //CHECK: line21 //CHECK: col5 //CHECK: file0 //CHECK: //CHECK: //CHECK: line21 //CHECK: col14 //CHECK: file0 //CHECK: //CHECK: //CHECK: //CHECK: depth1 //CHECK: extended_message //CHECK: Returning from 'foo' //CHECK: message //CHECK: Returning from 'foo' //CHECK: //CHECK: //CHECK: kindcontrol //CHECK: edges //CHECK: //CHECK: //CHECK: start //CHECK: //CHECK: //CHECK: line21 //CHECK: col5 //CHECK: file0 //CHECK: //CHECK: //CHECK: line21 //CHECK: col7 //CHECK: file0 //CHECK: //CHECK: //CHECK: end //CHECK: //CHECK: //CHECK: line24 //CHECK: col5 //CHECK: file0 //CHECK: //CHECK: //CHECK: line24 //CHECK: col18 //CHECK: file0 //CHECK: //CHECK: //CHECK: //CHECK: //CHECK: //CHECK: //CHECK: kindcontrol //CHECK: edges //CHECK: //CHECK: //CHECK: start //CHECK: //CHECK: //CHECK: line24 //CHECK: col5 //CHECK: file0 //CHECK: //CHECK: //CHECK: line24 //CHECK: col18 //CHECK: file0 //CHECK: //CHECK: //CHECK: end //CHECK: //CHECK: //CHECK: line25 //CHECK: col5 //CHECK: file0 //CHECK: //CHECK: //CHECK: line25 //CHECK: col10 //CHECK: file0 //CHECK: //CHECK: //CHECK: //CHECK: //CHECK: //CHECK: //CHECK: kindcontrol //CHECK: edges //CHECK: //CHECK: //CHECK: start //CHECK: //CHECK: //CHECK: line25 //CHECK: col5 //CHECK: file0 //CHECK: //CHECK: //CHECK: line25 //CHECK: col10 //CHECK: file0 //CHECK: //CHECK: //CHECK: end //CHECK: //CHECK: //CHECK: line25 //CHECK: col12 //CHECK: file0 //CHECK: //CHECK: //CHECK: line25 //CHECK: col13 //CHECK: file0 //CHECK: //CHECK: //CHECK: //CHECK: //CHECK: //CHECK: //CHECK: kindevent //CHECK: location //CHECK: //CHECK: line25 //CHECK: col12 //CHECK: file0 //CHECK: //CHECK: ranges //CHECK: //CHECK: //CHECK: //CHECK: line25 //CHECK: col12 //CHECK: file0 //CHECK: //CHECK: //CHECK: line25 //CHECK: col13 //CHECK: file0 //CHECK: //CHECK: //CHECK: //CHECK: depth0 //CHECK: extended_message //CHECK: The left operand of '+' is a garbage value //CHECK: message //CHECK: The left operand of '+' is a garbage value //CHECK: //CHECK: //CHECK: descriptionThe left operand of '+' is a garbage value //CHECK: categoryLogic error //CHECK: typeResult of operation is garbage or undefined //CHECK: issue_context_kindfunction //CHECK: issue_contextuse //CHECK: issue_hash7 //CHECK: location //CHECK: //CHECK: line25 //CHECK: col12 //CHECK: file0 //CHECK: //CHECK: //CHECK: //CHECK: //CHECK: