sharing1.c: (in function f) sharing1.c:12:12: Only storage x not released before return sharing1.c:8:24: Storage x becomes only sharing1.c:13:2: Only storage x not released before return sharing1.c:8:24: Storage x becomes only sharing1.c: (in function f2) sharing1.c:19:12: Only storage y not released before return sharing1.c:15:43: Storage y becomes only sharing1.c: (in function f3) sharing1.c:24:3: Only storage x assigned to shared: globshared1 = x sharing1.c:22:25: Storage x becomes only sharing1.c:25:2: Only storage x not released before return sharing1.c:22:25: Storage x becomes only sharing1.c: (in function f4) sharing1.c:29:3: Only storage zonly (type int *) not released before assignment: zonly = x sharing1.c:6:19: Storage zonly becomes only sharing1.c: (in function g) sharing1.c:41:7: Implicitly temp storage imp passed as only param: f3 (imp) sharing1.c:42:4: Variable imp used after being released sharing1.c:41:7: Storage imp released sharing1.c:44:12: Immediate address &x passed as only param: f (&x, ...) sharing1.c:44:12: Parameter 1 (&x) to function f is declared only but is aliased by parameter 2 (&x) sharing1.c:48:14: Possibly null storage y3 passed as non-null param: f2 (y3, ...) sharing1.c:37:13: Storage y3 may become null sharing1.c:48:14: Passed storage y3 not completely defined (*y3 is undefined): f2 (y3, ...) sharing1.c:37:33: Storage *y3 allocated sharing1.c:48:18: Parameter 2 (y3) to function f2 is declared only but is aliased by parameter 1 (y3) sharing1.c:50:4: Variable y3 used after being released sharing1.c:48:18: Storage y3 released sharing1.c:51:12: Possibly null storage y passed as non-null param: f (y, ...) sharing1.c:35:12: Storage y may become null sharing1.c:51:12: Passed storage y not completely defined (*y is undefined): f (y, ...) sharing1.c:35:32: Storage *y allocated sharing1.c:52:12: Shared storage globshared1 passed as only param: f (globshared1, ...) sharing1.c:4:19: Storage globshared1 becomes shared sharing1.c:56:9: Shared storage globshared2 passed as only param: free (globshared2) sharing1.c:5:19: Storage globshared2 becomes shared sharing1.c:59:11: Variable y used after being released sharing1.c:51:12: Storage y released sharing1.c:59:13: Fresh storage y2 not released before return sharing1.c:36:33: Fresh storage y2 created sharing1.c:59:13: Function returns with global globonly referencing released storage sharing1.c:57:9: Storage globonly released Finished checking --- 21 code warnings, as expected sharing3.c: (in function string_copy) sharing3.c:17:10: Implicitly temp storage s returned as only: s sharing3.c: (in function string_free1) sharing3.c:32:9: Implicitly temp storage s passed as only param: free (s) sharing3.c: (in function string_free3) sharing3.c:45:2: Fresh storage t not released before return sharing3.c:42:29: Fresh storage t created Finished checking --- 3 code warnings, as expected sharing4.c: (in function f) sharing4.c:18:3: Only storage globonly1 (type char *) not released before assignment: globonly1 = only1 sharing4.c:1:20: Storage globonly1 becomes only sharing4.c:23:3: Only storage globonly4 (type char *) not released before assignment: globonly4 = shared1 sharing4.c:4:20: Storage globonly4 becomes only sharing4.c:23:3: Shared storage shared1 assigned to only: globonly4 = shared1 sharing4.c:14:26: Storage shared1 becomes shared sharing4.c:27:3: Only storage globonly5 assigned to shared: globshared1 = globonly5 sharing4.c:5:20: Storage globonly5 becomes only sharing4.c:30:3: Only storage globonly1 assigned to shared (local1 aliases globonly1): globshared1 = local1 sharing4.c:1:20: Storage globonly1 becomes only sharing4.c:30:3: Kept storage only1 assigned to shared (local1 aliases only1): globshared1 = local1 sharing4.c:18:3: Storage only1 becomes kept sharing4.c:32:3: Only storage assigned to shared: globshared1 = string_copy(local1) sharing4.c:34:3: Temp storage temp2 assigned to shared: globshared2 = temp2 sharing4.c:13:37: Storage temp2 becomes temp sharing4.c:35:3: Only storage globonly4 (type char *) not released before assignment: globonly4 = temp1 sharing4.c:4:20: Storage globonly4 becomes only sharing4.c:35:3: Implicitly temp storage temp1 assigned to only: globonly4 = temp1 sharing4.c:38:9: Shared storage shared1 passed as only param: free (shared1) sharing4.c:14:26: Storage shared1 becomes shared sharing4.c:42:12: Only storage only3 not released before return sharing4.c:12:72: Storage only3 becomes only sharing4.c:42:12: Function returns with global globonly3 referencing released storage sharing4.c:21:9: Storage globonly3 released Finished checking --- 13 code warnings, as expected sharing4.c: (in function f) sharing4.c:18:3: Only storage globonly1 (type char *) not released before assignment: globonly1 = only1 sharing4.c:1:20: Storage globonly1 becomes only sharing4.c:23:3: Only storage globonly4 (type char *) not released before assignment: globonly4 = shared1 sharing4.c:4:20: Storage globonly4 becomes only sharing4.c:23:3: Shared storage shared1 assigned to only: globonly4 = shared1 sharing4.c:14:26: Storage shared1 becomes shared sharing4.c:27:3: Only storage globonly5 assigned to shared: globshared1 = globonly5 sharing4.c:5:20: Storage globonly5 becomes only sharing4.c:30:3: Only storage globonly1 assigned to shared (local1 aliases globonly1): globshared1 = local1 sharing4.c:1:20: Storage globonly1 becomes only sharing4.c:30:3: Kept storage only1 assigned to shared (local1 aliases only1): globshared1 = local1 sharing4.c:18:3: Storage only1 becomes kept sharing4.c:32:3: Only storage assigned to shared: globshared1 = string_copy(local1) sharing4.c:34:3: Temp storage temp2 assigned to shared: globshared2 = temp2 sharing4.c:13:37: Storage temp2 becomes temp sharing4.c:35:3: Only storage globonly4 (type char *) not released before assignment: globonly4 = temp1 sharing4.c:4:20: Storage globonly4 becomes only sharing4.c:38:9: Shared storage shared1 passed as only param: free (shared1) sharing4.c:14:26: Storage shared1 becomes shared sharing4.c:42:12: Only storage only3 not released before return sharing4.c:12:72: Storage only3 becomes only sharing4.c:42:12: Function returns with global globonly3 referencing released storage sharing4.c:21:9: Storage globonly3 released Finished checking --- 12 code warnings, as expected sharing5.c: (in function f) sharing5.c:13:4: Variable only1 used after being released sharing5.c:12:9: Storage only1 released sharing5.c:22:5: Clauses exit with local2 referencing local storage in true branch, shared storage in false branch sharing5.c:21:7: Storage local2 becomes shared sharing5.c:24:9: Shared storage shared passed as only param (local2 aliases shared): free (local2) sharing5.c:5:27: Storage shared becomes shared sharing5.c:27:4: Dereference of possibly null pointer localp: *localp sharing5.c:26:12: Storage localp may become null sharing5.c:32:3: Fresh storage localp (type char **) not released before assignment: localp = &only3 sharing5.c:26:3: Fresh storage localp created sharing5.c:33:2: Only storage only3 not released before return sharing5.c:4:73: Storage only3 becomes only Finished checking --- 6 code warnings, as expected