diff --git a/test/FrontendAda/array_constructor.adb b/test/FrontendAda/array_constructor.adb new file mode 100644 index 00000000000..d75b8e0b315 --- /dev/null +++ b/test/FrontendAda/array_constructor.adb @@ -0,0 +1,6 @@ +-- RUN: %llvmgcc -c %s -o /dev/null +procedure Array_Constructor is + A : array (Integer range <>) of Boolean := (True, False); +begin + null; +end; diff --git a/test/FrontendAda/array_range_ref.adb b/test/FrontendAda/array_range_ref.adb new file mode 100644 index 00000000000..f7cba01ed81 --- /dev/null +++ b/test/FrontendAda/array_range_ref.adb @@ -0,0 +1,7 @@ +-- 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; diff --git a/test/FrontendAda/array_ref.adb b/test/FrontendAda/array_ref.adb new file mode 100644 index 00000000000..093233a31ff --- /dev/null +++ b/test/FrontendAda/array_ref.adb @@ -0,0 +1,11 @@ +-- 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; diff --git a/test/FrontendAda/array_size.adb b/test/FrontendAda/array_size.adb new file mode 100644 index 00000000000..da4c5891be2 --- /dev/null +++ b/test/FrontendAda/array_size.adb @@ -0,0 +1,10 @@ +-- 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; diff --git a/test/FrontendAda/emit_var.ads b/test/FrontendAda/emit_var.ads new file mode 100644 index 00000000000..b8d5f8f581e --- /dev/null +++ b/test/FrontendAda/emit_var.ads @@ -0,0 +1,5 @@ +-- 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; diff --git a/test/FrontendAda/fat_fields.adb b/test/FrontendAda/fat_fields.adb new file mode 100644 index 00000000000..906e34ee0be --- /dev/null +++ b/test/FrontendAda/fat_fields.adb @@ -0,0 +1,10 @@ +-- 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; diff --git a/test/FrontendAda/fat_fields.ads b/test/FrontendAda/fat_fields.ads new file mode 100644 index 00000000000..d3eab3e2866 --- /dev/null +++ b/test/FrontendAda/fat_fields.ads @@ -0,0 +1,6 @@ +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; diff --git a/test/FrontendAda/non_lvalue.adb b/test/FrontendAda/non_lvalue.adb new file mode 100644 index 00000000000..2a92e52fbae --- /dev/null +++ b/test/FrontendAda/non_lvalue.adb @@ -0,0 +1,7 @@ +-- 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; diff --git a/test/FrontendAda/non_lvalue.ads b/test/FrontendAda/non_lvalue.ads new file mode 100644 index 00000000000..7d4eeed8b8e --- /dev/null +++ b/test/FrontendAda/non_lvalue.ads @@ -0,0 +1,11 @@ +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; diff --git a/test/FrontendAda/switch.adb b/test/FrontendAda/switch.adb new file mode 100644 index 00000000000..0eb20b22cb4 --- /dev/null +++ b/test/FrontendAda/switch.adb @@ -0,0 +1,12 @@ +-- 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; diff --git a/test/FrontendAda/var_size.adb b/test/FrontendAda/var_size.adb new file mode 100644 index 00000000000..2b4d4995e99 --- /dev/null +++ b/test/FrontendAda/var_size.adb @@ -0,0 +1,7 @@ +-- 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; diff --git a/test/FrontendAda/var_size.ads b/test/FrontendAda/var_size.ads new file mode 100644 index 00000000000..6a570cba8bd --- /dev/null +++ b/test/FrontendAda/var_size.ads @@ -0,0 +1,7 @@ +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; diff --git a/test/FrontendAda/vce.adb b/test/FrontendAda/vce.adb new file mode 100644 index 00000000000..3d783d04572 --- /dev/null +++ b/test/FrontendAda/vce.adb @@ -0,0 +1,7 @@ +-- RUN: %llvmgcc -c %s -o /dev/null +procedure VCE is + S : String (1 .. 2); + B : Character := 'B'; +begin + S := 'A' & B; +end; diff --git a/test/FrontendAda/vce_lv.adb b/test/FrontendAda/vce_lv.adb new file mode 100644 index 00000000000..5242b157586 --- /dev/null +++ b/test/FrontendAda/vce_lv.adb @@ -0,0 +1,9 @@ +-- 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;