An alternative to D48597.
Fixes PR37936.
The problem is as follows:
- indvars marks %dec as NUW.
- loop-instsimplify runs instsimplify, which constant-folds %dec to -1 (D47908)
- loop-reduce tries to do some further modification, but crashes with an type assertion in cast, because %dec is no longer an Instruction,
If the runline is split into two, i.e. you first run -indvars -loop-instsimplify,
store that into a file, and then run -loop-reduce, there is no crash.
So it looks like the problem is due to -loop-instsimplify not discarding SCEV.
But in this case we can just not crash if it's not an Instruction.
This is just a local fix, unlike D48597, so there may very well be other problems.
Naming here is also confusing. V assumes that it should be a value. If there is no strong reason to keep it an instruction, I'd suggest reworking this code to deal with values.