Skip to content

Commit e6ff2e9

Browse files
committed
fix: Fixed some integer conversions in the optimization function
1 parent 952a459 commit e6ff2e9

File tree

1 file changed

+27
-22
lines changed

1 file changed

+27
-22
lines changed

Src/main.c

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -753,54 +753,52 @@ optimizations(int nr)
753753
case '1':
754754
dataflow = 1 - dataflow; /* dataflow */
755755
if (verbose&32)
756-
printf("spin: dataflow optimizations turned %s\n",
757-
dataflow?"on":"off");
758-
break;
759-
case '2':
756+
printf("spin: dataflow optimizations turned %s\n",
757+
dataflow?"on":"off");
758+
break;
759+
case '2':
760760
/* dead variable elimination */
761761
deadvar = 1 - deadvar;
762762
if (verbose&32)
763-
printf("spin: dead variable elimination turned %s\n",
764-
deadvar?"on":"off");
765-
break;
763+
printf("spin: dead variable elimination turned %s\n",
764+
deadvar?"on":"off");
765+
break;
766766
case '3':
767767
/* statement merging */
768768
merger = 1 - merger;
769769
if (verbose&32)
770770
printf("spin: statement merging turned %s\n",
771771
merger?"on":"off");
772-
break;
773-
772+
break;
774773
case '4':
775774
/* rv optimization */
776775
rvopt = 1 - rvopt;
777776
if (verbose&32)
778777
printf("spin: rendezvous optimization turned %s\n",
779778
rvopt?"on":"off");
780-
break;
779+
break;
781780
case '5':
782781
/* case caching */
783782
ccache = 1 - ccache;
784783
if (verbose&32)
785-
printf("spin: case caching turned %s\n",
786-
ccache?"on":"off");
787-
break;
784+
printf("spin: case caching turned %s\n",
785+
ccache?"on":"off");
786+
break;
788787
case '6':
789788
old_priority_rules = 1;
790789
if (verbose&32)
791-
printf("spin: using old priority rules (pre version 6.2)\n");
792-
return 0; /* no break */
790+
printf("spin: using old priority rules (pre version 6.2)\n");
791+
return 0; /* no break */
793792
case '7':
794793
implied_semis = 0;
795794
if (verbose&32)
796-
printf("spin: no implied semi-colons (pre version 6.3)\n");
797-
return 0; /* no break */
795+
printf("spin: no implied semi-colons (pre version 6.3)\n");
796+
return 0; /* no break */
798797
default:
799-
printf("spin: bad or missing parameter on -o\n");
800-
// usage();
801-
break;
798+
return -1; // TODO: Improve the failure mode for argument parsing
802799
}
803-
return 1;
800+
801+
return 0;
804802
}
805803

806804
static void
@@ -1004,7 +1002,14 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state) {
10041002
}
10051003
case 'n': args->T = atoi(arg); tl_terse = 1; break;
10061004
case 'O': old_scope_rules = 1; break;
1007-
case 'o': args->usedopts += optimizations(atoi(arg)); break;
1005+
case 'o': {
1006+
args->usedopts += optimizations(arg[0]);
1007+
if (args->usedopts == -1) {
1008+
argp_failure(state, 0, 1, "bad or missing parameter on -o: %d", atoi(arg));
1009+
return EINVAL;
1010+
}
1011+
break;
1012+
}
10081013
case 'P': {
10091014
assert(strlen(arg) < sizeof(PreProc));
10101015
strcpy(PreProc, arg);

0 commit comments

Comments
 (0)