From e4e997fef22097d585e74e1b85fec91ac49900c9 Mon Sep 17 00:00:00 2001 From: drmortalwombat <90205530+drmortalwombat@users.noreply.github.com> Date: Thu, 8 Aug 2024 22:47:18 +0200 Subject: [PATCH] Fix gcc build autotest --- autotest/makefile | 6 ++++++ oscar64/InterCode.cpp | 8 +++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/autotest/makefile b/autotest/makefile index 25c626c..567d436 100644 --- a/autotest/makefile +++ b/autotest/makefile @@ -44,5 +44,11 @@ stripedarraytest: stripedarraytest.c $(OSCAR64_CC) -e -Os -n $< $(OSCAR64_CC) -e -O3 -n $< +autorefreturn: autorefreturn.cpp + $(OSCAR64_CC) -e -O2 -n $< + $(OSCAR64_CC) -e -O0 -n $< + $(OSCAR64_CC) -e -Os -n $< + $(OSCAR64_CC) -e -O3 -n $< + clean: @$(RM) *.asm *.bcs *.int *.lbl *.map *.prg diff --git a/oscar64/InterCode.cpp b/oscar64/InterCode.cpp index abd2baf..98dd625 100644 --- a/oscar64/InterCode.cpp +++ b/oscar64/InterCode.cpp @@ -8324,9 +8324,15 @@ void InterCodeBasicBlock::UpdateLocalIntegerRangeSetsForward(const GrowingVariab break; #if 1 case IA_DIVU: - vr = mProc->mLocalValueRange[ins->mSrc[1].mTemp]; + + if (ins->mSrc[1].mTemp >= 0) + vr = mProc->mLocalValueRange[ins->mSrc[1].mTemp]; + else + vr.LimitMax(ins->mSrc[1].mIntConst); + vr.LimitMin(0); vr.mMinValue = 0; + if (ins->mSrc[0].mTemp < 0 && ins->mSrc[0].mIntConst > 1) vr.mMaxValue /= ins->mSrc[0].mIntConst; break;