Fix compiler getting stuck on optimizing infinite loop
This commit is contained in:
parent
9bd3d3391a
commit
24cc6e20c8
|
@ -7,6 +7,7 @@
|
|||
#define MMAP_NO_BASIC 0x36
|
||||
#define MMAP_NO_ROM 0x35
|
||||
#define MMAP_RAM 0x30
|
||||
#define MMAP_CHAR_ROM 0x31
|
||||
|
||||
// Install an IRQ an NMI trampoline, that routes the kernal interrupts
|
||||
// through an intermediate trampoline when the kernal ROM is not paged
|
||||
|
|
|
@ -89,6 +89,9 @@ ex:
|
|||
|
||||
__asm irq1
|
||||
{
|
||||
lda $d019
|
||||
bpl ex2
|
||||
|
||||
ldx nextIRQ
|
||||
l1:
|
||||
lda rasterIRQNext, x
|
||||
|
@ -131,7 +134,6 @@ e2:
|
|||
lda npos
|
||||
sta tpos
|
||||
|
||||
asl $d019
|
||||
jmp ex
|
||||
|
||||
e1:
|
||||
|
@ -144,7 +146,11 @@ e1:
|
|||
|
||||
ex:
|
||||
asl $d019
|
||||
jmp $ea81
|
||||
|
||||
ex2:
|
||||
LDA $DC0D
|
||||
cli
|
||||
jmp $ea31
|
||||
}
|
||||
|
||||
|
@ -268,12 +274,13 @@ void rirq_init(bool kernalIRQ)
|
|||
{
|
||||
sei
|
||||
|
||||
#if 0
|
||||
// disable CIA interrupts
|
||||
|
||||
lda #$7f
|
||||
sta $dc0d
|
||||
sta $dd0d
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
if (kernalIRQ)
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#include "tinyfont.h"
|
||||
#include <stdlib.h>
|
||||
#include <c64/asm6502.h>
|
||||
#include <string.h>
|
||||
|
||||
void bm_init(Bitmap * bm, char * data, char cw, char ch)
|
||||
{
|
||||
|
|
|
@ -964,9 +964,9 @@ int scanf_func(void * fparam)
|
|||
return getchar();
|
||||
}
|
||||
|
||||
int sscanf(const char * fmt, const char * str, ...)
|
||||
int sscanf(const char * str, const char * fmt, ...)
|
||||
{
|
||||
return fpscanf(fmt, sscanf_func, &str, (void **)((&str) + 1));
|
||||
return fpscanf(fmt, sscanf_func, &str, (void **)((&fmt) + 1));
|
||||
}
|
||||
|
||||
int scanf(const char * fmt, ...)
|
||||
|
|
|
@ -18,7 +18,7 @@ int sprintf(char * str, const char * fmt, ...);
|
|||
|
||||
int scanf(const char * fmt, ...);
|
||||
|
||||
int sscanf(const char * fmt, const char * str, ...);
|
||||
int sscanf(const char * str, const char * fmt, ...);
|
||||
|
||||
#pragma compile("stdio.c")
|
||||
|
||||
|
|
|
@ -7872,7 +7872,7 @@ bool NativeCodeBasicBlock::MergeBasicBlocks(void)
|
|||
changed = true;
|
||||
}
|
||||
|
||||
while (mTrueJump && mTrueJump->mIns.Size() == 0 && !mTrueJump->mFalseJump && !mTrueJump->mLocked && mTrueJump != this)
|
||||
while (mTrueJump && mTrueJump->mIns.Size() == 0 && !mTrueJump->mFalseJump && !mTrueJump->mLocked && mTrueJump != this && mTrueJump->mTrueJump != mTrueJump)
|
||||
{
|
||||
mTrueJump->mNumEntries--;
|
||||
mTrueJump = mTrueJump->mTrueJump;
|
||||
|
@ -7880,7 +7880,7 @@ bool NativeCodeBasicBlock::MergeBasicBlocks(void)
|
|||
changed = true;
|
||||
}
|
||||
|
||||
while (mFalseJump && mFalseJump->mIns.Size() == 0 && !mFalseJump->mFalseJump && !mFalseJump->mLocked && mFalseJump != this)
|
||||
while (mFalseJump && mFalseJump->mIns.Size() == 0 && !mFalseJump->mFalseJump && !mFalseJump->mLocked && mFalseJump != this && mFalseJump->mTrueJump != mFalseJump)
|
||||
{
|
||||
mFalseJump->mNumEntries--;
|
||||
mFalseJump = mFalseJump->mTrueJump;
|
||||
|
@ -8584,6 +8584,8 @@ bool NativeCodeBasicBlock::JoinTailCodeSequences(void)
|
|||
if (mTrueJump && mFalseJump && !mTrueJump->mFalseJump && !mFalseJump->mFalseJump && mTrueJump->mTrueJump == mFalseJump->mTrueJump)
|
||||
{
|
||||
if (mTrueJump->mIns.Size() > mFalseJump->mIns.Size())
|
||||
{
|
||||
if (mTrueJump->mTrueJump != mFalseJump)
|
||||
{
|
||||
int i = 0, offset = mTrueJump->mIns.Size() - mFalseJump->mIns.Size();
|
||||
while (i < mFalseJump->mIns.Size() && mFalseJump->mIns[i].IsSame(mTrueJump->mIns[i + offset]))
|
||||
|
@ -8600,7 +8602,10 @@ bool NativeCodeBasicBlock::JoinTailCodeSequences(void)
|
|||
changed = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (mFalseJump->mTrueJump != mTrueJump)
|
||||
{
|
||||
int i = 0, offset = mFalseJump->mIns.Size() - mTrueJump->mIns.Size();
|
||||
while (i < mTrueJump->mIns.Size() && mTrueJump->mIns[i].IsSame(mFalseJump->mIns[i + offset]))
|
||||
|
@ -8617,6 +8622,7 @@ bool NativeCodeBasicBlock::JoinTailCodeSequences(void)
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
if (mTrueJump && mTrueJump->JoinTailCodeSequences())
|
||||
changed = true;
|
||||
|
|
Loading…
Reference in New Issue