This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Ada] Better messages for missing entities in configurable runtime


A new mechanism has been implemented that allows specialization of
error messages for missing entities in a configurable run-time.
Instead of just outputting the (sometimes obscure) name of the
entity involved, a more meaningful message can be issued. This
new mechanism is used for a case of rendezvous not being supported
and also for packed array operations not being supported.

Also in the case of unsupported array packing, the message is now
issued explicitly on the array type entity, as shown in this
test program (compiled with -gnatld7 -gnatj55)

     1. pragma No_Run_Time;
     2. procedure BadPack (M : Integer) is
     3.    type R is mod 2 ** 43;
     4.    type A is array (1 .. 10) of R;
                |
        >>> packing of 43-bit components not allowed
            in no run time mode

     5.    pragma Pack (A);
     6.    AV : A;
     7. begin
     8.    AV (M) := 3;
                  |
        >>> construct not allowed in no run time mode
        >>> packed component size of 43 is not
            supported

     9. end;

Tested on x86_64-pc-linux-gnu, committed on trunk

2014-10-17  Robert Dewar  <dewar@adacore.com>

	* exp_pakd.adb: Move bit packed entity tables to spec.
	* exp_pakd.ads: Move bit packed entity tables here from body.
	* freeze.adb (Freeze_Array_Type): Check that packed array type
	is supported.
	* rtsfind.adb (PRE_Id_Table): New table (Entity_Not_Defined):
	Specialize messages using PRE_Id_Table.
	* uintp.ads, uintp.adb (UI_Image): New functional form.

Attachment: difs
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]