A program written to fault cannot be compared at -O2
The two new fault-by-design programs came into the corpus with the bytes/bytes-view lane and the survey has been comparing them at its own optimisation level, where the store into .rodata is undefined, LLVM deletes it and exits 0, and this backend -- which has no optimiser to delete anything with -- executes it and takes 139. That reads as a lowering disagreement and is not one: at -O0 the two backends agree exactly, and test_acceptance.ml's dies_segv rows already pin that on both of them. So a second exclusion list beside the one for the programs that never stop, with its own reason written down, rather than building the whole corpus at -O0 and changing the measurement every baseline was taken against. dev-segv would belong on it in any case: it calls agent/start, and under --dev it parks in the break loop rather than dying. MATCH 171, DIFFER 0, REFUSED 0, NOX86 0, SKIP 47
This commit is contained in:
parent
190fdadcb8
commit
216d1c0ab0
@ -92,6 +92,26 @@ forever="dev-loop dev-watch dev-chatty agent-auto"
|
|||||||
# in the epilogue that every exit already went through. The five are in the
|
# in the epilogue that every exit already went through. The five are in the
|
||||||
# sweep now and they are five of the MATCHes.
|
# sweep now and they are five of the MATCHes.
|
||||||
|
|
||||||
|
# The ones whose whole point is a fault, and which therefore cannot be compared
|
||||||
|
# at this sweep's optimisation level. Both write through a bytes-view of a
|
||||||
|
# string literal, which is a store into .rodata: measured here, LLVM exits 0
|
||||||
|
# having printed the unmodified literal and this backend exits 139, because the
|
||||||
|
# store is undefined and the optimiser deleted it on one side and there is no
|
||||||
|
# optimiser on the other. That is not a lowering disagreement. At -O0 the two
|
||||||
|
# agree exactly -- 139, no output, both backends -- and test_acceptance.ml's
|
||||||
|
# dies_segv rows pin precisely that, on both backends, which is the coverage
|
||||||
|
# this sweep would otherwise be duplicating at the one level where, as that
|
||||||
|
# file's own comment puts it, there is nothing left to pin but the UB.
|
||||||
|
#
|
||||||
|
# Excluded by name rather than by building the whole corpus at -O0: the counts
|
||||||
|
# below are one measurement and every handoff's baseline was taken against it.
|
||||||
|
#
|
||||||
|
# dev-segv would not belong here even if the store survived. It calls
|
||||||
|
# agent/start, so it leaves a socket in /tmp on both runs, and under
|
||||||
|
# SURVEY_FLAGS=--dev it parks in the break loop instead of dying -- two
|
||||||
|
# truncations at the timeout, which is the dev-chatty failure by another road.
|
||||||
|
faults="bytes-view-write dev-segv"
|
||||||
|
|
||||||
TIMEOUT=${TIMEOUT:-20}
|
TIMEOUT=${TIMEOUT:-20}
|
||||||
|
|
||||||
# Extra flags, given to *both* sides. SURVEY_FLAGS=--dev is the one that has a
|
# Extra flags, given to *both* sides. SURVEY_FLAGS=--dev is the one that has a
|
||||||
@ -115,6 +135,7 @@ for src in "$corpus"/test/programs/*.flan "$corpus"/spike/x86/*.flan \
|
|||||||
[ $want = 1 ] || continue
|
[ $want = 1 ] || continue
|
||||||
fi
|
fi
|
||||||
case " $forever " in *" $name "*) skip+=("$name:runs-forever"); continue;; esac
|
case " $forever " in *" $name "*) skip+=("$name:runs-forever"); continue;; esac
|
||||||
|
case " $faults " in *" $name "*) skip+=("$name:faults-by-design"); continue;; esac
|
||||||
|
|
||||||
# LLVM first. A program that does not compile at all, or has no main, is not
|
# LLVM first. A program that does not compile at all, or has no main, is not
|
||||||
# this backend's business -- the frontend refused it either way.
|
# this backend's business -- the frontend refused it either way.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user