diff --git a/src/plugins/alias/tests/offsets/oracle/nested1.res.oracle b/src/plugins/alias/tests/offsets/oracle/nested1.res.oracle index e26a96622ddd53633ec3d0978ac43635f1dc1e4f..c5ee52ba984709aa7ae197c147b0a8fdd6eaabb8 100644 --- a/src/plugins/alias/tests/offsets/oracle/nested1.res.oracle +++ b/src/plugins/alias/tests/offsets/oracle/nested1.res.oracle @@ -77,31 +77,31 @@ [alias:unsafe-cast] nested1.c:47: Warning: unsafe cast from st_1_t * to struct struct_1_t * [alias] May-aliases after instruction z1->s = (struct struct_1_t *)tab_y[0]; are - {z1->s, tab_y[0]} + {z1->s, tab_y[0..]} [alias] analysing instruction: z2->s = (struct struct_1_t *)tab_y[1]; [alias:unsafe-cast] nested1.c:48: Warning: unsafe cast from st_1_t * to struct struct_1_t * [alias] May-aliases after instruction z2->s = (struct struct_1_t *)tab_y[1]; are - {z1->s, z2->s, tab_y[0]} + {z1->s, z2->s, tab_y[0..]} [alias] analysing instruction: z1->c = a; [alias] May-aliases after instruction z1->c = a; are - {z1->s, z2->s, tab_y[0]} {z1->c, a} + {z1->s, z2->s, tab_y[0..]} {z1->c, a} [alias] analysing instruction: z2->c = b; [alias] May-aliases after instruction z2->c = b; are - {z1->s, z2->s, tab_y[0]} {z1->c, a} {z2->c, b} + {z1->s, z2->s, tab_y[0..]} {z1->c, a} {z2->c, b} [alias] analysing instruction: t->t = (struct struct_2_t *)z1; [alias:unsafe-cast] nested1.c:51: Warning: unsafe cast from st_2_t * to struct struct_2_t * [alias] May-aliases after instruction t->t = (struct struct_2_t *)z1; are - {z1->s, z2->s, tab_y[0]} {t->t, z1} {z1->c, a} {z2->c, b} + {z1->s, z2->s, tab_y[0..]} {t->t, z1} {z1->c, a} {z2->c, b} [alias] analysing instruction: t->d = a; [alias] May-aliases after instruction t->d = a; are - {z1->s, z2->s, tab_y[0]} {t->t, z1} {z1->c, t->d, a} {z2->c, b} + {z1->s, z2->s, tab_y[0..]} {t->t, z1} {z1->c, t->d, a} {z2->c, b} [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are - {z1->s, z2->s, tab_y[0]} {t->t, z1} {z1->c, t->d, a} {z2->c, b} + {z1->s, z2->s, tab_y[0..]} {t->t, z1} {z1->c, t->d, a} {z2->c, b} [alias] May-aliases at the end of function main: - {z1->s, z2->s, tab_y[0]} {t->t, z1} {z1->c, t->d, a} {z2->c, b} + {z1->s, z2->s, tab_y[0..]} {t->t, z1} {z1->c, t->d, a} {z2->c, b} [alias] analysing function: malloc [alias] May-aliases at the end of function malloc: ⊥ [alias] analysing function: mblen diff --git a/src/plugins/alias/tests/real_world/oracle/example1.res.oracle b/src/plugins/alias/tests/real_world/oracle/example1.res.oracle index 2184e66ef66ccd9e68cdee8db84944dbaa773d5f..466fd5543e5bcb45fb418334dd5260eac5d45efc 100644 --- a/src/plugins/alias/tests/real_world/oracle/example1.res.oracle +++ b/src/plugins/alias/tests/real_world/oracle/example1.res.oracle @@ -96,25 +96,25 @@ idata = (double *)malloc((unsigned long)10 * sizeof(double)); are {x, tmp} [alias] analysing instruction: idata = tmp->t2[*(tmp->n2)]; [alias] May-aliases after instruction idata = tmp->t2[*(tmp->n2)]; are - {x, tmp} {tmp->t2[0], idata} + {x, tmp} {tmp->t2[0..], idata} [alias] analysing instruction: odata = tmp->t1[*(tmp->n1)]; [alias] May-aliases after instruction odata = tmp->t1[*(tmp->n1)]; are - {x, tmp} {tmp->t2[0], idata} {tmp->t1[0], odata} + {x, tmp} {tmp->t2[0..], idata} {tmp->t1[0..], odata} [alias] analysing instruction: idx = 0; [alias] May-aliases after instruction idx = 0; are - {x, tmp} {tmp->t2[0], idata} {tmp->t1[0], odata} + {x, tmp} {tmp->t2[0..], idata} {tmp->t1[0..], odata} [alias] analysing instruction: tmp_1 = sin(*(idata + idx)); [alias] analysing function: sin [alias] May-aliases at the end of function sin: ⊥ [alias:undefined:fn] example1.c:45: Warning: function sin has no definition [alias] May-aliases after instruction tmp_1 = sin(*(idata + idx)); are - {x, tmp} {tmp->t2[0], idata} {tmp->t1[0], odata} + {x, tmp} {tmp->t2[0..], idata} {tmp->t1[0..], odata} [alias] analysing instruction: *(odata + idx) = 0.5 * tmp_1; [alias] May-aliases after instruction *(odata + idx) = 0.5 * tmp_1; are - {x, tmp} {tmp->t2[0], idata} {tmp->t1[0], odata} + {x, tmp} {tmp->t2[0..], idata} {tmp->t1[0..], odata} [alias] analysing instruction: idx ++; [alias] May-aliases after instruction idx ++; are - {x, tmp} {tmp->t2[0], idata} {tmp->t1[0], odata} + {x, tmp} {tmp->t2[0..], idata} {tmp->t1[0..], odata} [alias] analysing instruction: swap(tmp->n1); [alias] analysing function: swap [alias] analysing instruction: *n = 0; @@ -123,13 +123,13 @@ [alias] May-aliases after instruction (*n) ++; are <none> [alias] May-aliases at the end of function swap: <none> [alias] May-aliases after instruction swap(tmp->n1); are - {x, tmp} {tmp->t2[0], idata} {tmp->t1[0], odata} + {x, tmp} {tmp->t2[0..], idata} {tmp->t1[0..], odata} [alias] analysing instruction: idata = tmp->t2[*(tmp->n2)]; [alias] May-aliases after instruction idata = tmp->t2[*(tmp->n2)]; are - {x, tmp} {tmp->t2[0], idata} {tmp->t1[0], odata} + {x, tmp} {tmp->t2[0..], idata} {tmp->t1[0..], odata} [alias] analysing instruction: odata = tmp->t1[*(tmp->n1)]; [alias] May-aliases after instruction odata = tmp->t1[*(tmp->n1)]; are - {x, tmp} {tmp->t2[0], idata} {tmp->t1[0], odata} + {x, tmp} {tmp->t2[0..], idata} {tmp->t1[0..], odata} [alias:no-return] example1.c:29: Warning: function f1 does not return; analysis may be unsound [alias] May-aliases at the end of function f1: <none> @@ -142,30 +142,30 @@ idata = (double *)malloc((unsigned long)10 * sizeof(double)); are {x, tmp} [alias] analysing instruction: idata = tmp->t1[*(tmp->n1)]; [alias] May-aliases after instruction idata = tmp->t1[*(tmp->n1)]; are - {x, tmp} {tmp->t1[0], idata} + {x, tmp} {tmp->t1[0..], idata} [alias] analysing instruction: odata = tmp->t2[*(tmp->n2)]; [alias] May-aliases after instruction odata = tmp->t2[*(tmp->n2)]; are - {x, tmp} {tmp->t1[0], idata} {tmp->t2[0], odata} + {x, tmp} {tmp->t1[0..], idata} {tmp->t2[0..], odata} [alias] analysing instruction: idx = 0; [alias] May-aliases after instruction idx = 0; are - {x, tmp} {tmp->t1[0], idata} {tmp->t2[0], odata} + {x, tmp} {tmp->t1[0..], idata} {tmp->t2[0..], odata} [alias] analysing instruction: *(odata + idx) = (double)3 * *(idata + idx) + (double)1; [alias] May-aliases after instruction *(odata + idx) = (double)3 * *(idata + idx) + (double)1; are - {x, tmp} {tmp->t1[0], idata} {tmp->t2[0], odata} + {x, tmp} {tmp->t1[0..], idata} {tmp->t2[0..], odata} [alias] analysing instruction: idx ++; [alias] May-aliases after instruction idx ++; are - {x, tmp} {tmp->t1[0], idata} {tmp->t2[0], odata} + {x, tmp} {tmp->t1[0..], idata} {tmp->t2[0..], odata} [alias] analysing instruction: swap(tmp->n2); [alias] May-aliases after instruction swap(tmp->n2); are - {x, tmp} {tmp->t1[0], idata} {tmp->t2[0], odata} + {x, tmp} {tmp->t1[0..], idata} {tmp->t2[0..], odata} [alias] analysing instruction: idata = tmp->t1[*(tmp->n1)]; [alias] May-aliases after instruction idata = tmp->t1[*(tmp->n1)]; are - {x, tmp} {tmp->t1[0], idata} {tmp->t2[0], odata} + {x, tmp} {tmp->t1[0..], idata} {tmp->t2[0..], odata} [alias] analysing instruction: odata = tmp->t2[*(tmp->n2)]; [alias] May-aliases after instruction odata = tmp->t2[*(tmp->n2)]; are - {x, tmp} {tmp->t1[0], idata} {tmp->t2[0], odata} + {x, tmp} {tmp->t1[0..], idata} {tmp->t2[0..], odata} [alias:no-return] example1.c:53: Warning: function f2 does not return; analysis may be unsound [alias] May-aliases at the end of function f2: <none> @@ -274,36 +274,41 @@ [alias] May-aliases after instruction i = 0; are <none> [alias] analysing instruction: b->t1[i] = a->t1[i]; [alias] May-aliases after instruction b->t1[i] = a->t1[i]; are - {a->t1[0], b->t1[0]} + {a->t1[0..], b->t1[0..]} [alias] analysing instruction: b->t2[i] = a->t2[i]; [alias] May-aliases after instruction b->t2[i] = a->t2[i]; are - {a->t1[0], b->t1[0]} {a->t2[0], b->t2[0]} + {a->t1[0..], b->t1[0..]} {a->t2[0..], b->t2[0..]} [alias] analysing instruction: i ++; [alias] May-aliases after instruction i ++; are - {a->t1[0], b->t1[0]} {a->t2[0], b->t2[0]} + {a->t1[0..], b->t1[0..]} {a->t2[0..], b->t2[0..]} [alias] analysing instruction: b->t1[i] = a->t1[i]; [alias] May-aliases after instruction b->t1[i] = a->t1[i]; are - {a->t1[0], b->t1[0]} {a->t2[0], b->t2[0]} + {a->t1[0..], b->t1[0..]} {a->t2[0..], b->t2[0..]} [alias] analysing instruction: b->t2[i] = a->t2[i]; [alias] May-aliases after instruction b->t2[i] = a->t2[i]; are - {a->t1[0], b->t1[0]} {a->t2[0], b->t2[0]} + {a->t1[0..], b->t1[0..]} {a->t2[0..], b->t2[0..]} [alias] analysing instruction: b->n1 = a->n1; [alias] May-aliases after instruction b->n1 = a->n1; are - {a->t1[0], b->t1[0]} {a->t2[0], b->t2[0]} {a->n1, b->n1} + {a->t1[0..], b->t1[0..]} {a->t2[0..], b->t2[0..]} {a->n1, b->n1} [alias] analysing instruction: b->n2 = a->n2; [alias] May-aliases after instruction b->n2 = a->n2; are - {a->t1[0], b->t1[0]} {a->t2[0], b->t2[0]} {a->n1, b->n1} {a->n2, b->n2} + {a->t1[0..], b->t1[0..]} {a->t2[0..], b->t2[0..]} {a->n1, b->n1} + {a->n2, b->n2} [alias] analysing instruction: f1(a); [alias] May-aliases after instruction f1(a); are - {a->t1[0], b->t1[0]} {a->t2[0], b->t2[0]} {a->n1, b->n1} {a->n2, b->n2} + {a->t1[0..], b->t1[0..]} {a->t2[0..], b->t2[0..]} {a->n1, b->n1} + {a->n2, b->n2} [alias] analysing instruction: f2(b); [alias] May-aliases after instruction f2(b); are - {a->t1[0], b->t1[0]} {a->t2[0], b->t2[0]} {a->n1, b->n1} {a->n2, b->n2} + {a->t1[0..], b->t1[0..]} {a->t2[0..], b->t2[0..]} {a->n1, b->n1} + {a->n2, b->n2} [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are - {a->t1[0], b->t1[0]} {a->t2[0], b->t2[0]} {a->n1, b->n1} {a->n2, b->n2} + {a->t1[0..], b->t1[0..]} {a->t2[0..], b->t2[0..]} {a->n1, b->n1} + {a->n2, b->n2} [alias] May-aliases at the end of function main: - {a->t1[0], b->t1[0]} {a->t2[0], b->t2[0]} {a->n1, b->n1} {a->n2, b->n2} + {a->t1[0..], b->t1[0..]} {a->t2[0..], b->t2[0..]} {a->n1, b->n1} + {a->n2, b->n2} [alias] analysing function: malloc [alias] May-aliases at the end of function malloc: ⊥ [alias] analysing function: mblen diff --git a/src/plugins/alias/tests/real_world/oracle/example2.res.oracle b/src/plugins/alias/tests/real_world/oracle/example2.res.oracle index 21f8829b4dc8c670f933cedca6281dd899cd434f..d4791a4c79009721c7e4d2641777be15812cab88 100644 --- a/src/plugins/alias/tests/real_world/oracle/example2.res.oracle +++ b/src/plugins/alias/tests/real_world/oracle/example2.res.oracle @@ -98,25 +98,25 @@ [alias] May-aliases after instruction int i = 0; are {x, tmp} [alias] analysing instruction: idata = tmp->t2[*(tmp->n2)]; [alias] May-aliases after instruction idata = tmp->t2[*(tmp->n2)]; are - {x, tmp} {tmp->t2[0], idata} + {x, tmp} {tmp->t2[0..], idata} [alias] analysing instruction: odata = tmp->t1[*(tmp->n1)]; [alias] May-aliases after instruction odata = tmp->t1[*(tmp->n1)]; are - {x, tmp} {tmp->t2[0], idata} {tmp->t1[0], odata} + {x, tmp} {tmp->t2[0..], idata} {tmp->t1[0..], odata} [alias] analysing instruction: idx = 0; [alias] May-aliases after instruction idx = 0; are - {x, tmp} {tmp->t2[0], idata} {tmp->t1[0], odata} + {x, tmp} {tmp->t2[0..], idata} {tmp->t1[0..], odata} [alias] analysing instruction: tmp_1 = sin(*(idata + idx)); [alias] analysing function: sin [alias] May-aliases at the end of function sin: ⊥ [alias:undefined:fn] example2.c:45: Warning: function sin has no definition [alias] May-aliases after instruction tmp_1 = sin(*(idata + idx)); are - {x, tmp} {tmp->t2[0], idata} {tmp->t1[0], odata} + {x, tmp} {tmp->t2[0..], idata} {tmp->t1[0..], odata} [alias] analysing instruction: *(odata + idx) = 0.5 * tmp_1; [alias] May-aliases after instruction *(odata + idx) = 0.5 * tmp_1; are - {x, tmp} {tmp->t2[0], idata} {tmp->t1[0], odata} + {x, tmp} {tmp->t2[0..], idata} {tmp->t1[0..], odata} [alias] analysing instruction: idx ++; [alias] May-aliases after instruction idx ++; are - {x, tmp} {tmp->t2[0], idata} {tmp->t1[0], odata} + {x, tmp} {tmp->t2[0..], idata} {tmp->t1[0..], odata} [alias] analysing instruction: swap(tmp->n1); [alias] analysing function: swap [alias] analysing instruction: *n = 0; @@ -125,21 +125,21 @@ [alias] May-aliases after instruction (*n) ++; are <none> [alias] May-aliases at the end of function swap: <none> [alias] May-aliases after instruction swap(tmp->n1); are - {x, tmp} {tmp->t2[0], idata} {tmp->t1[0], odata} + {x, tmp} {tmp->t2[0..], idata} {tmp->t1[0..], odata} [alias] analysing instruction: i ++; [alias] May-aliases after instruction i ++; are - {x, tmp} {tmp->t2[0], idata} {tmp->t1[0], odata} + {x, tmp} {tmp->t2[0..], idata} {tmp->t1[0..], odata} [alias] analysing instruction: idata = tmp->t2[*(tmp->n2)]; [alias] May-aliases after instruction idata = tmp->t2[*(tmp->n2)]; are - {x, tmp} {tmp->t2[0], idata} {tmp->t1[0], odata} + {x, tmp} {tmp->t2[0..], idata} {tmp->t1[0..], odata} [alias] analysing instruction: odata = tmp->t1[*(tmp->n1)]; [alias] May-aliases after instruction odata = tmp->t1[*(tmp->n1)]; are - {x, tmp} {tmp->t2[0], idata} {tmp->t1[0], odata} + {x, tmp} {tmp->t2[0..], idata} {tmp->t1[0..], odata} [alias] analysing instruction: __retres = (void *)0; [alias] May-aliases after instruction __retres = (void *)0; are - {x, tmp} {tmp->t2[0], idata} {tmp->t1[0], odata} + {x, tmp} {tmp->t2[0..], idata} {tmp->t1[0..], odata} [alias] May-aliases at the end of function f1: - {x, tmp} {tmp->t2[0], idata} {tmp->t1[0], odata} + {x, tmp} {tmp->t2[0..], idata} {tmp->t1[0..], odata} [alias] analysing function: f2 [alias] analysing instruction: ty *tmp = x; [alias] May-aliases after instruction ty *tmp = x; are {x, tmp} @@ -151,38 +151,38 @@ [alias] May-aliases after instruction int i = 0; are {x, tmp} [alias] analysing instruction: idata = tmp->t1[*(tmp->n1)]; [alias] May-aliases after instruction idata = tmp->t1[*(tmp->n1)]; are - {x, tmp} {tmp->t1[0], idata} + {x, tmp} {tmp->t1[0..], idata} [alias] analysing instruction: odata = tmp->t2[*(tmp->n2)]; [alias] May-aliases after instruction odata = tmp->t2[*(tmp->n2)]; are - {x, tmp} {tmp->t1[0], idata} {tmp->t2[0], odata} + {x, tmp} {tmp->t1[0..], idata} {tmp->t2[0..], odata} [alias] analysing instruction: idx = 0; [alias] May-aliases after instruction idx = 0; are - {x, tmp} {tmp->t1[0], idata} {tmp->t2[0], odata} + {x, tmp} {tmp->t1[0..], idata} {tmp->t2[0..], odata} [alias] analysing instruction: *(odata + idx) = (double)3 * *(idata + idx) + (double)1; [alias] May-aliases after instruction *(odata + idx) = (double)3 * *(idata + idx) + (double)1; are - {x, tmp} {tmp->t1[0], idata} {tmp->t2[0], odata} + {x, tmp} {tmp->t1[0..], idata} {tmp->t2[0..], odata} [alias] analysing instruction: idx ++; [alias] May-aliases after instruction idx ++; are - {x, tmp} {tmp->t1[0], idata} {tmp->t2[0], odata} + {x, tmp} {tmp->t1[0..], idata} {tmp->t2[0..], odata} [alias] analysing instruction: swap(tmp->n2); [alias] May-aliases after instruction swap(tmp->n2); are - {x, tmp} {tmp->t1[0], idata} {tmp->t2[0], odata} + {x, tmp} {tmp->t1[0..], idata} {tmp->t2[0..], odata} [alias] analysing instruction: i ++; [alias] May-aliases after instruction i ++; are - {x, tmp} {tmp->t1[0], idata} {tmp->t2[0], odata} + {x, tmp} {tmp->t1[0..], idata} {tmp->t2[0..], odata} [alias] analysing instruction: idata = tmp->t1[*(tmp->n1)]; [alias] May-aliases after instruction idata = tmp->t1[*(tmp->n1)]; are - {x, tmp} {tmp->t1[0], idata} {tmp->t2[0], odata} + {x, tmp} {tmp->t1[0..], idata} {tmp->t2[0..], odata} [alias] analysing instruction: odata = tmp->t2[*(tmp->n2)]; [alias] May-aliases after instruction odata = tmp->t2[*(tmp->n2)]; are - {x, tmp} {tmp->t1[0], idata} {tmp->t2[0], odata} + {x, tmp} {tmp->t1[0..], idata} {tmp->t2[0..], odata} [alias] analysing instruction: __retres = (void *)0; [alias] May-aliases after instruction __retres = (void *)0; are - {x, tmp} {tmp->t1[0], idata} {tmp->t2[0], odata} + {x, tmp} {tmp->t1[0..], idata} {tmp->t2[0..], odata} [alias] May-aliases at the end of function f2: - {x, tmp} {tmp->t1[0], idata} {tmp->t2[0], odata} + {x, tmp} {tmp->t1[0..], idata} {tmp->t2[0..], odata} [alias] analysing function: fabs [alias] May-aliases at the end of function fabs: ⊥ [alias] analysing function: fabsf @@ -288,36 +288,41 @@ [alias] May-aliases after instruction i = 0; are <none> [alias] analysing instruction: b->t1[i] = a->t1[i]; [alias] May-aliases after instruction b->t1[i] = a->t1[i]; are - {a->t1[0], b->t1[0]} + {a->t1[0..], b->t1[0..]} [alias] analysing instruction: b->t2[i] = a->t2[i]; [alias] May-aliases after instruction b->t2[i] = a->t2[i]; are - {a->t1[0], b->t1[0]} {a->t2[0], b->t2[0]} + {a->t1[0..], b->t1[0..]} {a->t2[0..], b->t2[0..]} [alias] analysing instruction: i ++; [alias] May-aliases after instruction i ++; are - {a->t1[0], b->t1[0]} {a->t2[0], b->t2[0]} + {a->t1[0..], b->t1[0..]} {a->t2[0..], b->t2[0..]} [alias] analysing instruction: b->t1[i] = a->t1[i]; [alias] May-aliases after instruction b->t1[i] = a->t1[i]; are - {a->t1[0], b->t1[0]} {a->t2[0], b->t2[0]} + {a->t1[0..], b->t1[0..]} {a->t2[0..], b->t2[0..]} [alias] analysing instruction: b->t2[i] = a->t2[i]; [alias] May-aliases after instruction b->t2[i] = a->t2[i]; are - {a->t1[0], b->t1[0]} {a->t2[0], b->t2[0]} + {a->t1[0..], b->t1[0..]} {a->t2[0..], b->t2[0..]} [alias] analysing instruction: b->n1 = a->n1; [alias] May-aliases after instruction b->n1 = a->n1; are - {a->t1[0], b->t1[0]} {a->t2[0], b->t2[0]} {a->n1, b->n1} + {a->t1[0..], b->t1[0..]} {a->t2[0..], b->t2[0..]} {a->n1, b->n1} [alias] analysing instruction: b->n2 = a->n2; [alias] May-aliases after instruction b->n2 = a->n2; are - {a->t1[0], b->t1[0]} {a->t2[0], b->t2[0]} {a->n1, b->n1} {a->n2, b->n2} + {a->t1[0..], b->t1[0..]} {a->t2[0..], b->t2[0..]} {a->n1, b->n1} + {a->n2, b->n2} [alias] analysing instruction: f1(a); [alias] May-aliases after instruction f1(a); are - {a->t1[0], b->t1[0]} {a->t2[0], b->t2[0]} {a->n1, b->n1} {a->n2, b->n2} + {a->t1[0..], b->t1[0..]} {a->t2[0..], b->t2[0..]} {a->n1, b->n1} + {a->n2, b->n2} [alias] analysing instruction: f2(b); [alias] May-aliases after instruction f2(b); are - {a->t1[0], b->t1[0]} {a->t2[0], b->t2[0]} {a->n1, b->n1} {a->n2, b->n2} + {a->t1[0..], b->t1[0..]} {a->t2[0..], b->t2[0..]} {a->n1, b->n1} + {a->n2, b->n2} [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are - {a->t1[0], b->t1[0]} {a->t2[0], b->t2[0]} {a->n1, b->n1} {a->n2, b->n2} + {a->t1[0..], b->t1[0..]} {a->t2[0..], b->t2[0..]} {a->n1, b->n1} + {a->n2, b->n2} [alias] May-aliases at the end of function main: - {a->t1[0], b->t1[0]} {a->t2[0], b->t2[0]} {a->n1, b->n1} {a->n2, b->n2} + {a->t1[0..], b->t1[0..]} {a->t2[0..], b->t2[0..]} {a->n1, b->n1} + {a->n2, b->n2} [alias] analysing function: malloc [alias] May-aliases at the end of function malloc: ⊥ [alias] analysing function: mblen