aboutsummaryrefslogtreecommitdiffstats
path: root/iirs_utils.adb
diff options
context:
space:
mode:
Diffstat (limited to 'iirs_utils.adb')
-rw-r--r--iirs_utils.adb38
1 files changed, 21 insertions, 17 deletions
diff --git a/iirs_utils.adb b/iirs_utils.adb
index 0a336c534..a16fa0b2d 100644
--- a/iirs_utils.adb
+++ b/iirs_utils.adb
@@ -175,7 +175,7 @@ package body Iirs_Utils is
| Iir_Kind_Slice_Name
| Iir_Kind_Selected_Element
| Iir_Kind_Selected_By_All_Name =>
- Adecl := Get_Prefix (Adecl);
+ Adecl := Get_Base_Name (Adecl);
when Iir_Kinds_Literal
| Iir_Kind_Enumeration_Literal
| Iir_Kinds_Monadic_Operator
@@ -815,22 +815,26 @@ package body Iirs_Utils is
Adecl: Iir;
begin
Adecl := Get_Base_Name (Name);
- case Get_Kind (Adecl) is
- when Iir_Kind_Variable_Declaration
- | Iir_Kind_Variable_Interface_Declaration
- | Iir_Kind_Constant_Declaration
- | Iir_Kind_Constant_Interface_Declaration
- | Iir_Kind_Implicit_Dereference
- | Iir_Kind_Dereference
- | Iir_Kind_Attribute_Value
- | Iir_Kind_Function_Call =>
- return False;
- when Iir_Kind_Signal_Declaration
- | Iir_Kind_Signal_Interface_Declaration =>
- return True;
- when others =>
- Error_Kind ("is_signal_object", Adecl);
- end case;
+ loop
+ case Get_Kind (Adecl) is
+ when Iir_Kind_Variable_Declaration
+ | Iir_Kind_Variable_Interface_Declaration
+ | Iir_Kind_Constant_Declaration
+ | Iir_Kind_Constant_Interface_Declaration
+ | Iir_Kind_Implicit_Dereference
+ | Iir_Kind_Dereference
+ | Iir_Kind_Attribute_Value
+ | Iir_Kind_Function_Call =>
+ return False;
+ when Iir_Kind_Signal_Declaration
+ | Iir_Kind_Signal_Interface_Declaration =>
+ return True;
+ when Iir_Kind_Object_Alias_Declaration =>
+ Adecl := Get_Base_Name (Get_Name (Adecl));
+ when others =>
+ Error_Kind ("is_signal_object", Adecl);
+ end case;
+ end loop;
end Is_Signal_Object;