Unified · Split
| @@ -544,7 +544,7 @@ static void error1(int mode, const char *fmt, va_list ap) · 543 unmodified lines | ||
| 544 | 544 | if (mode == ERROR_WARN) { |
| 545 | 545 | if (s1->warn_none) |
| 546 | 546 | return; |
| 547 | − if (s1->warn_error) | |
| 547 | + if (s1->warn_mask & (WARN_ERROR << WARN_ERROR_SHIFT)) | |
| 548 | 548 | mode = ERROR_ERROR; |
| 549 | 549 | } |
| 550 | 550 | |
| @@ -1288,7 +1288,7 @@ ST_FUNC int set_W_flag(TCCState *s, const char *optarg) · 737 unmodified lines | ||
| 1288 | 1288 | char const *name; |
| 1289 | 1289 | } const opts[] = { |
| 1290 | 1290 | {WARN_ALL, 0, "all"}, |
| 1291 | − {WARN_ERROR, 0, "error"}, | |
| 1291 | + {WARN_ERROR | (WARN_ERROR << WARN_ERROR_SHIFT), 0, "error"}, | |
| 1292 | 1292 | {WARN_UNSUPPORTED, WD_ERROR, "unsupported"}, |
| 1293 | 1293 | {WARN_GCC_COMPAT, WD_ERROR, "gcc-compat"}, |
| 1294 | 1294 | {WARN_WRITE_STRINGS, WD_ERROR | WD_ALL, "write-strings"}, |
| @@ -744,7 +744,7 @@ enum warn_option { · 743 unmodified lines | ||
| 744 | 744 | WARN_GCC_COMPAT = 1u<<1, |
| 745 | 745 | WARN_WRITE_STRINGS = 1u<<2, |
| 746 | 746 | WARN_IMPLICIT_FUNCTION_DECLARATION = 1u<<3, |
| 747 | − WARN_ERROR = 1u<<4, | |
| 747 | + WARN_ERROR = 1u<<4, /* Not really as such in warn area, here only "MAX" */ | |
| 748 | 748 | WARN_ALL = WARN_ERROR - 1 |
| 749 | 749 | }; |
| 750 | 750 | enum {WARN_ERROR_SHIFT = 16u}; |
| @@ -780,14 +780,13 @@ struct TCCState { · 29 unmodified lines | ||
| 780 | 780 | unsigned char ms_bitfields; /* if true, emulate MS algorithm for aligning bitfields */ |
| 781 | 781 | |
| 782 | 782 | unsigned char warn_none; |
| 783 | − unsigned char warn_error; | |
| 784 | 783 | /* NEED_WARNING(SELF,X) used to drive W[[no-]error]=X */ |
| 785 | 784 | uint32_t warn_mask; |
| 786 | 785 | #define NEED_WARNING(SELF,SWITCH) \ |
| 787 | 786 | (((SELF)->warn_mask & \ |
| 788 | 787 | (WARN_ ## SWITCH | (WARN_ ## SWITCH << WARN_ERROR_SHIFT))) \ |
| 789 | 788 | ? (((SELF)->warn_mask & (WARN_ ## SWITCH << WARN_ERROR_SHIFT)) \ |
| 790 | − ? (SELF)->warn_error = 1 : 1) : 0) | |
| 789 | + ? (SELF)->warn_mask |= (WARN_ERROR << WARN_ERROR_SHIFT), 1 : 1) : 0) | |
| 791 | 790 | |
| 792 | 791 | /* compile with debug symbol (and use them if error during execution) */ |
| 793 | 792 | unsigned char do_debug; |