[fpc-devel] Updating compiler test suite for limited AVR features

Florian Klämpfl florian at freepascal.org
Wed Sep 11 22:05:50 CEST 2019

Am 09.09.19 um 18:20 schrieb Christo Crause:
> I ran the compiler test suite for the avr-embedded target to see how a 
> modification I made impacts things.  There are however so many 
> compilation failures (over 1100) due to unsupported features (floating 
> point support, sysutils, variants, classes etc.) that it is difficult to 
> spot relevant failures.  Filtering out floating point testing can be 
> done by checking  for the FPUNONE definition. I'm not sure whether it is 
> possible to filter out tests for other features, particularly 
> functionality that maps to a runtime error if EXCLUDE_COMPLEX_PROCS is 
> defined.  I can scan through all the tests searching for floating point 
> types and ifdef the floating point code using ifndef FPUNONE.  Other 
> tests involving unsupported keywords/units can be skipped by adding 
> %SKIPCPU=AVR to these tests, but this is in my mind not a future proof 
> way of filtering functionality to test. >
> I also want to add timeouts (say 60s) for the more intensive tests such 
> as test/tindex.pp.  Some tests may require reducing the test space so 
> that a simulator can complete the tests in a reasonable time, i.e. 
> test/cg/tmoddiv2.pp performs several sets of 20000 random tests, but 
> takes an enormous amount of time to run through a simulator.  Obviously 
> this is an important test to prove correctness of integer math, but I 
> would like to reduce the loop count to 200 for AVR so that the test can 
> complete in about a minute or two.

This is fine. But just reduce the loops for 8 Bit CPUs. It is most 
likely that they are slow. A timeout is imo not a good idea. Better 
reduce the number of iterations.

> Does anyone have better ideas on how to filter out tests for unsupported 
> features that will be future proof (i.e. if functionality is added to 
> AVR then the relevant tests would automatically be active)?

Not really, I think the only clean way is to check for the appropriate 
feature flags.

> Would these kind of modifications be accepted into trunk (at least in 
> principle)? I'll create a git repository for this work.

The feature based ones imo yes as well as the reduction of loops for 
small CPUs.

More information about the fpc-devel mailing list