aboutsummaryrefslogtreecommitdiffstats
path: root/src/vhdl/sem.adb
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2014-12-29 08:20:50 +0100
committerTristan Gingold <tgingold@free.fr>2014-12-29 08:20:50 +0100
commit17082aaf70426f2204b4259e45b1ca6e315bd439 (patch)
treee92e12bf92c6b6c4e52d92981ce75d430750d225 /src/vhdl/sem.adb
parentf77be8349e5c0d5924222af0c5fc059c6ae5b271 (diff)
downloadghdl-17082aaf70426f2204b4259e45b1ca6e315bd439.tar.gz
ghdl-17082aaf70426f2204b4259e45b1ca6e315bd439.tar.bz2
ghdl-17082aaf70426f2204b4259e45b1ca6e315bd439.zip
Rework string literals: store literals position.
Diffstat (limited to 'src/vhdl/sem.adb')
-rw-r--r--src/vhdl/sem.adb20
1 files changed, 7 insertions, 13 deletions
diff --git a/src/vhdl/sem.adb b/src/vhdl/sem.adb
index 8a0c0338b..a8cbbd4f3 100644
--- a/src/vhdl/sem.adb
+++ b/src/vhdl/sem.adb
@@ -1351,28 +1351,22 @@ package body Sem is
| Iir_Kind_Ascending_Type_Attribute =>
return Are_Trees_Equal (Get_Prefix (Left), Get_Prefix (Right));
- when Iir_Kind_String_Literal
- | Iir_Kind_Bit_String_Literal =>
- if Get_Kind (Left) = Iir_Kind_Bit_String_Literal
- and then Get_Bit_String_Base (Left)
- /= Get_Bit_String_Base (Right)
- then
+ when Iir_Kind_String_Literal8 =>
+ if Get_Bit_String_Base (Left) /= Get_Bit_String_Base (Right) then
return False;
end if;
declare
use Str_Table;
- Len : Nat32;
- L_Ptr : String_Fat_Acc;
- R_Ptr : String_Fat_Acc;
+ Len : constant Nat32 := Get_String_Length (Left);
+ L_Id : constant String8_Id := Get_String8_Id (Left);
+ R_Id : constant String8_Id := Get_String8_Id (Right);
begin
- Len := Get_String_Length (Left);
if Get_String_Length (Right) /= Len then
return False;
end if;
- L_Ptr := Get_String_Fat_Acc (Get_String_Id (Left));
- R_Ptr := Get_String_Fat_Acc (Get_String_Id (Right));
for I in 1 .. Len loop
- if L_Ptr (I) /= R_Ptr (I) then
+ if Element_String8 (L_Id, I) /= Element_String8 (R_Id, I)
+ then
return False;
end if;
end loop;