Files
mercury/tests/debugger/nondet_stack.exp5
Peter Wang 1094f42cc9 Conform to memory alignment requirements on doubles.
On some 32-bit architectures, we were violating memory alignment
requirements for double-precision floats, in cell fields and on det and
nondet stacks.  Bug #299.

We now only take the address of a double field when it occurs on an
aligned memory address, i.e. when it starts at an even word offset from
the start of a cell (this assumption is incompatible with term-size
profiling which adds a hidden word before the start of the cell).

For the det stack, we can round up allocations to keep the stack pointer
double-aligned, then allocate slots for doubles at even word offsets
from the stack pointer.

It would be trickier for the nondet stack.  Multiple frame types exist
on the nondet stack, and the different frame types are identified by
their sizes: 3-word and 4-word temporary frames, and 5/6+ word ordinary
frames. Rather than rounding up frame sizes to even numbers of words,
we would probably want to dynamically pad ordinary frame allocations,
such that any doubles in the frame will be at aligned addresses.

However, in this change, we simply store box floats on the nondet stack.

compiler/globals.m:
	Add predicate which returns whether double-width floats
	should be stored on the det stack.

compiler/handle_options.m:
	Disable double-word fields in term-size profiling grades.

compiler/code_info.m:
	Add a predicate to round up det stack frame sizes.

	Remember the width of floats stored on the det stack in
	exprn_opts.

compiler/hlds_llds.m:
compiler/llds.m:
compiler/stack_layout.m:
	Delete the possibility of double-width slots on the nondet
	stack.

	Remember det_stack_float_width in exprn_opts.

