Re: [Tinycc-devel] Compiling preprocessed files with tinycc?

2013-03-20 Thread Thomas Preud'homme
Le mercredi 20 mars 2013 04:10:28, Austin English a écrit :
 Howdy,
 
 I'm trying to narrow down a file that fails to compile with tinycc,
 but works with gcc/clang. The exact error is:
 stateblock.c:875: error: '}' expected (got ,)

Note that you should precompile with tcc itself if you want to have a good 
diagnostic because some expression in headers are dependant of the compilers. 
In the libc headers there is a few expression using gcc's extension which 
don't work for tcc but there is a conditional mechanism to select an 
alternative for other compilers.

Best regards,

Thomas


signature.asc
Description: This is a digitally signed message part.
___
Tinycc-devel mailing list
Tinycc-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/tinycc-devel


Re: [Tinycc-devel] Compiling preprocessed files with tinycc?

2013-03-20 Thread Austin English
On Tue, Mar 19, 2013 at 10:02 PM, Milutin Jovanović
jovanovic.milu...@gmail.com wrote:

 This is only a filename, or precisely extension issue. If you rename your
 intermediate file from stateblock.i to stateblock-i.c, I believe
 everything should work.

 Miki.


 On 19 March 2013 23:10, Austin English austinengl...@gmail.com wrote:

 Howdy,

 I'm trying to narrow down a file that fails to compile with tinycc,
 but works with gcc/clang. The exact error is:
 stateblock.c:875: error: '}' expected (got ,)

 I wanted to use multidelta to reduce the testcase, but quickly found
 that trying to recompile a preprocessed file with tcc fails:
 austin@debian-home:~/src/wine-tcc/dlls/d3d8/tests$ tcc -E -I.
 -I../../../include -DWINE_STRICT_PROTOTYPES
 -DWINE_NO_NAMELESS_EXTENSION -DWIDL_C_INLINE_WRAPPERS  -D_REENTRANT
 -fPIC  -I/usr/include/freetype2 -o stateblock.i stateblock.c
 austin@debian-home:~/src/wine-tcc/dlls/d3d8/tests$ echo $?
 0
 austin@debian-home:~/src/wine-tcc/dlls/d3d8/tests$ tcc -c -I.
 -I../../../include -DWINE_STRICT_PROTOTYPES
 -DWINE_NO_NAMELESS_EXTENSION -DWIDL_C_INLINE_WRAPPERS  -D_REENTRANT
 -fPIC  -I/usr/include/freetype2 -o stateblock.o stateblock.i
 stateblock.i:1: error: unrecognized file type
 austin@debian-home:~/src/wine-tcc/dlls/d3d8/tests$ echo $?
 1

 but this works with gcc/clang:
 austin@debian-home:~/src/wine-tcc/dlls/d3d8/tests$ gcc -E -I.
 -I../../../include -DWINE_STRICT_PROTOTYPES
 -DWINE_NO_NAMELESS_EXTENSION -DWIDL_C_INLINE_WRAPPERS  -D_REENTRANT
 -fPIC  -I/usr/include/freetype2 -o stateblock.i stateblock.c
 austin@debian-home:~/src/wine-tcc/dlls/d3d8/tests$ echo $?
 0
 austin@debian-home:~/src/wine-tcc/dlls/d3d8/tests$ gcc -c -I.
 -I../../../include -DWINE_STRICT_PROTOTYPES
 -DWINE_NO_NAMELESS_EXTENSION -DWIDL_C_INLINE_WRAPPERS  -D_REENTRANT
 -fPIC  -I/usr/include/freetype2 -o stateblock.o stateblock.i
 austin@debian-home:~/src/wine-tcc/dlls/d3d8/tests$ echo $?
 0

 Is it possible to get tcc to use the preprocessed source?

 Thanks in advance,
 -Austin

 ___
 Tinycc-devel mailing list
 Tinycc-devel@nongnu.org
 https://lists.nongnu.org/mailman/listinfo/tinycc-devel



 ___
 Tinycc-devel mailing list
 Tinycc-devel@nongnu.org
 https://lists.nongnu.org/mailman/listinfo/tinycc-devel

