ORCA-C/Tests/Conformance/C25.0.20.CC
Stephen Heumann 91d33b586d Fix various C99+ conformance issues and bugs in test cases.
The main changes made to most tests are:

*Declarations always include explicit types, not relying on implicit int. The declaration of main in most test programs is changed to be "int main (void) {...}", adding an explicit return type and a prototype. (There are still some non-prototyped functions, though.)

*Functions are always declared before use, either by including a header or by providing a declaration for the specific function. The latter approach is usually used for printf, to avoid requiring ORCA/C to process stdio.h when compiling every test case (which might make test runs noticeably slower).

*Make all return statements in non-void functions (e.g. main) return a value.

*Avoid some instances of undefined behavior and type errors in printf and scanf calls.

Several miscellaneous bugs are also fixed.

There are still a couple test cases that intentionally rely on the C89 behavior, to ensure it still works.
2022-10-17 20:17:24 -05:00

121 lines
2.7 KiB
C++

/* Conformance Test 25.0.20: Verification of code generation for instructions */
/* whose only addressing mode is implied */
#include <stdio.h>
int main (void)
{
int i = 0;
asm
{
brl Test
Code: CLC
CLD
CLI
CLV
DEX
DEY
INX
INY
NOP
PHA
PHP
PLA
PLP
RTI
RTS
SEC
SED
SEI
TAX
TAY
TSX
TXA
TXS
TYA
PHX
PHY
PLX
PLY
PHB
PHD
PHK
PLB
PLD
RTL
STP
TCD
TCS
TDC
TSC
TXY
TYX
WAI
XCE
XBA
Data: dcb 0x18
dcb 0xD8
dcb 0x58
dcb 0xB8
dcb 0xCA
dcb 0x88
dcb 0xE8
dcb 0xC8
dcb 0xEA
dcb 0x48
dcb 0x08
dcb 0x68
dcb 0x28
dcb 0x40
dcb 0x60
dcb 0x38
dcb 0xF8
dcb 0x78
dcb 0xAA
dcb 0xA8
dcb 0xBA
dcb 0x8A
dcb 0x9A
dcb 0x98
dcb 0xDA
dcb 0x5A
dcb 0xFA
dcb 0x7A
dcb 0x8B
dcb 0x0B
dcb 0x4B
dcb 0xAB
dcb 0x2B
dcb 0x6B
dcb 0xDB
dcb 0x5B
dcb 0x1B
dcb 0x7B
dcb 0x3B
dcb 0x9B
dcb 0xBB
dcb 0xCB
dcb 0xFB
dcb 0xEB
Test: ldx #42
Lbl1: lda Code,X
cmp Data,X
bne Err1
dex
dex
bpl Lbl1
bra Out
Err1: inc i
Out: nop
}
if (i)
goto Fail;
printf ("Passed Conformance Test 25.0.20\n");
return 0;
Fail:
printf ("Failed Conformance Test 25.0.20\n");
}