Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[MBI] Avoid to generate if() with the same then/else branches.
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Wed, 30 Mar 2022 20:12:35 +0000 (22:12 +0200)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Wed, 30 Mar 2022 20:12:35 +0000 (22:12 +0200)
PVS-studio: V523. The 'then' statement is equivalent to the 'else' statement.

teshsuite/smpi/MBI/CollMatchingGenerator.py

index 206baff..5d72ca3 100755 (executable)
@@ -114,6 +114,11 @@ for c1 in gen.coll + gen.icoll + gen.ibarrier:
             replace['longdesc'] = f'All ranks call {c1} twice'
             replace['outcome'] = 'OK'
             replace['errormsg'] = ''
+            replace['change_cond'] = 'rank < nprocs'
+            replace['operation1b'] = ''
+            replace['operation2b'] = ''
+            replace['fini1b'] = ''
+            replace['fini2b'] = ''
             gen.make_file(template, f'CallOrdering_{c1}_{c2}_ok.c', replace)
             # Generate the correct code using the collective once
             replace = patterns.copy()
@@ -122,9 +127,12 @@ for c1 in gen.coll + gen.icoll + gen.ibarrier:
             replace['outcome'] = 'OK'
             replace['errormsg'] = ''
             replace['init2'] = ''
+            replace['change_cond'] = 'rank < nprocs'
             replace['operation2a'] = ''
+            replace['operation1b'] = ''
             replace['operation2b'] = ''
             replace['fini2a'] = ''
+            replace['fini1b'] = ''
             replace['fini2b'] = ''
             replace['free2'] = ''
             gen.make_file(template, f'CallOrdering_{c1}_ok.c', replace)
@@ -135,6 +143,11 @@ for c1 in gen.coll + gen.icoll + gen.ibarrier:
             replace['longdesc'] = f'All ranks call {c1} and then {c2}'
             replace['outcome'] = 'OK'
             replace['errormsg'] = ''
+            replace['change_cond'] = 'rank < nprocs'
+            replace['operation1b'] = ''
+            replace['operation2b'] = ''
+            replace['fini1b'] = ''
+            replace['fini2b'] = ''
             gen.make_file(template, f'CallOrdering_{c1}_{c2}_ok.c', replace)
             # Generate the incorrect ordering with two different collectives
             replace = patterns.copy()
@@ -175,7 +188,7 @@ for c1 in gen.coll + gen.icoll + gen.ibarrier:
     replace['longdesc'] = f'All ranks call {c1}'
     replace['outcome'] = 'OK'
     replace['errormsg'] = ''
-    replace['change_cond'] = 'nprocs<256'
+    replace['change_cond'] = 'rank < nprocs'
     replace['operation1b'] = '' # Remove functions
     replace['operation2b'] = ''
     replace['operation2a'] = ''