diff options
-rw-r--r-- | src/vhdl/translate/trans-chap3.adb | 8 | ||||
-rw-r--r-- | src/vhdl/translate/trans-chap6.adb | 10 | ||||
-rw-r--r-- | src/vhdl/vhdl-evaluation.adb | 3 | ||||
-rwxr-xr-x | testsuite/gna/sr3028/testsuite.sh | 2 |
4 files changed, 13 insertions, 10 deletions
diff --git a/src/vhdl/translate/trans-chap3.adb b/src/vhdl/translate/trans-chap3.adb index 5583ee7b9..a0b6bd302 100644 --- a/src/vhdl/translate/trans-chap3.adb +++ b/src/vhdl/translate/trans-chap3.adb @@ -2065,13 +2065,13 @@ package body Trans.Chap3 is end; when Type_Mode_I32 => declare - V : Iir_Int32; + V : Int64; begin - V := Iir_Int32 (Get_Value (Lit)); + V := Get_Value (Lit); if Is_Hi then - return V = Iir_Int32'Last; + return V = Int64 (Iir_Int32'Last); else - return V = Iir_Int32'First; + return V = Int64 (Iir_Int32'First); end if; end; when Type_Mode_P32 => diff --git a/src/vhdl/translate/trans-chap6.adb b/src/vhdl/translate/trans-chap6.adb index ec632c815..7a272ed99 100644 --- a/src/vhdl/translate/trans-chap6.adb +++ b/src/vhdl/translate/trans-chap6.adb @@ -588,14 +588,16 @@ package body Trans.Chap6 is Off := Prefix_Left - Slice_Left; end case; if Off < 0 then - -- Must have been caught by sem. - raise Internal_Error; + Gen_Bound_Error (Index_Range); + Off := 0; + Slice_Length := 0; end if; if Off + Slice_Length > Eval_Discrete_Range_Length (Index_Range) then - -- Must have been caught by sem. - raise Internal_Error; + Gen_Bound_Error (Index_Range); + Off := 0; + Slice_Length := 0; end if; end if; Data.Off := Unsigned_64 (Off); diff --git a/src/vhdl/vhdl-evaluation.adb b/src/vhdl/vhdl-evaluation.adb index e33c2bea4..06c46684c 100644 --- a/src/vhdl/vhdl-evaluation.adb +++ b/src/vhdl/vhdl-evaluation.adb @@ -3576,7 +3576,8 @@ package body Vhdl.Evaluation is is begin if not Eval_Is_Range_In_Bound (A_Range, Sub_Type, Any_Dir) then - Error_Msg_Sem (+A_Range, "static range violates bounds"); + Warning_Msg_Sem (Warnid_Runtime_Error, +A_Range, + "static range violates bounds"); end if; end Eval_Check_Range; diff --git a/testsuite/gna/sr3028/testsuite.sh b/testsuite/gna/sr3028/testsuite.sh index 95ec1c6da..a49a430c1 100755 --- a/testsuite/gna/sr3028/testsuite.sh +++ b/testsuite/gna/sr3028/testsuite.sh @@ -2,7 +2,7 @@ . ../../testenv.sh -analyze_failure vc.vhdl +analyze_failure -Werror=runtime-error vc.vhdl clean |