inline-plist.c revision 66253352131e3e7a22b3bfd0e180607aa2bfb988
1// RUN: %clang --analyze %s -Xclang -analyzer-ipa=inlining -o %t 2// RUN: FileCheck -input-file %t %s 3 4// <rdar://problem/10967815> 5void mmm(int y) { 6 if (y != 0) 7 y++; 8} 9 10int foo(int x, int y) { 11 mmm(y); 12 if (x != 0) 13 x++; 14 return 5/x; 15} 16 17// CHECK: <?xml version="1.0" encoding="UTF-8"?> 18// CHECK: <plist version="1.0"> 19// CHECK: <dict> 20// CHECK: <key>files</key> 21// CHECK: <array> 22// CHECK: </array> 23// CHECK: <key>diagnostics</key> 24// CHECK: <array> 25// CHECK: <dict> 26// CHECK: <key>path</key> 27// CHECK: <array> 28// CHECK: <dict> 29// CHECK: <key>kind</key><string>control</string> 30// CHECK: <key>edges</key> 31// CHECK: <array> 32// CHECK: <dict> 33// CHECK: <key>start</key> 34// CHECK: <array> 35// CHECK: <dict> 36// CHECK: <key>line</key><integer>11</integer> 37// CHECK: <key>col</key><integer>5</integer> 38// CHECK: <key>file</key><integer>0</integer> 39// CHECK: </dict> 40// CHECK: <dict> 41// CHECK: <key>line</key><integer>11</integer> 42// CHECK: <key>col</key><integer>10</integer> 43// CHECK: <key>file</key><integer>0</integer> 44// CHECK: </dict> 45// CHECK: </array> 46// CHECK: <key>end</key> 47// CHECK: <array> 48// CHECK: <dict> 49// CHECK: <key>line</key><integer>12</integer> 50// CHECK: <key>col</key><integer>5</integer> 51// CHECK: <key>file</key><integer>0</integer> 52// CHECK: </dict> 53// CHECK: <dict> 54// CHECK: <key>line</key><integer>12</integer> 55// CHECK: <key>col</key><integer>5</integer> 56// CHECK: <key>file</key><integer>0</integer> 57// CHECK: </dict> 58// CHECK: </array> 59// CHECK: </dict> 60// CHECK: </array> 61// CHECK: </dict> 62// CHECK: <dict> 63// CHECK: <key>kind</key><string>control</string> 64// CHECK: <key>edges</key> 65// CHECK: <array> 66// CHECK: <dict> 67// CHECK: <key>start</key> 68// CHECK: <array> 69// CHECK: <dict> 70// CHECK: <key>line</key><integer>12</integer> 71// CHECK: <key>col</key><integer>5</integer> 72// CHECK: <key>file</key><integer>0</integer> 73// CHECK: </dict> 74// CHECK: <dict> 75// CHECK: <key>line</key><integer>12</integer> 76// CHECK: <key>col</key><integer>5</integer> 77// CHECK: <key>file</key><integer>0</integer> 78// CHECK: </dict> 79// CHECK: </array> 80// CHECK: <key>end</key> 81// CHECK: <array> 82// CHECK: <dict> 83// CHECK: <key>line</key><integer>12</integer> 84// CHECK: <key>col</key><integer>9</integer> 85// CHECK: <key>file</key><integer>0</integer> 86// CHECK: </dict> 87// CHECK: <dict> 88// CHECK: <key>line</key><integer>12</integer> 89// CHECK: <key>col</key><integer>9</integer> 90// CHECK: <key>file</key><integer>0</integer> 91// CHECK: </dict> 92// CHECK: </array> 93// CHECK: </dict> 94// CHECK: </array> 95// CHECK: </dict> 96// CHECK: <dict> 97// CHECK: <key>kind</key><string>event</string> 98// CHECK: <key>location</key> 99// CHECK: <dict> 100// CHECK: <key>line</key><integer>12</integer> 101// CHECK: <key>col</key><integer>9</integer> 102// CHECK: <key>file</key><integer>0</integer> 103// CHECK: </dict> 104// CHECK: <key>ranges</key> 105// CHECK: <array> 106// CHECK: <array> 107// CHECK: <dict> 108// CHECK: <key>line</key><integer>12</integer> 109// CHECK: <key>col</key><integer>9</integer> 110// CHECK: <key>file</key><integer>0</integer> 111// CHECK: </dict> 112// CHECK: <dict> 113// CHECK: <key>line</key><integer>12</integer> 114// CHECK: <key>col</key><integer>14</integer> 115// CHECK: <key>file</key><integer>0</integer> 116// CHECK: </dict> 117// CHECK: </array> 118// CHECK: </array> 119// CHECK: <key>extended_message</key> 120// CHECK: <string>Assuming 'x' is equal to 0</string> 121// CHECK: <key>message</key> 122// CHECK: <string>Assuming 'x' is equal to 0</string> 123// CHECK: </dict> 124// CHECK: <dict> 125// CHECK: <key>kind</key><string>control</string> 126// CHECK: <key>edges</key> 127// CHECK: <array> 128// CHECK: <dict> 129// CHECK: <key>start</key> 130// CHECK: <array> 131// CHECK: <dict> 132// CHECK: <key>line</key><integer>12</integer> 133// CHECK: <key>col</key><integer>9</integer> 134// CHECK: <key>file</key><integer>0</integer> 135// CHECK: </dict> 136// CHECK: <dict> 137// CHECK: <key>line</key><integer>12</integer> 138// CHECK: <key>col</key><integer>9</integer> 139// CHECK: <key>file</key><integer>0</integer> 140// CHECK: </dict> 141// CHECK: </array> 142// CHECK: <key>end</key> 143// CHECK: <array> 144// CHECK: <dict> 145// CHECK: <key>line</key><integer>14</integer> 146// CHECK: <key>col</key><integer>5</integer> 147// CHECK: <key>file</key><integer>0</integer> 148// CHECK: </dict> 149// CHECK: <dict> 150// CHECK: <key>line</key><integer>14</integer> 151// CHECK: <key>col</key><integer>5</integer> 152// CHECK: <key>file</key><integer>0</integer> 153// CHECK: </dict> 154// CHECK: </array> 155// CHECK: </dict> 156// CHECK: </array> 157// CHECK: </dict> 158// CHECK: <dict> 159// CHECK: <key>kind</key><string>control</string> 160// CHECK: <key>edges</key> 161// CHECK: <array> 162// CHECK: <dict> 163// CHECK: <key>start</key> 164// CHECK: <array> 165// CHECK: <dict> 166// CHECK: <key>line</key><integer>14</integer> 167// CHECK: <key>col</key><integer>5</integer> 168// CHECK: <key>file</key><integer>0</integer> 169// CHECK: </dict> 170// CHECK: <dict> 171// CHECK: <key>line</key><integer>14</integer> 172// CHECK: <key>col</key><integer>5</integer> 173// CHECK: <key>file</key><integer>0</integer> 174// CHECK: </dict> 175// CHECK: </array> 176// CHECK: <key>end</key> 177// CHECK: <array> 178// CHECK: <dict> 179// CHECK: <key>line</key><integer>14</integer> 180// CHECK: <key>col</key><integer>12</integer> 181// CHECK: <key>file</key><integer>0</integer> 182// CHECK: </dict> 183// CHECK: <dict> 184// CHECK: <key>line</key><integer>14</integer> 185// CHECK: <key>col</key><integer>12</integer> 186// CHECK: <key>file</key><integer>0</integer> 187// CHECK: </dict> 188// CHECK: </array> 189// CHECK: </dict> 190// CHECK: </array> 191// CHECK: </dict> 192// CHECK: <dict> 193// CHECK: <key>kind</key><string>event</string> 194// CHECK: <key>location</key> 195// CHECK: <dict> 196// CHECK: <key>line</key><integer>14</integer> 197// CHECK: <key>col</key><integer>12</integer> 198// CHECK: <key>file</key><integer>0</integer> 199// CHECK: </dict> 200// CHECK: <key>ranges</key> 201// CHECK: <array> 202// CHECK: <array> 203// CHECK: <dict> 204// CHECK: <key>line</key><integer>14</integer> 205// CHECK: <key>col</key><integer>12</integer> 206// CHECK: <key>file</key><integer>0</integer> 207// CHECK: </dict> 208// CHECK: <dict> 209// CHECK: <key>line</key><integer>14</integer> 210// CHECK: <key>col</key><integer>14</integer> 211// CHECK: <key>file</key><integer>0</integer> 212// CHECK: </dict> 213// CHECK: </array> 214// CHECK: </array> 215// CHECK: <key>extended_message</key> 216// CHECK: <string>Division by zero</string> 217// CHECK: <key>message</key> 218// CHECK: <string>Division by zero</string> 219// CHECK: </dict> 220// CHECK: </array> 221// CHECK: <key>description</key><string>Division by zero</string> 222// CHECK: <key>category</key><string>Logic error</string> 223// CHECK: <key>type</key><string>Division by zero</string> 224// CHECK: <key>location</key> 225// CHECK: <dict> 226// CHECK: <key>line</key><integer>14</integer> 227// CHECK: <key>col</key><integer>12</integer> 228// CHECK: <key>file</key><integer>0</integer> 229// CHECK: </dict> 230// CHECK: </dict> 231// CHECK: </array> 232// CHECK: </dict> 233// CHECK: </plist> 234 235