The was not 1000000000 in the program I am trying to compile with tcc, but
there was pointer + some small value in constant expression. the only reason
I put 1000000000 in test case was to see in output a value different from
regular pointer to be sure the additional is performed.

Something like

====

char hello[]="hello";
char*hello10=hello+10;

====

were a more correct testcase for constant pointer ariphmetic.

Sorry for that.

And thank you for your work!

On Thu, Nov 20, 2008 at 11:49 PM, Daniel Glöckner <[EMAIL PROTECTED]> wrote:

> On Thu, Nov 20, 2008 at 07:42:59PM +0100, Masha Rabinovich wrote:
> >  main ? 0 : 1, // function pointer is always true
>
> Done.
>
> >  (int)main + (int)1e9, // be sure the result is above 1.000.000.000
>
> I removed the error message again. It was wrong in several ways.
>
> There is no need for the expression to evaluate to a value > 1000000000.
> (int)main may be negative.
>
> Actually I'm not convinced that these two casts must be supported outside
> of functions. Section 6.6 in C99 draft N869 does not talk about casting
> address constants to integers. It does allow implemetations to accept
> other constant expressions, though.
>
> >  (int)main / 2, // here must be compile-time error, tcc can compile it
> >  sin(1) ? 0 : 1, // here must be compile-time error, tcc can compile it
>
> I don't think we should add checks for all variants of invalid code.
> IMHO the main focus should be on correctly compiling valid code.
> Otherwise we'll soon have a not so tiny TinyCC.
>
>  Daniel
>
>
> _______________________________________________
> Tinycc-devel mailing list
> [email protected]
> http://lists.nongnu.org/mailman/listinfo/tinycc-devel
>
_______________________________________________
Tinycc-devel mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/tinycc-devel

Reply via email to