forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.6 KiB
56 lines
1.6 KiB
// SPDX-License-Identifier: GPL-2.0-only |
|
/// |
|
/// Please, don't reintroduce uninitialized_var(). |
|
/// |
|
/// From Documentation/process/deprecated.rst, |
|
/// commit 4b19bec97c88 ("docs: deprecated.rst: Add uninitialized_var()"): |
|
/// For any compiler warnings about uninitialized variables, just add |
|
/// an initializer. Using warning-silencing tricks is dangerous as it |
|
/// papers over real bugs (or can in the future), and suppresses unrelated |
|
/// compiler warnings (e.g. "unused variable"). If the compiler thinks it |
|
/// is uninitialized, either simply initialize the variable or make compiler |
|
/// changes. Keep in mind that in most cases, if an initialization is |
|
/// obviously redundant, the compiler's dead-store elimination pass will make |
|
/// sure there are no needless variable writes. |
|
/// |
|
/// Later, commit 3942ea7a10c9 ("deprecated.rst: Remove now removed |
|
/// uninitialized_var") removed this section because all initializations of |
|
/// this kind were cleaned-up from the kernel. This cocci rule checks that |
|
/// the macro is not explicitly or implicitly reintroduced. |
|
/// |
|
// Confidence: High |
|
// Copyright: (C) 2020 Denis Efremov ISPRAS |
|
// Options: --no-includes --include-headers |
|
// |
|
|
|
virtual context |
|
virtual report |
|
virtual org |
|
|
|
@r@ |
|
identifier var; |
|
type T; |
|
position p; |
|
@@ |
|
|
|
( |
|
* T var =@p var; |
|
| |
|
* T var =@p *(&(var)); |
|
| |
|
* var =@p var |
|
| |
|
* var =@p *(&(var)) |
|
) |
|
|
|
@script:python depends on report@ |
|
p << r.p; |
|
@@ |
|
|
|
coccilib.report.print_report(p[0], "WARNING this kind of initialization is deprecated") |
|
|
|
@script:python depends on org@ |
|
p << r.p; |
|
@@ |
|
|
|
coccilib.org.print_todo(p[0], "WARNING this kind of initialization is deprecated")
|
|
|