tinycc-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Tinycc-devel] MAJOR bug: tcc doesn't detect duplicate cases in swit


From: Amine Najahi
Subject: Re: [Tinycc-devel] MAJOR bug: tcc doesn't detect duplicate cases in switch statements
Date: Sun, 13 Mar 2016 21:25:31 +0100

Hi,

The patch is not committed. It is just a hackish way I coded to explore how 
this cases "bug" could be addressed using tcc's api. It certainly does not
handle the gnu "..." extension.

My conclusions is that I agree with Michael's arguments. I, for one, use
tcc for its speed, and I can live with it not diagnosing this issue.
It is too costly for a one pass compiler.

Cheers,

Amine


On Sat, Mar 12, 2016 at 5:00 AM, Michael B. Smith <address@hidden> wrote:

I am a rare poster here – but I think your patch leads to all sorts of problems.

 

Please revert it/don’t commit it.

 

From: tinycc-devel-bounces+michael=address@hidden [mailto:tinycc-devel-bounces+michael=address@hidden] On Behalf Of Amine Najahi
Sent: Friday, March 11, 2016 12:13 PM
To: address@hidden
Subject: Re: [Tinycc-devel] MAJOR bug: tcc doesn't detect duplicate cases in switch statements

 

Hi Arnold and tcc folks,

 

Perhaps surprisingly, correcting this bug is quite costly.

Here is a tentative patch. I find it messy but working with dynamic data

and passing the cases to the block function are necessary to handle

an "unlimited number" of cases and nested switch blocks.

 

Also, since the 'block' function is starting to have too many arguments, I 

suggest to create a structure that assembles related arguments such

that def_sym, case_sym, cases, and cases_cnt, and any other...

 

Does that sound ok? 

 

Regards,

Amine

 

 

On Thu, Mar 10, 2016 at 2:41 PM, <address@hidden> wrote:

Hi All.

On the latest mob:

$ cat foo.c
int main(int argc, char**argv)
{
        int a;

        switch (a) {
        case 1:
        case 2:
                break;
        case 3:
                break;
        case 1:
                break;
        default:
                break;
        }

        return 0;
}
$ PATH=/tmp/tcc/bin:$PATH tcc foo.c
$

$ gcc foo.c -o foo
foo.c: In function ‘main’:
foo.c:11:2: error: duplicate case value
  case 1:
  ^
foo.c:6:2: error: previously used here
  case 1:
  ^

This is pretty serious....

Thanks,

Arnold

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

 


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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]