Daily Regression Tests

There is a daily cron job that rebuilds OpenAD from the latest source version and runs a set of tests. The last run finished on Tue Nov 24 01:02:59 CST 2009 with result: OK

Manual Regression Tests

The instructions for obtaining and executing the regression tests can be found in the manual [UtkeOUM]. We have sets of regression tests for components (Open64, FortTk,SourceProcessing) and for the entire tool chain. Some of the tests have been constructed to illustrate problems. Consequently these tests are expected to fail, are marked in orange (see below), and may be associated with a bug report.
For the entire tool chain under $OPENADROOT/Regression/testRoundTrip expected test results:
name
issues (small numerical differences are always expected)
tangent-linear
(using BasicBlockPreaccumulation)
adjoint (reverse, using BasicBlockPreaccumulationReverse)
joint
split
ConsFold
ConsFoldSimp0
DoubleArrayIndex
GriewankRerouting
IfStatement_1
IfStatement_2
IfStatement_3
If_Loop_1
If_Loop_2
If_Loop_3
If_Loop_4
If_Loop_5
LoopArrayIndex
Loop_1
Loop_2
Loop_3
Loop_simple_1
Loop_simple_10
Loop_simple_10a
Loop_simple_11
Loop_simple_12 the simple loop assumptions are violated, a more generic solution involves the recomputation by inversion etc.; bug report the simple loop assumptions are violated, a more generic solution involves the recomputation by inversion etc.; bug report
Loop_simple_12a the simple loop assumptions are violated, a more generic solution involves the recomputation by inversion etc.; bug report the simple loop assumptions are violated, a more generic solution involves the recomputation by inversion etc.; bug report
Loop_simple_13
Loop_simple_14
Loop_simple_15
Loop_simple_16
Loop_simple_16a
Loop_simple_16b
Loop_simple_1a
Loop_simple_1b
Loop_simple_1c
Loop_simple_1d
Loop_simple_1e
Loop_simple_1f
Loop_simple_2
Loop_simple_2a
Loop_simple_3
Loop_simple_4
Loop_simple_4a We try to restore j but cannot see that head as top level routine is called with constant for the actual parameter. This is expected behavior. We try to restore j but cannot see that head as top level routine is called with constant for the actual parameter. This is expected behavior.
Loop_simple_4b the simple loop assumptions are violated, a more generic solution involves the recomputation by inversion etc.; bug report the simple loop assumptions are violated, a more generic solution involves the recomputation by inversion etc.; bug report
Loop_simple_4c
Loop_simple_5
Loop_simple_6
Loop_simple_7
Loop_simple_7a
Loop_simple_8
Loop_simple_9
Loop_simple_9a the simple loop assumptions are violated, a more generic solution involves the recomputation by inversion etc.; bug report the simple loop assumptions are violated, a more generic solution involves the recomputation by inversion etc.; bug report
Loop_simple_9b the simple loop assumptions are violated, a more generic solution involves the recomputation by inversion etc.; bug report the simple loop assumptions are violated, a more generic solution involves the recomputation by inversion etc.; bug report
NestedIf
NestedIfLoop
NestedLoopIf
NestedLoops
ORNL_toy
RoehFlux
RoehFlux_MemOps
Select_1
Select_2 control flow unparsing problem; bug report control flow unparsing problem; bug report
Select_3
Select_4 unstructured control flow handling needs explicit replacement for early return, see bug report unstructured control flow handling needs explicit replacement for early return, see bug report
Select_5 unstructured control flow handling needs explicit replacement for early return, see bug report unstructured control flow handling needs explicit replacement for early return, see bug report
SeqOfIfs
SeqOfLoops
Unstructured0
Unstructured1
Unstructured2
activeLoopControl
allocatedFunction local deallocation not covered by reverse mode local deallocation not covered by reverse mode
argArrayIndexOverwrite0 needs redesigned push/pop logic to properly save the overwritten index value needs redesigned push/pop logic to properly save the overwritten index value
argArrayIndexOverwrite1 needs redesigned push/pop logic to properly save the overwritten index value needs redesigned push/pop logic to properly save the overwritten index value
argArrayIndexOverwrite2 needs redesigned push/pop logic to properly save the overwritten index value needs redesigned push/pop logic to properly save the overwritten index value
argArrayIndexOverwrite3 needs redesigned push/pop logic to properly save the overwritten index value needs redesigned push/pop logic to properly save the overwritten index value
argArrayIndexOverwrite4
argArrayIndexOverwrite5 needs redesigned push/pop logic to properly save the overwritten index value needs redesigned push/pop logic to properly save the overwritten index value
argArrayIndexOverwrite6 needs redesigned push/pop logic to properly save the overwritten index value needs redesigned push/pop logic to properly save the overwritten index value
argArrayIndexOverwrite7
argumentArrayIndex
argumentArrayIndex2
argumentArrayIndex3
argumentArrayIndex4
argumentConversionSaveIndex
argumentConversionSaveIndex2
argumentConversion_1
argumentConversion_2
argumentConversion_3
argumentConversion_4
argumentConversion_4a
argumentConversion_4b
argumentConversion_4c
argumentConversion_4d
argumentConversion_4e
argumentConversion_5
argumentConversion_indexOverwrite needs redesigned push/pop logic to properly save the overwritten index value needs redesigned push/pop logic to properly save the overwritten index value
arrayBoundImplicit
arrayBoundImplicit2 implicit local deallocation not covered by reverse mode
arrayBoundVar
bat
box_timestep
boxmodel
bratu
cancellation
cast1
compressible1
constPrec
constant0
constant1
conversion1
daerfj
dfdcfj
dfdcfj_MemOps
directDependency1
directDependency2
directDependency3
duud1
duud2
duudChains1
duudChains2
externalCalls1
externalCalls2
externalCalls3
float_intrinsic
gcmAssignTapeDuplication
gcmBit1
globalActiveSideEffect
globalActive_1
globalActive_2
globalActive_3
globalActive_4
globalActive_5
globalActive_6 R1: the analysis doesn't recognize the module variables as active, bug report R1: the analysis doesn't recognize the module variables as active, bug report R1: the analysis doesn't recognize the module variables as active, bug report
globalActive_7
globalActive_8
intMaxVal
lighthouse
lion
log10_f_arg
mini1
nestedFunc0
nestedFunc1
nestedFunc2
nested_calls_1
nested_calls_2
nested_calls_3
nested_calls_4
nested_calls_5
nested_dfdcfj
optParm1 checkpointing optional params bug report
overlappingIntermediate
overlappingLHS
passiveMix1
passiveStatement
passiveSubroutine
presentFunction
readWrite1 format failure for read of active variable, bug report format failure for read of active variable, bug report format failure for read of active variable, bug report
readWrite2 format failure for read of active variable, bug report format failure for read of active variable, bug report format failure for read of active variable, bug report
scalarToArray broadcast scalar to array not recognized as special op broadcast scalar to array not recognized as special op broadcast scalar to array not recognized as special op
sequenceSpanningPush0
sideEffect_1
sideEffect_2
sideEffect_3
sideEffect_4
sideEffect_5
sideEffect_6
signIntrinsic
simple0
simple1
simple2
simple3
sliceVsSingle
speelpenning
tanh_f_arg
todd
todd1
transpose vector op changes; ticket vector op changes; ticket vector op changes; ticket
u_def_struct_1 fix up structure access bug report fix up structure access bug report fix up structure access bug report
u_def_struct_2 fix up structure access bug report fix up structure access bug report fix up structure access bug report

