Amine Najahi <[email protected]> wrote: > 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 < > [email protected]> 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:* [email protected] > > [mailto:[email protected]] > > *On > > Behalf Of *Amine Najahi > > *Sent:* Friday, March 11, 2016 12:13 PM > > *To:* [email protected] > > *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, <[email protected]> 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 > > [email protected] > > https://lists.nongnu.org/mailman/listinfo/tinycc-devel > > > > > > > > _______________________________________________ > > Tinycc-devel mailing list > > [email protected] > > https://lists.nongnu.org/mailman/listinfo/tinycc-devel > > > > Whoever it was that posted the note about the standard requiring a diagnostic was right on target. This is too fundamental a mistake not to diagnose.
But since I don't make commits, I'll stop complaining. I will also most likely stop using tcc, nor will I recommend it in the future. Good luck folks, you're gonna need it. Arnold _______________________________________________ Tinycc-devel mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/tinycc-devel
