14 files changed:
--- /dev/null
+-- RUN: %llvmgcc -c %s -o /dev/null
+procedure Array_Constructor is
+ A : array (Integer range <>) of Boolean := (True, False);
+begin
+ null;
+end;
--- /dev/null
+-- RUN: %llvmgcc -c %s -o /dev/null
+procedure Array_Range_Ref is
+ A : String (1 .. 3);
+ B : String := A (A'RANGE)(1 .. 3);
+begin
+ null;
+end;
--- /dev/null
+-- RUN: %llvmgcc -c %s -o /dev/null
+procedure Array_Ref is
+ type A is array (Natural range <>, Natural range <>) of Boolean;
+ type A_Access is access A;
+ function Get (X : A_Access) return Boolean is
+ begin
+ return X (0, 0);
+ end;
+begin
+ null;
+end;
--- /dev/null
+-- RUN: %llvmgcc -c %s -o /dev/null
+procedure Array_Size is
+ subtype S is String (1 .. 2);
+ type R is record
+ A : S;
+ end record;
+ X : R;
+begin
+ null;
+end;
--- /dev/null
+-- RUN: %llvmgcc -c %s -o /dev/null
+with Ada.Finalization;
+package Emit_Var is
+ type Search_Type is new Ada.Finalization.Controlled with null record;
+end;
--- /dev/null
+-- RUN: %llvmgcc -c %s -o /dev/null
+-- RUN: %llvmgcc -c %s -O2 -o /dev/null
+package body Fat_Fields is
+ procedure Proc is
+ begin
+ if P = null then
+ null;
+ end if;
+ end;
+end;
--- /dev/null
+package Fat_Fields is
+ pragma Elaborate_Body;
+ type A is array (Positive range <>) of Boolean;
+ type A_Ptr is access A;
+ P : A_Ptr := null;
+end;
--- /dev/null
+-- RUN: %llvmgcc -c %s -o /dev/null
+package body Non_LValue is
+ function A (Y : U) return String is
+ begin
+ return Y.X.B;
+ end;
+end;
--- /dev/null
+package Non_LValue is
+ type T (Length : Natural) is record
+ A : String (1 .. Length);
+ B : String (1 .. Length);
+ end record;
+ type T_Ptr is access all T;
+ type U is record
+ X : T_Ptr;
+ end record;
+ function A (Y : U) return String;
+end;
--- /dev/null
+-- RUN: %llvmgcc -c %s -o /dev/null
+function Switch (N : Integer) return Integer is
+begin
+ case N is
+ when Integer'First .. -1 =>
+ return -1;
+ when 0 =>
+ return 0;
+ when others =>
+ return 1;
+ end case;
+end;
--- /dev/null
+-- RUN: %llvmgcc -c %s -o /dev/null
+package body Var_Size is
+ function A (X : T) return String is
+ begin
+ return X.A;
+ end;
+end;
--- /dev/null
+package Var_Size is
+ type T (Length : Natural) is record
+ A : String (1 .. Length);
+ B : String (1 .. Length);
+ end record;
+ function A (X : T) return String;
+end;
--- /dev/null
+-- RUN: %llvmgcc -c %s -o /dev/null
+procedure VCE is
+ S : String (1 .. 2);
+ B : Character := 'B';
+begin
+ S := 'A' & B;
+end;
--- /dev/null
+-- RUN: %llvmgcc -c %s -o /dev/null
+procedure VCE_LV is
+ type P is access String ;
+ type T is new P (5 .. 7);
+ subtype U is String (5 .. 7);
+ X : T := new U'(others => 'A');
+begin
+ null;
+end;