1// SPDX-License-Identifier: GPL-2.0-only 2/// 3/// Please, don't reintroduce uninitialized_var(). 4/// 5/// From Documentation/process/deprecated.rst, 6/// commit 4b19bec97c88 ("docs: deprecated.rst: Add uninitialized_var()"): 7/// For any compiler warnings about uninitialized variables, just add 8/// an initializer. Using warning-silencing tricks is dangerous as it 9/// papers over real bugs (or can in the future), and suppresses unrelated 10/// compiler warnings (e.g. "unused variable"). If the compiler thinks it 11/// is uninitialized, either simply initialize the variable or make compiler 12/// changes. Keep in mind that in most cases, if an initialization is 13/// obviously redundant, the compiler's dead-store elimination pass will make 14/// sure there are no needless variable writes. 15/// 16/// Later, commit 3942ea7a10c9 ("deprecated.rst: Remove now removed 17/// uninitialized_var") removed this section because all initializations of 18/// this kind were cleaned-up from the kernel. This cocci rule checks that 19/// the macro is not explicitly or implicitly reintroduced. 20/// 21// Confidence: High 22// Copyright: (C) 2020 Denis Efremov ISPRAS 23// Options: --no-includes --include-headers 24// 25 26virtual context 27virtual report 28virtual org 29 30@r@ 31identifier var; 32type T; 33position p; 34@@ 35 36( 37* T var =@p var; 38| 39* T var =@p *(&(var)); 40| 41* var =@p var 42| 43* var =@p *(&(var)) 44) 45 46@script:python depends on report@ 47p << r.p; 48@@ 49 50coccilib.report.print_report(p[0], "WARNING this kind of initialization is deprecated") 51 52@script:python depends on org@ 53p << r.p; 54@@ 55 56coccilib.org.print_todo(p[0], "WARNING this kind of initialization is deprecated") 57