Bug#322913: tcc: _Bool exists but doesn't comply with C99

2005-08-13 Thread Hrvoje Niksic
Package: tcc
Version: 0.9.23-1
Severity: normal

Tcc doesn't correctly implement casts from floating point types to _Bool. 
According to C99, such casts must return true for all numbers except 0:

   When any scalar value is converted to _Bool, the result is 0 if the value
   compares equal to 0; otherwise, the result is 1.

This means that (_Bool) 0.1 must be 1; with tcc it's 0.  The following
trivial program can be used to test this:

#include 
int
main (void)
{
  printf ("%d\n", (_Bool) 0.1);
  return 0;
}

The program prints 1 under Gcc (and other C99-compliant compilers I tested
it with, such as Sun's cc) and 0 under Tcc.  I know that Tcc doesn't aim for
C99 conformance, but it's confusing that it implements the _Bool type which
comes from C99, but not the associated semantics.

-- System Information:
Debian Release: testing/unstable
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: i386 (i686)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.11-1-686
Locale: LANG=en_US, LC_CTYPE=en_US (charmap=ISO-8859-1)

Versions of packages tcc depends on:
ii  libc6   2.3.2.ds1-22 GNU C Library: Shared libraries an

Versions of packages tcc recommends:
ii  libc6-dev [libc-dev]2.3.2.ds1-22 GNU C Library: Development Librari

-- no debconf information


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Bug#322913: tcc: _Bool exists but doesn't comply with C99

2005-08-13 Thread Romain Francoise
Hrvoje Niksic <[EMAIL PROTECTED]> writes:

> Tcc doesn't correctly implement casts from floating point types to _Bool. 
> According to C99, such casts must return true for all numbers except 0:

Thanks; I'll forward this upstream.

-- 
  ,''`.
 : :' :Romain Francoise <[EMAIL PROTECTED]>
 `. `' http://people.debian.org/~rfrancoise/
   `-


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]