Yes, this (mostly) works:
austin@debian-home:~/src/wine-tcc/dlls/d3d8/tests$ tcc -E -I. -I.
-I../../../include -I../../../include  -DWINE_STRICT_PROTOTYPES
-DWINE_NO_NAMELESS_EXTENSION -DWIDL_C_INLINE_WRAPPERS  -D_REENTRANT
-fPIC  -I/usr/include/freetype2-g  -o stateblock-i.c stateblock.c
austin@debian-home:~/src/wine-tcc/dlls/d3d8/tests$ tcc -c -I. -I.
-I../../../include -I../../../include  -DWINE_STRICT_PROTOTYPES
-DWINE_NO_NAMELESS_EXTENSION -DWIDL_C_INLINE_WRAPPERS  -D_REENTRANT
-fPIC  -I/usr/include/freetype2-g  -o stateblock.o stateblock-i.c
stateblock-i.c:14963: error: invalid number

this exposes a second bug:
#define MAX_LANA 0xfe
...
typedef struct _LANA_ENUM
{
UCHAR length;
UCHAR lana[MAX_LANA+1];
} LANA_ENUM, *PLANA_ENUM;

is expanded to:
typedef struct _LANA_ENUM
{
UCHAR length;
UCHAR lana[0xfe+1];
} LANA_ENUM, *PLANA_ENUM;

whereas with gcc/clang:
typedef struct _LANA_ENUM
{
 UCHAR length;
 UCHAR lana[0xfe +1];
} LANA_ENUM, *PLANA_ENUM;

(I filed that here: https://savannah.nongnu.org/bugs/index.php?38557)

manually correcting that, I'm able to preprocess the problematic file down to:
austin@debian-home:~/src/wine-tcc/dlls/d3d8/tests$ cat stateblock.i.tcc.c
typedef struct _D3DVECTOR
{
  float x;
  float y;
  float z;
} D3DMATRIX;

struct transform_data
{
  D3DMATRIX view;
  D3DMATRIX projection;
  D3DMATRIX texture0;
  D3DMATRIX texture7;
  D3DMATRIX world0;
  D3DMATRIX world255;
};

static const struct transform_data transform_default_data =
{
{{{
1.0f, 0.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f, 0.0f,
0.0f, 0.0f, 1.0f, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f,
}}},
{{{
1.0f, 0.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f, 0.0f,
0.0f, 0.0f, 1.0f, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f,
}}},
{{{
1.0f, 0.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f, 0.0f,
0.0f, 0.0f, 1.0f, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f,
}}},
{{{
1.0f, 0.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f, 0.0f,
0.0f, 0.0f, 1.0f, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f,
}}},
{{{
1.0f, 0.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f, 0.0f,
0.0f, 0.0f, 1.0f, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f,
}}},
{{{
1.0f, 0.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f, 0.0f,
0.0f, 0.0f, 1.0f, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f,
}}},
};

int main(void)
{
return 0;
}

compiling that minimalized source with gcc/clang does generate some
warnings, but does not fail (as it does with tcc). The full source
file generates no errors or warnings on gcc/clang.

See also 

Re: [Tinycc-devel] Compiling preprocessed files with tinycc?

2013-03-20 Thread Daniel Glöckner
On Wed, Mar 20, 2013 at 01:01:10PM -0700, Austin English wrote:
 manually correcting that, I'm able to preprocess the problematic file down to:
 austin@debian-home:~/src/wine-tcc/dlls/d3d8/tests$ cat stateblock.i.tcc.c
 typedef struct _D3DVECTOR
 {
   float x;
   float y;
   float z;
 } D3DMATRIX;

You are aware that D3DMATRIX is supposed to consist of 16 floats?

  Daniel

___
Tinycc-devel mailing list
Tinycc-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/tinycc-devel