For Open64 under $OPENADROOT/Open64/osprey1.0/tests expected test results:
name result
allocatedArray.f90 Open64 unparse error - tests for variable being 'referenced' (wn2f_stmt.cxx:1293) but wrongly concludes it isn't and skips the ST entry.
allocatedArray1.f90
arrays3.f90 Open64 unparse error with duplication of temporary variables
assoc.f
atmosphere.f unparser misinterprets hidden "len" argument of contained function as the actual function argument MILES, then MILES ends up being undeclared and "len" is declared in its place
carray.f
caseMultChoice.f90
caseRange.f90
charArrSlice.f90 unparser drops the "(2:4)" from the original "sa(2)(2:4)" and the test fails
charArrSlice1.f90 unparser drops the "(3:3)" from the original "sa(2)(3:3)" and the test fails
charint.f
comind.f
common1.f90
concat.f90 unparser drops the declaration of "c" in function "id"
constants.f
controlflow1.f90
controlflow_loop2.f90
data.f90
data2.f
divide.f
dividemain.f
doDown.f90
doNE.f90
doUp.f90
doVar.f90
emptyModule.f90
emptyModuleReordered.f90
emptyOnlyClause.f90
equivalence.f90
equivalence2.f90
equivalence3.f90
equivalence3a.f90
equivalence4.f90
exitSimpler.f90
fact.f
fftwrap.f
inout.f
interf.f90
interfaceDimExpr.f90
logical.f90
mainTest.f90
morechar.f
multRename.f90
multRename1.f90
multRename2.f90 the front end drops information about the public and private qualifiers and does not distinguish in the symbol table reference between A1::foo and B1::foo; see bug report.
multRename3.f90
multUseOnly.f90
nonEmptyModule.f90
obsolArithIf.f90
optParm1.f90
pcomplex.f
pragmaPlacement.f90
present.f
privateQualifier.f90 the front end drops information about the public and private qualifiers (for the interface and the module procedure, not for the module variables though) and does not distinguish in the symbol table reference between A1::foo and B1::foo; the main program all names resolved to just foo; there is no simple fix to the issue
privateQualifier2.f90
recFuncRes.f90 whirl2f drops the result clause of the recursive function. While ifort accepts that it is violating the standard and accordingly fails e.g. with gfortran and the NAG compiler; see bug report
separateFormat.f90
shapeReshape.f90
singleQuotePair.f90 the string '''bla''' is translated into double quoted "bla" when it should be single quoted 'bla'
singleRename1.f90
sliceVsSingle.f90
srAsParam.f90
static.f90
substring.f90
sum.f90
sumDble.f90
sumDbleSep.f90
sumReal.f90 parser logic does not propagate REAL as an elemental intrinsic, will require fix similar to changeset 819
target.f
transfer.f90
transpose.f90
where.f90 incorrect translation (whole array section), see bug report

