#!/usr/bin/env python3
+
+# Copyright (C) 2018-2023 Free Software Foundation, Inc.
#
# Script to analyze warnings produced by clang.
#
'when in C++ mode, this behavior is deprecated',
'-Wignored-attributes', '-Wgnu-zero-variadic-macro-arguments',
'-Wformat-security', '-Wundefined-internal',
- '-Wunknown-warning-option', '-Wc++20-extensions'],
- 'insn-modes.c': ['-Wshift-count-overflow'],
- 'insn-emit.c': ['-Wtautological-compare'],
- 'insn-attrtab.c': ['-Wparentheses-equality'],
- 'gimple-match.c': ['-Wunused-', '-Wtautological-compare'],
- 'generic-match.c': ['-Wunused-', '-Wtautological-compare'],
+ '-Wunknown-warning-option', '-Wc++20-extensions',
+ '-Wbitwise-instead-of-logical', 'egrep is obsolescent'],
+ 'insn-modes.cc': ['-Wshift-count-overflow'],
+ 'insn-emit.cc': ['-Wtautological-compare'],
+ 'insn-attrtab.cc': ['-Wparentheses-equality'],
+ 'gimple-match.cc': ['-Wunused-', '-Wtautological-compare'],
+ 'generic-match.cc': ['-Wunused-', '-Wtautological-compare'],
'i386.md': ['-Wparentheses-equality', '-Wtautological-compare',
'-Wtautological-overlap-compare'],
- 'sse.md': ['-Wparentheses-equality', '-Wtautological-compare'],
+ 'sse.md': ['-Wparentheses-equality', '-Wtautological-compare',
+ '-Wconstant-logical-operand'],
'mmx.md': ['-Wtautological-compare'],
- 'genautomata.c': ['-Wstring-plus-int'],
+ 'genautomata.cc': ['-Wstring-plus-int'],
+ 'fold-const-call.cc': ['-Wreturn-type'],
'gfortran.texi': [''],
- 'libtool': ['']
+ 'libtool': [''],
+ 'lex.cc': ['-Wc++20-attribute-extensions'],
}
- for name, ignores in ignores.items():
- for i in ignores:
+ for name, ignore in ignores.items():
+ for i in ignore:
if name in filename and i in message:
return True
return False
args = parser.parse_args()
lines = [line.strip() for line in open(args.log)]
-total = 0
-messages = []
+messages = set()
for line in lines:
token = ': warning: '
i = line.find(token)
if i != -1:
location = line[:i]
message = line[i + len(token):]
+ if '/libffi/' in location or location.startswith('Makefile'):
+ continue
if not skip_warning(location, message):
- total += 1
- messages.append(line)
+ messages.add(line)
for line in sorted(messages):
print(line)
-print('\nTotal warnings: %d' % total)
+
+print('\nTotal warnings: %d' % len(messages))