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] | |
This patch ensures that when we clear current values, we also reset
Is_Known_Valid. This probably fixes a few problems. The following
test shows one of them. It now raises CE:
P : Positive := 0; -- P'Valid = False
raised CONSTRAINT_ERROR : inval3.adb:21 index check failed
Whereas before it printed Hello World
pragma Initialize_Scalars;
with Text_IO; use Text_IO;
procedure Inval3 is
pragma Unsuppress (All_Checks);
Hello_World : constant String := "Hello World!";
M : String := Hello_World;
P : Positive := 1;
procedure Muck (X : out Positive) is
Uninit : Positive;
begin
X := Uninit;
end Muck;
procedure Undefined is
begin
P := (Integer'First + P) + Integer'Last + 1;
M (P) := 'J'; -- Where is this 'J' going???
end Undefined;
begin
Muck (P);
Put ("P : Positive :=");
Put (P'Img);
Put ("; -- P'Valid = ");
if P'Valid then
Put ("True");
else
Put ("False");
end if;
New_Line;
Undefined;
Put (M);
New_Line;
Put ("If the above says """ & Hello_World & """"
& ", where did the 'J' go that we assigned to M?");
New_Line;
end Inval3;
Tested on x86_64-pc-linux-gnu, committed on trunk
2009-07-27 Robert Dewar <dewar@adacore.com>
* sem_util.adb, sem_util.ads (Kill_Current_Values): Reset Is_Known_Valid
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] |