Sorry, I am systematically trying out all available compiler options, this time --setlimit ...
[G4:~/gnu/testgpc/adriaan] adriaan% cat setlimit.pas program setlimit; type intset = set of integer; bigset = set of 0..100000; begin writeln( 'SizeOf( set of integer) = ', SizeOf( intset)); writeln( 'SizeOf( bigset) = ', SizeOf( bigset)); end.
[G4:~/gnu/testgpc/adriaan] adriaan% gpc -o setlimit setlimit.pas setlimit.pas:2: warning: constructing limited integer set `-2147483648 .. -2147483393'; setlimit.pas:2: warning: use `--setlimit=NUMBER' to change the size limit at compile time. setlimit.pas:3: warning: constructing limited integer set `0 .. 255'; setlimit.pas:3: warning: use `--setlimit=NUMBER' to change the size limit at compile time.
The second warning is correct, the first a bit misleading, as it suggests construction of a very large set ...
[G4:~/gnu/testgpc/adriaan] adriaan% ./setlimit SizeOf( set of integer) = 32 SizeOf( bigset) = 32
... but both sets have regular sizes.
The --setlimit argument changes the upper limit of the sets ...
[G4:~/gnu/testgpc/adriaan] adriaan% gpc -o setlimit setlimit.pas --setlimit=10000 setlimit.pas:2: warning: constructing limited integer set `-2147483648 .. -2147473649'; setlimit.pas:2: warning: use `--setlimit=NUMBER' to change the size limit at compile time. setlimit.pas:3: warning: constructing limited integer set `0 .. 9999'; setlimit.pas:3: warning: use `--setlimit=NUMBER' to change the size limit at compile time.
... but the warning is the same. The set sizes are correct:
[G4:~/gnu/testgpc/adriaan] adriaan% ./setlimit SizeOf( set of integer) = 1252 SizeOf( bigset) = 1252
However, there seems to be a problem with the implementation ...
[G4:~/gnu/testgpc/adriaan] adriaan% cat setlimit2.pas program setlimit2; type intset = set of integer; bigset = set of 0..100000; const i: intset = [ - 1]; b: bigset = [ 100000]; begin end.
This produces an internal compiler error when used with --setlimit ...
[G4:~/gnu/testgpc/adriaan] adriaan% gpc -o setlimit2 setlimit2.pas --setlimit=1000000000 setlimit2.pas:2: warning: constructing limited integer set `-2147483648 .. -1147483649'; setlimit2.pas:2: warning: use `--setlimit=NUMBER' to change the size limit at compile time. setlimit2.pas:5: internal compiler error: Segmentation fault Please submit a full bug report, with preprocessed source if appropriate. See URL:http://gcc.gnu.org/bugs.html for instructions.
Without --setlimit, the results are correct (the invalid set initializers are detected)
[G4:~/gnu/testgpc/adriaan] adriaan% gpc -o setlimit2 setlimit2.pas setlimit2.pas:2: warning: constructing limited integer set `-2147483648 .. -2147483393'; setlimit2.pas:2: warning: use `--setlimit=NUMBER' to change the size limit at compile time. setlimit2.pas:3: warning: constructing limited integer set `0 .. 255'; setlimit2.pas:3: warning: use `--setlimit=NUMBER' to change the size limit at compile time. setlimit2.pas:5: error: invalid set initializer setlimit2.pas:6: error: invalid set initializer
Regards,
Adriaan van Os