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