larmel / lacc

A simple, self-hosting C compiler
MIT License
872 stars 64 forks source link

Failing tests #12

Closed ibara closed 2 years ago

ibara commented 5 years ago

Hi!

On OpenBSD, the following tests fail:

1.

Result differ: was 6, expected 0.
Result differ: was 6, expected 0.
Result differ: was 6, expected 0.
Result differ: was 6, expected 0.
[-E: Wrong result!] [-S: Wrong result!] [-c: Wrong result!] [-c -O1: Wrong result!] :: test/c99/va_copy.c

2.

test/gnu/alloca.c:1:20: error: alloca.h: No such file or directory
test/gnu/alloca.c: Invalid input file!

This one is an easy fix; change the first line of test/gnu/alloca.c from

#include <alloca.h>

to

#ifdef __OpenBSD__
#include <stdlib.h>
#else
#include <alloca.h>
#endif

3.

Output differ:
1,2c1,2
< sizeof: (8, 2305843009213693952)
< offset: (0, 4)
---
> sizeof: (4611686018427387912, 2305843009213693952)
> offset: (4611686018427387904, 4611686018427387908)
Output differ:
1,2c1,2
< sizeof: (8, 2305843009213693952)
< offset: (0, 4)
---
> sizeof: (4611686018427387912, 2305843009213693952)
> offset: (4611686018427387904, 4611686018427387908)
Output differ:
1,2c1,2
< sizeof: (8, 2305843009213693952)
< offset: (0, 4)
---
> sizeof: (4611686018427387912, 2305843009213693952)
> offset: (4611686018427387904, 4611686018427387908)
Output differ:
1,2c1,2
< sizeof: (8, 2305843009213693952)
< offset: (0, 4)
---
> sizeof: (4611686018427387912, 2305843009213693952)
> offset: (4611686018427387904, 4611686018427387908)
[-E: Wrong result!] [-S: Wrong result!] [-c: Wrong result!] [-c -O1: Wrong result!] :: test/gnu/large-objects.c

The reference compiler is gcc-8.3.0; clang-7.0.1 has additional test failures in the test/asm directory, but those are shortcomings of clang, not lacc.

Thanks!

larmel commented 5 years ago

I fixed 1 and 2, but 3 is more tricky. It tries to validate support for extremely large objects, which technically does not need to be supported (it is not in clang, and apparently not in all versions of gcc). I should probably rewrite tests invoking undefined/unspecified behavior to not rely on any other compiler.

Thank you for reporting!