compiler/llds_out_data.m:
	Add wrapper macro `MR_dword_ptr' when taking the address of a
	double.

	Only take the address of doubles on the det stack.

compiler/llds_out_instr.m:
compiler/llds_out_util.m:
	Only assign a double field in a single C statement when it is
	aligned.

	Assert that the stack pointer is incremented by an even number,
	if necessary.

compiler/mlds_to_c.m:
	Only take the address of doubles when aligned.

compiler/middle_rec.m:
compiler/proc_gen.m:
	Round up det stack frame allocations to even numbers of words
	when necessary.

compiler/stack_alloc.m:
	Add padding as required so that double-word variables will
	be allocated at even-word offsets from the stack pointer.

compiler/opt_debug.m:
compiler/par_conj_gen.m:
	Conform to changes.

runtime/mercury_conf_param.h:
runtime/mercury_float.h:
	Add macro `MR_dword_ptr' to be wrapped around instances where
	the address of a double is taken. When `MR_DEBUG_DWORD_ALIGNMENT'
	is defined (and using gcc or clang) the address is checked to be
	properly aligned.  Almost all our development is done on x86 or
	x86-64 architecture which do not have strict memory alignment
	requirements, making violations hard to check otherwise.

runtime/mercury_deconstruct.c:
runtime/mercury_layout_util.c:
	Use `MR_float_from_dword' over `MR_float_from_dword_ptr' as the
	former does not require dword alignment.

	Related fix: looking up `double' variables on the nondet stack
	used the stack pointer for the det stack instead.  Fix it,
	though the code now won't be executed after this change.

tests/debugger/nondet_stack.exp5:
	Add new expected output. This is the same as nondet_stack.exp
	except that det stack frames have been rounded up.
2013-10-29 17:30:39 +11:00

862 lines
20 KiB
Plaintext

E1: C1 CALL pred nondet_stack.main/2-0 (cc_multi) nondet_stack.m:NNNN
mdb> echo on
Command echo enabled.
mdb> context none
Contexts will not be printed.
mdb> register --quiet
mdb> goto 22
E2: C2 SWTC pred nondet_stack.qperm/2-0 (nondet) s2-2;
mdb> nondet_stack -f 3
non 135: ordinary, 13 words
redoip: unnamed label
redofr: non 135
succip: unnamed label
succfr: non 103
non 122: temp
redoip: label UNKNOWN
redofr: non 116
non 119: temp
redoip: unnamed label
redofr: non 116
<more stack frames snipped>
mdb> nondet_stack
non 135: ordinary, 13 words
redoip: unnamed label
redofr: non 135
succip: unnamed label
succfr: non 103
non 122: temp
redoip: label UNKNOWN
redofr: non 116
non 119: temp
redoip: unnamed label
redofr: non 116
non 116: ordinary, 13 words
redoip: unnamed label
redofr: non 116
succip: unnamed label
succfr: non 103
non 103: ordinary, 13 words
redoip: unnamed label
redofr: non 103
succip: unnamed label
succfr: non 71
non 90: temp
redoip: label UNKNOWN
redofr: non 84
non 87: temp
redoip: unnamed label
redofr: non 84
non 84: ordinary, 13 words
redoip: unnamed label
redofr: non 84
succip: unnamed label
succfr: non 71
non 71: ordinary, 13 words
redoip: unnamed label
redofr: non 71
succip: unnamed label
succfr: non 39
non 58: temp
redoip: label UNKNOWN
redofr: non 52
non 55: temp
redoip: unnamed label
redofr: non 52
non 52: ordinary, 13 words
redoip: unnamed label
redofr: non 52
succip: unnamed label
succfr: non 39
non 39: ordinary, 13 words
redoip: unnamed label
redofr: non 39
succip: unnamed label
succfr: non 26
non 26: ordinary, 12 words
redoip: unnamed label
redofr: non 26
succip: unnamed label
succfr: non 10
non 14: temp
redoip: label UNKNOWN
redofr: non 10
detfr: det 14
non 10: ordinary, 6 words
redoip: label global_fail
redofr: non 10
succip: label wrapper_not_reached
succfr: non 4
mdb> stack_regs
sp = det 14
curfr = non 135
maxfr = non 135
mdb> nondet_stack -d
non 135: ordinary, 13 words, pred nondet_stack.qperm/2-0 (nondet) <s2-2;>
redoip: unnamed label
redofr: non 135
succip: unnamed label
succfr: non 103
on main nondet branch non 135
HeadVar__1 [4, 5]
TypeInfo_for_T int
non 122: temp
redoip: label UNKNOWN
redofr: non 116
non 119: temp
redoip: unnamed label
redofr: non 116
non 116: ordinary, 13 words
redoip: unnamed label
redofr: non 116
succip: unnamed label
succfr: non 103
top frame of a nondet side branch non 116
HeadVar__2 [3, 4, 5]
TypeInfo_for_T int
non 103: ordinary, 13 words, pred nondet_stack.qperm/2-0 (nondet) <s2-2;c2;>
redoip: unnamed label
redofr: non 103
succip: unnamed label
succfr: non 71
on main nondet branch non 135
HeadVar__1 [3, 4, 5]
TypeInfo_for_T int
U 3
Z [4, 5]
non 90: temp
redoip: label UNKNOWN
redofr: non 84
non 87: temp
redoip: unnamed label
redofr: non 84
non 84: ordinary, 13 words
redoip: unnamed label
redofr: non 84
succip: unnamed label
succfr: non 71
top frame of a nondet side branch non 84
HeadVar__2 [2, 3, 4, 5]
TypeInfo_for_T int
non 71: ordinary, 13 words, pred nondet_stack.qperm/2-0 (nondet) <s2-2;c2;>
redoip: unnamed label
redofr: non 71
succip: unnamed label
succfr: non 39
on main nondet branch non 135
HeadVar__1 [2, 3, 4, 5]
TypeInfo_for_T int
U 2
Z [3, 4, 5]
non 58: temp
redoip: label UNKNOWN
redofr: non 52
non 55: temp
redoip: unnamed label
redofr: non 52
non 52: ordinary, 13 words
redoip: unnamed label
redofr: non 52
succip: unnamed label
succfr: non 39
top frame of a nondet side branch non 52
HeadVar__2 [1, 2, 3, 4, 5]
TypeInfo_for_T int
non 39: ordinary, 13 words, pred nondet_stack.qperm/2-0 (nondet) <s2-2;c2;>
redoip: unnamed label
redofr: non 39
succip: unnamed label
succfr: non 26
on main nondet branch non 135
HeadVar__1 [1, 2, 3, 4, 5]
TypeInfo_for_T int
U 1
Z [2, 3, 4, 5]
non 26: ordinary, 12 words, pred nondet_stack.queen/2-0 (nondet) <c2;>
redoip: unnamed label
redofr: non 26
succip: unnamed label
succfr: non 10
on main nondet branch non 135
Data (arg 1) [1, 2, 3, 4, 5]
TypeCtorInfo_5 int
non 14: temp
redoip: label UNKNOWN
redofr: non 10
detfr: det 14
non 10: ordinary, 6 words
redoip: label global_fail
redofr: non 10
succip: label wrapper_not_reached
succfr: non 4
mdb> goto 39
E3: C3 CALL pred nondet_stack.safe/1-0 (semidet)
mdb> nondet_stack
non 217: temp
redoip: label UNKNOWN
redofr: non 39
non 214: temp
redoip: label UNKNOWN
redofr: non 71
non 211: temp
redoip: label UNKNOWN
redofr: non 103
non 208: temp
redoip: label UNKNOWN
redofr: non 135
non 205: temp
redoip: label UNKNOWN
redofr: non 167
non 202: temp
redoip: label UNKNOWN
redofr: non 199
non 199: ordinary, 13 words
redoip: unnamed label
redofr: non 199
succip: unnamed label
succfr: non 167
non 186: temp
redoip: label UNKNOWN
redofr: non 180
non 183: temp
redoip: unnamed label
redofr: non 180
non 180: ordinary, 13 words
redoip: unnamed label
redofr: non 180
succip: unnamed label
succfr: non 167
non 167: ordinary, 13 words
redoip: unnamed label
redofr: non 167
succip: unnamed label
succfr: non 135
non 154: temp
redoip: label UNKNOWN
redofr: non 148
non 151: temp
redoip: unnamed label
redofr: non 148
non 148: ordinary, 13 words
redoip: unnamed label
redofr: non 148
succip: unnamed label
succfr: non 135
non 135: ordinary, 13 words
redoip: unnamed label
redofr: non 135
succip: unnamed label
succfr: non 103
non 122: temp
redoip: label UNKNOWN
redofr: non 116
non 119: temp
redoip: unnamed label
redofr: non 116
non 116: ordinary, 13 words
redoip: unnamed label
redofr: non 116
succip: unnamed label
succfr: non 103
non 103: ordinary, 13 words
redoip: unnamed label
redofr: non 103
succip: unnamed label
succfr: non 71
non 90: temp
redoip: label UNKNOWN
redofr: non 84
non 87: temp
redoip: unnamed label
redofr: non 84
non 84: ordinary, 13 words
redoip: unnamed label
redofr: non 84
succip: unnamed label
succfr: non 71
non 71: ordinary, 13 words
redoip: unnamed label
redofr: non 71
succip: unnamed label
succfr: non 39
non 58: temp
redoip: label UNKNOWN
redofr: non 52
non 55: temp
redoip: unnamed label
redofr: non 52
non 52: ordinary, 13 words
redoip: unnamed label
redofr: non 52
succip: unnamed label
succfr: non 39
non 39: ordinary, 13 words
redoip: unnamed label
redofr: non 39
succip: unnamed label
succfr: non 26
non 26: ordinary, 12 words
redoip: unnamed label
redofr: non 26
succip: unnamed label
succfr: non 10
non 14: temp
redoip: label UNKNOWN
redofr: non 10
detfr: det 14
non 10: ordinary, 6 words
redoip: label global_fail
redofr: non 10
succip: label wrapper_not_reached
succfr: non 4
mdb> stack_regs
sp = det 22
curfr = non 26
maxfr = non 217
mdb> nondet_stack -d
non 217: temp
redoip: label UNKNOWN
redofr: non 39
non 214: temp
redoip: label UNKNOWN
redofr: non 71
non 211: temp
redoip: label UNKNOWN
redofr: non 103
non 208: temp
redoip: label UNKNOWN
redofr: non 135
non 205: temp
redoip: label UNKNOWN
redofr: non 167
non 202: temp
redoip: label UNKNOWN
redofr: non 199
non 199: ordinary, 13 words
redoip: unnamed label
redofr: non 199
succip: unnamed label
succfr: non 167
top frame of a nondet side branch non 199
HeadVar__1 []
TypeInfo_for_T int
non 186: temp
redoip: label UNKNOWN
redofr: non 180
non 183: temp
redoip: unnamed label
redofr: non 180
non 180: ordinary, 13 words
redoip: unnamed label
redofr: non 180
succip: unnamed label
succfr: non 167
top frame of a nondet side branch non 180
HeadVar__2 [5]
TypeInfo_for_T int
non 167: ordinary, 13 words, pred nondet_stack.qperm/2-0 (nondet) <s2-2;c2;>
redoip: unnamed label
redofr: non 167
succip: unnamed label
succfr: non 135
internal frame on nondet side branch non 199
HeadVar__1 [5]
TypeInfo_for_T int
U 5
Z []
non 154: temp
redoip: label UNKNOWN
redofr: non 148
non 151: temp
redoip: unnamed label
redofr: non 148
non 148: ordinary, 13 words
redoip: unnamed label
redofr: non 148
succip: unnamed label
succfr: non 135
top frame of a nondet side branch non 148
HeadVar__2 [4, 5]
TypeInfo_for_T int
non 135: ordinary, 13 words, pred nondet_stack.qperm/2-0 (nondet) <s2-2;c2;>
redoip: unnamed label
redofr: non 135
succip: unnamed label
succfr: non 103
internal frame on nondet side branch non 199
HeadVar__1 [4, 5]
TypeInfo_for_T int
U 4
Z [5]
non 122: temp
redoip: label UNKNOWN
redofr: non 116
non 119: temp
redoip: unnamed label
redofr: non 116
non 116: ordinary, 13 words
redoip: unnamed label
redofr: non 116
succip: unnamed label
succfr: non 103
top frame of a nondet side branch non 116
HeadVar__2 [3, 4, 5]
TypeInfo_for_T int
non 103: ordinary, 13 words, pred nondet_stack.qperm/2-0 (nondet) <s2-2;c2;>
redoip: unnamed label
redofr: non 103
succip: unnamed label
succfr: non 71
internal frame on nondet side branch non 199
HeadVar__1 [3, 4, 5]
TypeInfo_for_T int
U 3
Z [4, 5]
non 90: temp
redoip: label UNKNOWN
redofr: non 84
non 87: temp
redoip: unnamed label
redofr: non 84
non 84: ordinary, 13 words
redoip: unnamed label
redofr: non 84
succip: unnamed label
succfr: non 71
top frame of a nondet side branch non 84
HeadVar__2 [2, 3, 4, 5]
TypeInfo_for_T int
non 71: ordinary, 13 words, pred nondet_stack.qperm/2-0 (nondet) <s2-2;c2;>
redoip: unnamed label
redofr: non 71
succip: unnamed label
succfr: non 39
internal frame on nondet side branch non 199
HeadVar__1 [2, 3, 4, 5]
TypeInfo_for_T int
U 2
Z [3, 4, 5]
non 58: temp
redoip: label UNKNOWN
redofr: non 52
non 55: temp
redoip: unnamed label
redofr: non 52
non 52: ordinary, 13 words
redoip: unnamed label
redofr: non 52
succip: unnamed label
succfr: non 39
top frame of a nondet side branch non 52
HeadVar__2 [1, 2, 3, 4, 5]
TypeInfo_for_T int
non 39: ordinary, 13 words, pred nondet_stack.qperm/2-0 (nondet) <s2-2;c2;>
redoip: unnamed label
redofr: non 39
succip: unnamed label
succfr: non 26
internal frame on nondet side branch non 199
HeadVar__1 [1, 2, 3, 4, 5]
TypeInfo_for_T int
U 1
Z [2, 3, 4, 5]
non 26: ordinary, 12 words, pred nondet_stack.queen/2-0 (nondet) <c3;>
redoip: unnamed label
redofr: non 26
succip: unnamed label
succfr: non 10
on main nondet branch non 26
Data (arg 1) [1, 2, 3, 4, 5]
Out (arg 2) [1, 2, 3, 4, 5]
TypeCtorInfo_5 int
non 14: temp
redoip: label UNKNOWN
redofr: non 10
detfr: det 14
non 10: ordinary, 6 words
redoip: label global_fail
redofr: non 10
succip: label wrapper_not_reached
succfr: non 4
mdb> break nondet_stack__test
0: + stop interface pred nondet_stack.test/2-0 (nondet)
mdb> continue
E4: C4 CALL pred nondet_stack.test/2-0 (nondet)
mdb> nondet_stack
non 284: ordinary, 12 words
redoip: unnamed label
redofr: non 284
succip: unnamed label
succfr: non 10
non 272: temp
redoip: label UNKNOWN
redofr: non 10
detfr: det 14
non 268: temp
redoip: label UNKNOWN
redofr: non 26
non 265: temp
redoip: label UNKNOWN
redofr: non 39
non 262: temp
redoip: label UNKNOWN
redofr: non 71
non 259: temp
redoip: label UNKNOWN
redofr: non 119
non 256: temp
redoip: label UNKNOWN
redofr: non 183
non 253: temp
redoip: label UNKNOWN
redofr: non 215
non 250: temp
redoip: label UNKNOWN
redofr: non 247
non 247: ordinary, 13 words
redoip: unnamed label
redofr: non 247
succip: unnamed label
succfr: non 215
non 234: temp
redoip: label UNKNOWN
redofr: non 228
non 231: temp
redoip: unnamed label
redofr: non 228
non 228: ordinary, 13 words
redoip: unnamed label
redofr: non 228
succip: unnamed label
succfr: non 215
non 215: ordinary, 13 words
redoip: unnamed label
redofr: non 215
succip: unnamed label
succfr: non 183
non 202: temp
redoip: label UNKNOWN
redofr: non 196
non 199: temp
redoip: unnamed label
redofr: non 196
non 196: ordinary, 13 words
redoip: unnamed label
redofr: non 196
succip: unnamed label
succfr: non 183
non 183: ordinary, 13 words
redoip: unnamed label
redofr: non 183
succip: unnamed label
succfr: non 119
non 170: temp
redoip: label UNKNOWN
redofr: non 132
non 167: temp
redoip: label UNKNOWN
redofr: non 145
non 164: temp
redoip: label UNKNOWN
redofr: non 158
non 161: temp
redoip: unnamed label
redofr: non 158
non 158: ordinary, 13 words
redoip: unnamed label
redofr: non 158
succip: unnamed label
succfr: non 145
non 145: ordinary, 13 words
redoip: unnamed label
redofr: non 145
succip: unnamed label
succfr: non 132
non 132: ordinary, 13 words
redoip: unnamed label
redofr: non 132
succip: unnamed label
succfr: non 119
non 119: ordinary, 13 words
redoip: unnamed label
redofr: non 119
succip: unnamed label
succfr: non 71
non 106: temp
redoip: label UNKNOWN
redofr: non 84
non 103: temp
redoip: label UNKNOWN
redofr: non 97
non 100: temp
redoip: unnamed label
redofr: non 97
non 97: ordinary, 13 words
redoip: unnamed label
redofr: non 97
succip: unnamed label
succfr: non 84
non 84: ordinary, 13 words
redoip: unnamed label
redofr: non 84
succip: unnamed label
succfr: non 71
non 71: ordinary, 13 words
redoip: unnamed label
redofr: non 71
succip: unnamed label
succfr: non 39
non 58: temp
redoip: label UNKNOWN
redofr: non 52
non 55: temp
redoip: unnamed label
redofr: non 52
non 52: ordinary, 13 words
redoip: unnamed label
redofr: non 52
succip: unnamed label
succfr: non 39
non 39: ordinary, 13 words
redoip: unnamed label
redofr: non 39
succip: unnamed label
succfr: non 26
non 26: ordinary, 12 words
redoip: unnamed label
redofr: non 26
succip: unnamed label
succfr: non 10
non 14: temp
redoip: label UNKNOWN
redofr: non 10
detfr: det 14
non 10: ordinary, 6 words
redoip: label global_fail
redofr: non 10
succip: label wrapper_not_reached
succfr: non 4
mdb> stack_regs
sp = det 14
curfr = non 284
maxfr = non 284
mdb> nondet_stack -d
non 284: ordinary, 12 words, pred nondet_stack.test/2-0 (nondet) <>
redoip: unnamed label
redofr: non 284
succip: unnamed label
succfr: non 10
on main nondet branch non 284
HeadVar__1 [1, 3, 5, 2, 4]
non 272: temp
redoip: label UNKNOWN
redofr: non 10
detfr: det 14
non 268: temp
redoip: label UNKNOWN
redofr: non 26
non 265: temp
redoip: label UNKNOWN
redofr: non 39
non 262: temp
redoip: label UNKNOWN
redofr: non 71
non 259: temp
redoip: label UNKNOWN
redofr: non 119
non 256: temp
redoip: label UNKNOWN
redofr: non 183
non 253: temp
redoip: label UNKNOWN
redofr: non 215
non 250: temp
redoip: label UNKNOWN
redofr: non 247
non 247: ordinary, 13 words
redoip: unnamed label
redofr: non 247
succip: unnamed label
succfr: non 215
top frame of a nondet side branch non 247
HeadVar__1 []
TypeInfo_for_T int
non 234: temp
redoip: label UNKNOWN
redofr: non 228
non 231: temp
redoip: unnamed label
redofr: non 228
non 228: ordinary, 13 words
redoip: unnamed label
redofr: non 228
succip: unnamed label
succfr: non 215
top frame of a nondet side branch non 228
HeadVar__2 [4]
TypeInfo_for_T int
non 215: ordinary, 13 words, pred nondet_stack.qperm/2-0 (nondet) <s2-2;c2;>
redoip: unnamed label
redofr: non 215
succip: unnamed label
succfr: non 183
internal frame on nondet side branch non 247
HeadVar__1 [4]
TypeInfo_for_T int
U 4
Z []
non 202: temp
redoip: label UNKNOWN
redofr: non 196
non 199: temp
redoip: unnamed label
redofr: non 196
non 196: ordinary, 13 words
redoip: unnamed label
redofr: non 196
succip: unnamed label
succfr: non 183
top frame of a nondet side branch non 196
HeadVar__2 [2, 4]
TypeInfo_for_T int
non 183: ordinary, 13 words, pred nondet_stack.qperm/2-0 (nondet) <s2-2;c2;>
redoip: unnamed label
redofr: non 183
succip: unnamed label
succfr: non 119
internal frame on nondet side branch non 247
HeadVar__1 [2, 4]
TypeInfo_for_T int
U 2
Z [4]
non 170: temp
redoip: label UNKNOWN
redofr: non 132
non 167: temp
redoip: label UNKNOWN
redofr: non 145
non 164: temp
redoip: label UNKNOWN
redofr: non 158
non 161: temp
redoip: unnamed label
redofr: non 158
non 158: ordinary, 13 words
redoip: unnamed label
redofr: non 158
succip: unnamed label
succfr: non 145
top frame of a nondet side branch non 158
HeadVar__2 [5]
TypeInfo_for_T int
non 145: ordinary, 13 words, pred nondet_stack.qdelete/3-0 (nondet) <c2;d2;c3;>
redoip: unnamed label
redofr: non 145
succip: unnamed label
succfr: non 132
internal frame on nondet side branch non 158
HeadVar__2 [4, 5]
A 4
TypeInfo_for_T int
Z [5]
non 132: ordinary, 13 words, pred nondet_stack.qdelete/3-0 (nondet) <c2;d2;c3;>
redoip: unnamed label
redofr: non 132
succip: unnamed label
succfr: non 119
internal frame on nondet side branch non 158
HeadVar__2 [2, 4, 5]
A 2
TypeInfo_for_T int
Z [4, 5]
non 119: ordinary, 13 words, pred nondet_stack.qperm/2-0 (nondet) <s2-2;c2;>
redoip: unnamed label
redofr: non 119
succip: unnamed label
succfr: non 71
internal frame on nondet side branch non 247
HeadVar__1 [2, 4, 5]
TypeInfo_for_T int
U 5
Z [2, 4]
non 106: temp
redoip: label UNKNOWN
redofr: non 84
non 103: temp
redoip: label UNKNOWN
redofr: non 97
non 100: temp
redoip: unnamed label
redofr: non 97
non 97: ordinary, 13 words
redoip: unnamed label
redofr: non 97
succip: unnamed label
succfr: non 84
top frame of a nondet side branch non 97
HeadVar__2 [3, 4, 5]
TypeInfo_for_T int
non 84: ordinary, 13 words, pred nondet_stack.qdelete/3-0 (nondet) <c2;d2;c3;>
redoip: unnamed label
redofr: non 84
succip: unnamed label
succfr: non 71
internal frame on nondet side branch non 97
HeadVar__2 [2, 3, 4, 5]
A 2
TypeInfo_for_T int
Z [3, 4, 5]
non 71: ordinary, 13 words, pred nondet_stack.qperm/2-0 (nondet) <s2-2;c2;>
redoip: unnamed label
redofr: non 71
succip: unnamed label
succfr: non 39
internal frame on nondet side branch non 247
HeadVar__1 [2, 3, 4, 5]
TypeInfo_for_T int
U 3
Z [2, 4, 5]
non 58: temp
redoip: label UNKNOWN
redofr: non 52
non 55: temp
redoip: unnamed label
redofr: non 52
non 52: ordinary, 13 words
redoip: unnamed label
redofr: non 52
succip: unnamed label
succfr: non 39
top frame of a nondet side branch non 52
HeadVar__2 [1, 2, 3, 4, 5]
TypeInfo_for_T int
non 39: ordinary, 13 words, pred nondet_stack.qperm/2-0 (nondet) <s2-2;c2;>
redoip: unnamed label
redofr: non 39
succip: unnamed label
succfr: non 26
internal frame on nondet side branch non 247
HeadVar__1 [1, 2, 3, 4, 5]
TypeInfo_for_T int
U 1
Z [2, 3, 4, 5]
non 26: ordinary, 12 words, pred nondet_stack.queen/2-0 (nondet) <c2;>
redoip: unnamed label
redofr: non 26
succip: unnamed label
succfr: non 10
internal frame on nondet side branch non 247
Data (arg 1) [1, 2, 3, 4, 5]
TypeCtorInfo_5 int
non 14: temp
redoip: label UNKNOWN
redofr: non 10
detfr: det 14
non 10: ordinary, 6 words
redoip: label global_fail
redofr: non 10
succip: label wrapper_not_reached
succfr: non 4
mdb> continue -S
[2, 5, 3, 1, 4]