diff options
-rw-r--r-- | src/synth/synth-inference.adb | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/synth/synth-inference.adb b/src/synth/synth-inference.adb index 4ac726c32..e9a6eeab0 100644 --- a/src/synth/synth-inference.adb +++ b/src/synth/synth-inference.adb @@ -464,7 +464,13 @@ package body Synth.Inference is Enable : Net; begin if not Flags.Flag_Debug_Noinference then - Find_Longest_Loop (Val, Prev_Val, Last_Mux, Len); + if Get_First_Sink (Prev_Val) = No_Input then + -- PREV_VAL is never read, so there cannot be any loop. + -- This is an important optimization for control signals. + Len := -1; + else + Find_Longest_Loop (Val, Prev_Val, Last_Mux, Len); + end if; else Len := -1; end if; |