quakeforge/tools/qfcc/test
Bill Currie ce6b27cfae [qfcc] Add failing test for array life
It seems that the optimizer keeps array assignments live when passing
the array as a pointer, but not when passing the address of an element.
Found when testing the following code:

    BasisBlade *pga_blades[16] = {
        blades[1],  blades[2],  blades[3],  blades[4],
        blades[7],  blades[6],  blades[5],  blades[0],
        blades[8],  blades[9],  blades[10], blades[15],
        blades[14], blades[13], blades[12], blades[11],
    };
    BasisGroup *pga_groups[4] = {
        [BasisGroup new:4 basis:&pga_blades[ 0]],
        [BasisGroup new:4 basis:&pga_blades[ 4]],
        [BasisGroup new:4 basis:&pga_blades[ 8]],
        [BasisGroup new:4 basis:&pga_blades[12]],
    };

Only the first element of pga_blades is being assigned in the optimized
code, but everything is correct when not optimizing.
2023-05-14 12:45:08 +09:00
..
old Fix a pile of double semicolons 2021-01-09 20:42:23 +09:00
.gdbinit v6 modulo test 2010-12-19 11:19:23 +09:00
address-cast.r Add failing global init test too 2020-02-15 23:49:12 +09:00
alignment.r Finish up alignment tests and add address cast 2020-02-15 23:49:12 +09:00
anonstruct.r [qfcc] Make anonstruct test robust against pointer math 2020-03-17 12:16:24 +09:00
arraylife.r [qfcc] Add failing test for array life 2023-05-14 12:45:08 +09:00
assignchain.r [qfcc] Correct some misinformative prints 2020-03-14 01:28:00 +09:00
build-compile-fail-run [qfcc] Catch declarations of arrays of class 2020-03-30 19:02:41 +09:00
build-compile-pass-run [qfcc] Add some failing typedef redef tests 2023-02-14 12:45:04 +09:00
build-run [build] Move to non-recursive make 2020-06-25 11:35:37 +09:00
chewed-alias.r [qfcc] Add a very basic attribute system 2022-02-02 23:51:37 +09:00
chewed-return.r Don't use the expr type for assignments. 2012-11-30 21:06:08 +09:00
classarray.r [qfcc] Add pragma to control warning promotion 2022-01-25 22:15:28 +09:00
comma-expr.r Implement comma expressions 2019-06-09 16:56:20 +09:00
compound.r [qfcc] Support compound init in assignment and params 2020-03-11 19:48:25 +09:00
const-fold-int.r [qfcc] Fold int constants more aggressively 2022-01-29 15:38:39 +09:00
deadbool.r Implement double constants 2020-02-15 23:49:12 +09:00
dealloc-nowarn.r [qfcc] Add failing test for dealloc warning 2021-12-24 22:45:43 +09:00
dealloc-nowarn2.r [qfcc] Add failing test for multi-path dealloc 2021-12-24 22:45:43 +09:00
dealloc-warn.r [qfcc] Add pragma to control warning promotion 2022-01-25 22:15:28 +09:00
dealloc-warn2.r [qfcc] Fix incorrect build error in dealloc-warn2 2023-02-26 20:09:21 +09:00
dealloc-warn3.r [qfcc] Add pragma to control optimization 2022-02-01 14:57:16 +09:00
dealloc-warn4.r [qfcc] Add failing test for super dealloc 2023-02-26 20:08:56 +09:00
double-alias.r [qfcc] Tweak the printf to make more sense 2022-02-02 19:04:43 +09:00
double-demote-float-ainit.r [qfcc] Add pragma to control warning promotion 2022-01-25 22:15:28 +09:00
double-demote-float-ginit.r [qfcc] Add pragma to control warning promotion 2022-01-25 22:15:28 +09:00
double-demote-float-linit.r [qfcc] Add pragma to control warning promotion 2022-01-25 22:15:28 +09:00
double-demote-float.r [qfcc] Add pragma to control warning promotion 2022-01-25 22:15:28 +09:00
double-demote-int-ainit.r [qfcc] Add pragma to control warning promotion 2022-01-25 22:15:28 +09:00
double-demote-int-ginit.r [qfcc] Add pragma to control warning promotion 2022-01-25 22:15:28 +09:00
double-demote-int-linit.r [qfcc] Add pragma to control warning promotion 2022-01-25 22:15:28 +09:00
double-demote-int.r [qfcc] Add pragma to control warning promotion 2022-01-25 22:15:28 +09:00
double-float-compare.r [qfcc] Add pragma to control warning promotion 2022-01-25 22:15:28 +09:00
double-int-compare.r [qfcc] Add pragma to control warning promotion 2022-01-25 22:15:28 +09:00
double.r [qfcc] Map 64-bit load/store/assign instructions 2022-02-02 16:06:15 +09:00
entity-struct.r [qfcc] Handle aliased field types 2021-07-24 18:09:54 +09:00
enum.r Fix assigning int to enum or enum to int 2019-06-10 08:46:40 +09:00
fordecl.r Fix for decl test scope issue 2019-06-09 13:55:07 +09:00
func-expr.r Add a test for functions in binary expressions. 2013-09-27 23:15:57 +09:00
func-expr2.r [qfcc] Add a new failing test 2020-03-26 19:22:41 +09:00
func-static.r Add a test for function local static variables. 2012-12-03 16:27:31 +09:00
gcd.pas [qfcc] Add ExitCode support to quake-pascal 2020-03-20 12:59:25 +09:00
ifsuper.r [qfcc] Add a failing test case for if-super calls 2022-11-12 20:07:30 +09:00
infloop.r Add a test for writes to global vars in a loop. 2012-11-24 14:53:45 +09:00
iterfunc.r [qfcc] Add test for var = func(var) 2022-02-01 21:40:59 +09:00
ivar-struct-return.r [qfcc] Make ivar-struct-return fail 2020-03-17 23:39:17 +09:00
link_order.r [qfcc] Add a test for use/write dependencies 2021-12-27 14:17:12 +09:00
lost-use.r [qfcc] Add failing test for lost var use 2022-01-23 01:31:50 +09:00
Makemodule.am [qfcc] Add failing test for array life 2023-05-14 12:45:08 +09:00
methodparams.r [qfcc] Add a very basic attribute system 2022-02-02 23:51:37 +09:00
modulo.r [qfcc] Modify the modulo tests to be compatible with Ruamoko ISA 2022-02-01 14:57:16 +09:00
nilparamret.r [qfcc] Add failing nil return through @param bug 2020-03-27 20:32:52 +09:00
overload.r [qfcc] Add failing function overload test 2020-03-28 18:58:08 +09:00
paramret.r Add a test for returning @param into an array. 2012-12-26 11:49:39 +09:00
postop.r [qfcc] Add dependency edges for moved labels 2021-06-29 14:42:16 +09:00
ptraliasenc.r [qfcc] Correct xdef structures and usage in test 2022-01-18 21:42:53 +09:00
ptrfunc.r [qfcc] Add failing test for function/array pointers 2023-03-07 13:17:46 +09:00
ptrstructcast.r [qfcc] Un-dereference src expression early for movep 2021-06-30 20:05:27 +09:00
quaternion.r Support assigning non-constant vector expressions. 2018-10-12 22:05:17 +09:00
return-ivar.r Force RETURN's operand to be live. 2012-12-20 21:18:27 +09:00
return-postop.r [qfcc] Add pragma to control optimization 2022-02-01 14:57:16 +09:00
sendv.r [qfcc] Update sendv test to use @return 2022-02-05 19:30:08 +09:00
state.r [qfcc] Support C's full type system 2023-02-14 12:45:04 +09:00
static-init.r [qfcc] Add failing test for static init 2021-01-13 16:47:49 +09:00
struct-init-param.r [qfcc] Support pointers to temp operands 2020-03-16 14:24:47 +09:00
struct-nil-init.r [qfcc] Treat { } as nil for initializing compound types 2020-02-27 20:30:39 +09:00
structarray.r Implement automatic array sizing from initializer 2019-06-09 23:11:38 +09:00
structlive.r Add a test for struct writes. 2012-12-13 13:44:25 +09:00
structptr.r Make structptr.r a little quieter. 2012-11-22 21:59:01 +09:00
structstruct.r Extend nested struct test to cover struct copy 2019-06-17 22:57:40 +09:00
swap.r Add tests for swapping vars and triangle area. 2018-08-21 16:27:22 +09:00
temp-component.r [qfcc] Add failing test for temp.component 2022-01-30 13:57:41 +09:00
test-bi.c [gamecode] Pass registered data pointer to builtins 2022-02-14 12:28:38 +09:00
test-bi.h Add a test harness for qfcc. 2012-11-22 21:59:01 +09:00
test-defspace.c [qfcc] Add failing test case for defspace_alloc_aligned_loc 2022-05-01 14:35:24 +09:00
test-defspace.h [build] Move to non-recursive make 2020-06-25 11:35:37 +09:00
test-harness.c [cvar] Make cvars properly typed 2022-04-24 19:15:22 +09:00
test-harness.h [qfcc] Add a failing test case for if-super calls 2022-11-12 20:07:30 +09:00
triangle.r Fix several double-related bug 2020-02-15 23:49:12 +09:00
tw-defspace.c More defspace tests. 2018-10-09 12:45:26 +09:00
tw-diagnostic.c Start work on a unit test for defspace. 2018-09-09 22:37:09 +09:00
tw-strpool.c Start work on a unit test for defspace. 2018-09-09 22:37:09 +09:00
twice-called.r [qfcc] Move .return handling into statements.c 2022-01-21 13:09:23 +09:00
typedef.r [gamecode] Rename ev_pointer to ev_ptr 2022-01-18 14:36:06 +09:00
typelinker.h [qfcc] Add failing aliased type linking test 2020-03-28 23:30:05 +09:00
typelinker_a.r [qfcc] Add failing aliased type linking test 2020-03-28 23:30:05 +09:00
typelinker_b.r [qfcc] Add failing aliased type linking test 2020-03-28 23:30:05 +09:00
typeredef1.r [qfcc] Add some failing typedef redef tests 2023-02-14 12:45:04 +09:00
typeredef2.r [qfcc] Add some failing typedef redef tests 2023-02-14 12:45:04 +09:00
unaryminus.r [qfcc] Add failing test for unary minus 2020-04-08 21:12:56 +09:00
vecaddr.r [qfcc] Really get vecaddr.r working on both ISAs 2022-01-30 20:01:32 +09:00
vecconst.r [qfcc] Add basic support for (u)long expressions 2022-11-16 20:48:58 +09:00
vecexpr.r [qfcc] Use correct vector expression size in test 2022-04-29 18:12:47 +09:00
vecinit.r Set up temp aliases correctly 2019-06-18 10:38:19 +09:00
voidfor.r Append a new sblock for return when necessary. 2012-12-21 20:11:27 +09:00
while.r Add a test for while (count--) 2012-11-22 21:59:00 +09:00
zerolinker.r [qfcc] Fix missed t enum cleanup 2020-03-30 19:02:54 +09:00