File tree 8 files changed +18
-16
lines changed
jbmc/regression/jbmc/phi-merge_uninitialized_values
regression/cbmc/phi-merge_uninitialized_values
8 files changed +18
-16
lines changed Original file line number Diff line number Diff line change @@ -5,8 +5,8 @@ activate-multi-line-match
5
5
^EXIT=0$
6
6
^SIGNAL=0$
7
7
--
8
- ^.*:\s+(dynamic_object|new_tmp)[0-9]+(@[0-9]+)?#0 \)
9
- ^.*\?\s+(dynamic_object|new_tmp)[0-9]+(@[0-9]+)? #0\s+:
8
+ \([^\s]+guard[^\s]+ \? [^\s]+#0 : [^\s]+ \)
9
+ \([^\s]+guard[^\s]+ \? [^\s]+ : [^\s]+ #0\)
10
10
--
11
11
These regexes are making sure that a variable of generation 0 dosen't appear in a phi merge, so the below
12
12
statement:
Original file line number Diff line number Diff line change @@ -5,8 +5,8 @@ activate-multi-line-match
5
5
^EXIT=0$
6
6
^SIGNAL=0$
7
7
--
8
- ^.*:\s+(dynamic_object|new_tmp)[0-9]+(@[0-9]+)?#0 \)
9
- ^.*\?\s+(dynamic_object|new_tmp)[0-9]+(@[0-9]+)? #0\s+:
8
+ \([^\s]+guard[^\s]+ \? [^\s]+#0 : [^\s]+ \)
9
+ \([^\s]+guard[^\s]+ \? [^\s]+ : [^\s]+ #0\)
10
10
--
11
11
These regexes are making sure that a variable of generation 0 dosen't appear in a phi merge, so the below
12
12
statement:
Original file line number Diff line number Diff line change @@ -5,8 +5,8 @@ activate-multi-line-match
5
5
^EXIT=0$
6
6
^SIGNAL=0$
7
7
--
8
- ^.*:\s+(dynamic_object|new_tmp)[0-9]+(@[0-9]+)?#0 \)
9
- ^.*\?\s+(dynamic_object|new_tmp)[0-9]+(@[0-9]+)? #0\s+:
8
+ \([^\s]+guard[^\s]+ \? [^\s]+#0 : [^\s]+ \)
9
+ \([^\s]+guard[^\s]+ \? [^\s]+ : [^\s]+ #0\)
10
10
--
11
11
These regexes are making sure that a variable of generation 0 dosen't appear in a phi merge, so the below
12
12
statement:
Original file line number Diff line number Diff line change @@ -5,8 +5,8 @@ activate-multi-line-match
5
5
^EXIT=0$
6
6
^SIGNAL=0$
7
7
--
8
- ^.*:\s+dynamic_object[0-9]+(@[0-9]+)?#0 \)
9
- ^.*\?\s+dynamic_object[0-9]+(@[0-9]+)? #0\s+:
8
+ \([^\s]+guard[^\s]+ \? [^\s]+#0 : [^\s]+ \)
9
+ \([^\s]+guard[^\s]+ \? [^\s]+ : [^\s]+ #0\)
10
10
--
11
11
These regexes are making sure that a variable of generation 0 dosen't appear in a phi merge, so the below
12
12
statement:
Original file line number Diff line number Diff line change @@ -5,8 +5,8 @@ activate-multi-line-match
5
5
^EXIT=0$
6
6
^SIGNAL=0$
7
7
--
8
- ^.*:\s+global(@[0-9]+)?#0 \)
9
- ^.*\?\s+global(@[0-9]+)?#0\s+:
8
+ \([^\s]+guard[^\s]+ \? [^\s]+#0 : [^\s]+ \)
9
+ \([^\s]+guard[^\s]+ \? [^\s]+ : [^\s]+#0\)
10
10
--
11
11
These regexes are making sure that a variable of generation 0 dosen't appear in a phi merge, so the below
12
12
statement:
Original file line number Diff line number Diff line change @@ -5,8 +5,8 @@ activate-multi-line-match
5
5
^EXIT=0$
6
6
^SIGNAL=0$
7
7
--
8
- ^.*:\s+local(@[0-9]+)?#0 \)
9
- ^.*\?\s+local(@[0-9]+)?#0\s+:
8
+ \([^\s]+guard[^\s]+ \? [^\s]+#0 : [^\s]+ \)
9
+ \([^\s]+guard[^\s]+ \? [^\s]+ : [^\s]+#0\)
10
10
--
11
11
These regexes are making sure that a variable of generation 0 dosen't appear in a phi merge, so the below
12
12
statement:
Original file line number Diff line number Diff line change @@ -5,8 +5,8 @@ activate-multi-line-match
5
5
^EXIT=0$
6
6
^SIGNAL=0$
7
7
--
8
- ^.*:\s+staticLocal(@[0-9]+)?#0 \)
9
- ^.*\?\s+staticLocal(@[0-9]+)?#0\s+:
8
+ \([^\s]+guard[^\s]+ \? [^\s]+#0 : [^\s]+ \)
9
+ \([^\s]+guard[^\s]+ \? [^\s]+ : [^\s]+#0\)
10
10
--
11
11
These regexes are making sure that a variable of generation 0 dosen't appear in a phi merge, so the below
12
12
statement:
Original file line number Diff line number Diff line change @@ -476,15 +476,17 @@ static void merge_names(
476
476
// 1. Either guard is false, so we can't follow that branch.
477
477
// 2. Either identifier is of generation zero, and so hasn't been
478
478
// initialized and therefore an invalid target.
479
+
480
+ // These rules only apply to dynamic objects and locals.
479
481
if (dest_state.guard .is_false ())
480
482
rhs = goto_state_rhs;
481
483
else if (goto_state.guard .is_false ())
482
484
rhs = dest_state_rhs;
483
- else if (goto_count == 0 && symbol.value . is_not_nil () )
485
+ else if (goto_count == 0 && ! symbol.is_static_lifetime )
484
486
{
485
487
rhs = dest_state_rhs;
486
488
}
487
- else if (dest_count == 0 && symbol.value . is_not_nil () )
489
+ else if (dest_count == 0 && ! symbol.is_static_lifetime )
488
490
{
489
491
rhs = goto_state_rhs;
490
492
}
You can’t perform that action at this time.
0 commit comments