Hi, I am writing a ClangTool that visits every function in a module, and edits source code based on the CFG. For a function I want to instrument, however, the CFG produces blocks that list a successor as NULL. This is a problem because I need to perform a breadth-first search of the CFG, and I cannot because of the null successor. I have listed the result of cfg->dump() below. What could be the cause of this? Any help would be appreciated. Thanks.
[B18 (ENTRY)] Succs (1): B17 [B1] 1: i += 30 Preds (1): B2 Succs (1): B5 [B2] 1: strlen(json) 2: MarsSendBlocking(1, json, [B2.1]) Preds (2): B3 B4 Succs (1): B1 [B3] Preds (1): B4 Succs (1): B2 [B4] T: if <null expr> Preds (1): B5 Succs (2): B3 B2 [B5] T: for (; ; ...) Preds (2): B1 B6 Succs (2): B4 NULL [B6] 1: strlen(json) 2: MarsSendBlocking(1, json, [B6.1]) Succs (1): B5 [B7] 1: i++ Preds (2): B8 B9 Succs (1): B10 [B8] Preds (1): B9 Succs (1): B7 [B9] 1: char tempString[6]; T: if <null expr> Preds (1): B10 Succs (2): B8 B7 [B10] T: for (...; ; ...) Preds (2): B7 B11 Succs (2): B9 NULL [B11] 1: ndc_str[14] = 0 2: npi_str[12] = 0 3: zip_str[5] = 0 4: t.tm_isdst = -1 5: mktime(&t) 6: time_prescribed = [B11.5] 7: printf("year:%u month:%u day:%u hour:%u min:%u sec:%u\n", t.tm_year, t.tm_mon, t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec) 8: i = 0 Preds (1): B12 Succs (1): B10 [B12] T: if <null expr> Preds (2): B13 B14 Succs (2): B11 B0 [B13] Preds (1): B14 Succs (1): B12 [B14] T: if <null expr> Succs (2): B13 B12 [B15] 1: i++ Preds (1): B16 Succs (1): B16 [B16] T: for (...; ; ...) Preds (2): B15 B17 Succs (2): B15 NULL [B17] 1: char ndc_str[15]; 2: char npi_str[13]; 3: char zip_str[6]; 4: char dosageIntervals; 5: int last_msg_idx; 6: int i; 7: struct tm t; 8: time_t time_prescribed; 9: i = 0 Preds (1): B18 Succs (1): B16 [B0 (EXIT)] Preds (1): B12 -- Derrick McKee Ph.D. Student Computer Science Purdue University SensorHound, Inc.
_______________________________________________ cfe-users mailing list cfe-users@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users