Hello Christian, May I ask you, just for personal interests, what tool you use to manage compiling all those different versions with different compilers? Surely it's not just a Makefile, I hope.
Best regards, ~ Joel Bodenmann -------- Original Message -------- From: Christian Jullien <[email protected]> Sent: Sunday, March 13, 2016 10:45 AM To: [email protected] Subject: Re: [Tinycc-devel] MAJOR bug: tcc doesn't detect duplicate cases in switch statements >In ideal world, a [C] compiler should be: >- extremely fast to compile your code (i.e. very nervous development cycles) >- produce a highly optimized code for ultimate program speed >- complain about suspicious, not portable or not compliant code > >Unfortunately, no compiler achieve all those goals. > >- gcc has very good program speed with -O3 but is slow to compile compared >to tcc even with -O0. >- gcc is not as good as clang to analyze suspicious code and no one compares >to splint on this task. > >It means serious programmers use many different tools to build their >programs. >Just on Windows, I compile my OpenLisp Lisp 33 times with 8 different >compilers using different options. I also use splint to very that my code is >strict. > >Often, when I write a new feature, I prefer tcc because of its unsurpassed >compilation speed. When code seems to work, I use the complete tool chain >which includes 33 different compilations. >But, when I'm going to make a release, it is compiled 21 extra times on: >openlisp-10.2.0-AIX-powerpc.tar.gz >openlisp-10.2.0-FreeBSD-arm.tar.gz >openlisp-10.2.0-FreeBSD-x86_64.tar.gz >openlisp-10.2.0-Linux-armv6l.tar.gz >openlisp-10.2.0-Linux-armv7l.tar.gz >openlisp-10.2.0-Linux-i686.tar.gz >openlisp-10.2.0-Linux-powerpc.tar.gz >openlisp-10.2.0-Linux-powerpc64.tar.gz >openlisp-10.2.0-Linux-powerpc64le.tar.gz >openlisp-10.2.0-Linux-sparc.tar.gz >openlisp-10.2.0-Linux-sparc64.tar.gz >openlisp-10.2.0-Linux-x86_64.tar.gz >openlisp-10.2.0-NetBSD-i686.tar.gz >openlisp-10.2.0-NetBSD-x86_64.tar.gz >openlisp-10.2.0-OpenBSD-i386.tar.gz >openlisp-10.2.0-OpenBSD-x86_64.tar.gz >openlisp-10.2.0-QNX-i386.tar.gz >openlisp-10.2.0-SunOS-i386.tar.gz >openlisp-10.2.0-SunOS-sparc.tar.gz >openlisp-10.2.0-SunOS-sparc64.tar.gz >openlisp-10.2.0-SunOS-x86_64.tar.gz > >What I try to explain is: use tcc for what is it good for. To me a MAJOR bug >is when a valid C program generates a wrong code or refuses to compile. > >My 2c on this debate. > >Christian > >-----Original Message----- >From: [email protected] >[mailto:[email protected]] On Behalf Of >Michael Matz >Sent: dimanche 13 mars 2016 02:19 >To: [email protected] >Subject: Re: [Tinycc-devel] MAJOR bug: tcc doesn't detect duplicate cases in >switch statements > >Hi, > >On Sat, 12 Mar 2016, Daniel Glöckner wrote: > >>> The issue isn't just the lack of diagnostic - what kind of erroneous >>> code is being generated in this case? >> >> Let's see what the final C11 draft (N1570) says about this issue: >> >> Section 6.8.4.2 paragraph 3: >> The expression of each case label shall be an integer constant >> expression and no two of the case constant expressions in the same >> switch statement shall have the same value after conversion. >> >> Section 4 paragraph 2: >> If a "shall" or "shall not" requirement that appears outside of a >> constraint or runtime-constraint is violated, the behavior is undefined. >> >> There you read it, C11 allows us to generate whatever we want. > >This is true. But you missed the detail that all constraint violations >require a diagnostic (5.1.1.3), and the above citation is a constraint on >switches. So, yes, TCC is not conforming :) > > >Ciao, >Michael. > > >_______________________________________________ >Tinycc-devel mailing list >[email protected] >https://lists.nongnu.org/mailman/listinfo/tinycc-devel
_______________________________________________ Tinycc-devel mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/tinycc-devel
