diff options
author | Tristan Gingold <tgingold@free.fr> | 2014-01-01 10:04:27 +0100 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2014-01-01 10:04:27 +0100 |
commit | c8150ec75d67a046e9e78b61ba26ad5be5fbe187 (patch) | |
tree | 40e83061e2d2ed6a0979808cbacd92cf371a4964 /translate | |
parent | 6ef9b50581989bc7cfcf142cb132a4491c9012a7 (diff) | |
download | ghdl-c8150ec75d67a046e9e78b61ba26ad5be5fbe187.tar.gz ghdl-c8150ec75d67a046e9e78b61ba26ad5be5fbe187.tar.bz2 ghdl-c8150ec75d67a046e9e78b61ba26ad5be5fbe187.zip |
Fix sr2737 (rol/ror with shift = +/- length).
Diffstat (limited to 'translate')
-rw-r--r-- | translate/translation.adb | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/translate/translation.adb b/translate/translation.adb index cccecef06..572e2058e 100644 --- a/translate/translation.adb +++ b/translate/translation.adb @@ -17943,9 +17943,17 @@ package body Translation is Finish_If_Stmt (If_Blk); if Shift = Rotation then + -- * If I1 = LENGTH then + -- * I1 := 0 + Start_If_Stmt (If_Blk, New_Compare_Op (ON_Ge, + New_Obj_Value (Var_I1), + New_Obj_Value (Var_Length), + Ghdl_Bool_Type)); + Init_Var (Var_I1); + Finish_If_Stmt (If_Blk); + -- * for I = 0 to LENGTH - 1 loop -- * RES[I] := L[I1]; - Init_Var (Var_I); Start_Loop_Stmt (Label); Gen_Exit_When (Label, New_Compare_Op (ON_Ge, |