For OpenADFortTk (translation between XAIF and whirl) under $OPENADROOT/OpenADFortTk/Regression expected test results:
name result
PostProcess_ComBlock.f90
PostProcess_ComBlock1.f90
PostProcess_ComBlock2.f90
PostProcess_ComBlock3.f90
PostProcess_activeInterface.f90
PostProcess_activeInterface2.f90
PostProcess_activeInterface3.f90
PostProcess_allocatedActive.f90
PostProcess_indexArray.f90
PostProcess_optParm1.f90
PostProcess_print1.f90
PostProcess_privateQualifier2.f
PostProcess_separateFormat.f90 compiler bug, not OpenAD problem: the syntax of the postprocessed output is ok: string constant with a line break inside in fixed format; ifort does not parse it correctly and issues an error; see ifort discussion thread
UnStruct_controlflow_loop1.f90
UnStruct_controlflow_loop1a.f90
UnStruct_controlflow_loop1b.f90
UnStruct_controlflow_loop1c.f90
UnStruct_controlflow_loop1d.f90
UnStruct_controlflow_loop2.f90
UnStruct_controlflow_loop4.f90 incorrect back translation in xaif2whirl, see bug report
allocatedArray1.f90
arrayPointerShape.f90
arrays1.f90
arrays2.f90
arrays2a.f90
arrays3.f90
arrays_dimensions1.f90
caseGoto.f90
constants1.f90
controlflow1.f90
controlflow_if1.f90
controlflow_if2.f90
controlflow_if3.f90
controlflow_loop1a.f90
controlflow_loop1b.f90
controlflow_loop1c.f90
controlflow_loop3.f90
controlflow_switch1.f90 incorrect backtranslation of select - case construct; see bug report.
doDown.f90
doNE.f90
doUp.f90
doVar.f90
doWhile.f90
doubleComplex.f90
doubleConvA.f90
doubleConvS.f90
elementalExp.f90
elementalExpComp.f90
elementalExpM.f90
elementalExpMV.f90
elementalMultM.f90
emptyModule.f90
exit.f90
exitSimpler.f90
exitUnqualified.f90
functions1.f90 uncanonicalized function call; whirl2xaif will throw an exception for this reason; need to change Regression test setup to run canonicalization first;
functions2.f90 open64 drops the result clause on the recursive function, see bug report
functions_nested1.f90
functions_nested2.f90 uncanonicalized function call; whirl2xaif will throw an exception for this reason; need to change Regression test setup to run canonicalization first;
functions_nested3.f90 uncanonicalized function call; whirl2xaif will throw an exception for this reason; need to change Regression test setup to run canonicalization first;
implicitArrayBound.f90
inline1.f90
inline2.f90
inline3.f90
intMaxVal.f90
interfAssumedShapeArr.f90
intrinsics1.f90
intrinsics2.f90
logical.f90
module_with_pragmas.f90
multRename1.f90
multRename2.f90 the front end drops information about the public and private qualifiers and does not distinguish in the symbol table reference between A1::foo and B1::foo; see bug report.
multRename3.f90
multUseOnly.f90
rType.f90
rTypeElem.f90
rTypeS.f90
rTypeV.f90
scalars1.f90
scalars2.f90
scalars3.f90
scalars4.f90
scalars5.f90
scoping1.f90
selExit.f90
selGoto.f90
sideEffect_6.f90
simpleExpComp.f90
singleVariable.f90 stack corruption possibly caused in the ananlysis phase; see bug report
sliceVsSingle.f90
stringLen.f90
stringSliceComp.f90
stringSliceComp2.f90
types_derived1.f90 OpenAnalysis assertion fails in mayOverlap, see bug report
types_derived2.f90 OpenAnalysis assertion fails in mayOverlap, see bug report
types_derived3.f90 OpenAnalysis assertion fails in mayOverlap, see bug report
types_kind1.f90
useOnly.f90
useParam.f90
useParamOnly.f90

For SourceProcessing (canonicalization and postprocessing) under $OPENADROOT/OpenADFortTk/tools/SourceProcessing/Regression expected test results:
name result
UnStruct_controlflow_loop2.free.f90
UnStruct_controlflow_loop4.free.f90
alogTest.free.f90
arrays1.free.f90
arrays2.free.f90
arrays3.free.f90
arrays_dimensions1.free.f90
boxmodelTypo.fixed.f
bracketing.free.f90
comment.free.f90
comment1.free.f90
constants.fixed.f
constants1.free.f90
divide.fixed.f
dividemain.fixed.f
ellipsisFunCall.free.f90
functionComment.free.f90
hoistFuncCall.free.f90
ifNonThen.free.f90
interfaceSymtab.free.f90
longDataStatementLine.free.f90
maxDouble.free.f90
maxSpec.f90
maxSpec.free.f90
moduleContainsPublicFunction.free.f90
multipleModuleProcedures.free.f90
privateModuleDecl.free.f90
scanStringConst.free.f90
target.fixed.f
writeStmt.free.f90