aboutsummaryrefslogtreecommitdiffstats
path: root/sem.adb
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2014-09-25 07:38:09 +0200
committerTristan Gingold <tgingold@free.fr>2014-09-25 07:38:09 +0200
commit68d26922e31aad3cb34dd3b7689bcec75ad70fcb (patch)
treeed7d40115bd74b0c4216a94bfc21d5af0837ce4f /sem.adb
parent5edf93b87e8f3528d9063df08bf70bf538d72545 (diff)
downloadghdl-68d26922e31aad3cb34dd3b7689bcec75ad70fcb.tar.gz
ghdl-68d26922e31aad3cb34dd3b7689bcec75ad70fcb.tar.bz2
ghdl-68d26922e31aad3cb34dd3b7689bcec75ad70fcb.zip
Add a python script to automatically generate disp_tree.
Diffstat (limited to 'sem.adb')
-rw-r--r--sem.adb34
1 files changed, 21 insertions, 13 deletions
diff --git a/sem.adb b/sem.adb
index f34ccc8cb..60d537bba 100644
--- a/sem.adb
+++ b/sem.adb
@@ -847,7 +847,7 @@ package body Sem is
Block_Spec := Sem_Index_Specification
(Block_Spec, Get_Type (Get_Generation_Scheme (Block)));
if Block_Spec /= Null_Iir then
- Set_Prefix (Block_Spec, Block);
+ Set_Prefix (Block_Spec, Block_Name);
Set_Block_Specification (Block_Conf, Block_Spec);
Block_Spec_Kind := Get_Kind (Block_Spec);
end if;
@@ -855,7 +855,7 @@ package body Sem is
case Block_Spec_Kind is
when Iir_Kind_Simple_Name =>
- Set_Block_Specification (Block_Conf, Block);
+ Set_Block_Specification (Block_Conf, Block_Name);
when Iir_Kind_Indexed_Name
| Iir_Kind_Slice_Name =>
null;
@@ -1369,22 +1369,30 @@ package body Sem is
when Iir_Kind_Choice_By_None
| Iir_Kind_Choice_By_Others =>
- return Are_Trees_Equal (Get_Associated (Left),
- Get_Associated (Right));
+ return Are_Trees_Equal (Get_Associated_Expr (Left),
+ Get_Associated_Expr (Right));
when Iir_Kind_Choice_By_Name =>
- if not Are_Trees_Equal (Get_Name (Left), Get_Name (Right)) then
+ if not Are_Trees_Equal (Get_Choice_Name (Left),
+ Get_Choice_Name (Right))
+ then
+ return False;
+ end if;
+ return Are_Trees_Equal (Get_Associated_Expr (Left),
+ Get_Associated_Expr (Right));
+ when Iir_Kind_Choice_By_Expression =>
+ if not Are_Trees_Equal (Get_Choice_Expression (Left),
+ Get_Choice_Expression (Right)) then
return False;
end if;
- return Are_Trees_Equal (Get_Associated (Left),
- Get_Associated (Right));
- when Iir_Kind_Choice_By_Expression
- | Iir_Kind_Choice_By_Range =>
- if not Are_Trees_Equal (Get_Expression (Left),
- Get_Expression (Right)) then
+ return Are_Trees_Equal (Get_Associated_Expr (Left),
+ Get_Associated_Expr (Right));
+ when Iir_Kind_Choice_By_Range =>
+ if not Are_Trees_Equal (Get_Choice_Range (Left),
+ Get_Choice_Range (Right)) then
return False;
end if;
- return Are_Trees_Equal (Get_Associated (Left),
- Get_Associated (Right));
+ return Are_Trees_Equal (Get_Associated_Expr (Left),
+ Get_Associated_Expr (Right));
when Iir_Kind_Character_Literal =>
return Are_Trees_Equal (Get_Named_Entity (Left),
Get_Named_Entity (Right));