invoke.texi: Document new switches -Wno-shadow-ivar, -fno-local-ivars and -fivar-visibility.

2014-05-12  Dimitris Papavasiliou  <dpapavas@gmail.com>

	    * doc/invoke.texi: Document new switches -Wno-shadow-ivar,
	    -fno-local-ivars and -fivar-visibility.
	    * c-family/c.opt: Make -Wshadow also implicitly enable
	    -Wshadow-ivar.

testsuite:
	    * objc.dg/shadow-1.m: New test.
	    * objc.dg/shadow-2.m: New test.
	    * objc.dg/ivar-scope-1.m: New test.
	    * objc.dg/ivar-scope-2.m: New test.
	    * objc.dg/ivar-scope-3.m: New test.
	    * objc.dg/ivar-scope-4.m: New test.
	    * objc.dg/ivar-visibility-1.m: New test.
	    * objc.dg/ivar-visibility-2.m: New test.
	    * objc.dg/ivar-visibility-3.m: New test.
	    * objc.dg/ivar-visibility-4.m: New test.

From-SVN: r210333
This commit is contained in:
Dimitris Papavasiliou 2014-05-12 19:12:27 +00:00 committed by Mike Stump
parent 83afe9ef89
commit dff8943f54
4 changed files with 51 additions and 6 deletions

View File

@ -1,3 +1,10 @@
2014-05-12 Dimitris Papavasiliou <dpapavas@gmail.com>
* doc/invoke.texi: Document new switches -Wno-shadow-ivar,
-fno-local-ivars and -fivar-visibility.
* c-family/c.opt: Make -Wshadow also implicitly enable
-Wshadow-ivar.
2014-05-12 David Wohlferd <dw@LimeGreenSocks.com> 2014-05-12 David Wohlferd <dw@LimeGreenSocks.com>
* doc/tm.texi: Remove reference to deleted macro. * doc/tm.texi: Remove reference to deleted macro.

View File

@ -690,7 +690,7 @@ ObjC ObjC++ Var(warn_selector) Warning
Warn if a selector has multiple methods Warn if a selector has multiple methods
Wshadow-ivar Wshadow-ivar
ObjC ObjC++ Var(warn_shadow_ivar) Init(1) Warning ObjC ObjC++ Var(warn_shadow_ivar) EnabledBy(Wshadow) Init(1) Warning
Warn if a local declaration hides an instance variable Warn if a local declaration hides an instance variable
Wsequence-point Wsequence-point

View File

@ -216,6 +216,8 @@ Objective-C and Objective-C++ Dialects}.
-fobjc-gc @gol -fobjc-gc @gol
-fobjc-nilcheck @gol -fobjc-nilcheck @gol
-fobjc-std=objc1 @gol -fobjc-std=objc1 @gol
-fno-local-ivars @gol
-fivar-visibility=@var{public|protected|private|package} @gol
-freplace-objc-classes @gol -freplace-objc-classes @gol
-fzero-link @gol -fzero-link @gol
-gen-decls @gol -gen-decls @gol
@ -262,7 +264,7 @@ Objective-C and Objective-C++ Dialects}.
-Wparentheses -Wpedantic-ms-format -Wno-pedantic-ms-format @gol -Wparentheses -Wpedantic-ms-format -Wno-pedantic-ms-format @gol
-Wpointer-arith -Wno-pointer-to-int-cast @gol -Wpointer-arith -Wno-pointer-to-int-cast @gol
-Wredundant-decls -Wno-return-local-addr @gol -Wredundant-decls -Wno-return-local-addr @gol
-Wreturn-type -Wsequence-point -Wshadow @gol -Wreturn-type -Wsequence-point -Wshadow -Wno-shadow-ivar @gol
-Wsign-compare -Wsign-conversion -Wfloat-conversion @gol -Wsign-compare -Wsign-conversion -Wfloat-conversion @gol
-Wsizeof-pointer-memaccess @gol -Wsizeof-pointer-memaccess @gol
-Wstack-protector -Wstack-usage=@var{len} -Wstrict-aliasing @gol -Wstack-protector -Wstack-usage=@var{len} -Wstrict-aliasing @gol
@ -2977,6 +2979,22 @@ for individual class implementations to be modified during program execution.
The GNU runtime currently always retains calls to @code{objc_get_class("@dots{}")} The GNU runtime currently always retains calls to @code{objc_get_class("@dots{}")}
regardless of command-line options. regardless of command-line options.
@item -fno-local-ivars
@opindex fno-local-ivars
@opindex flocal-ivars
By default instance variables in Objective-C can be accessed as if
they were local variables from within the methods of the class they're
declared in. This can lead to shadowing between instance variables
and other variables declared either locally inside a class method or
globally with the same name. Specifying the @option{-fno-local-ivars}
flag disables this behavior thus avoiding variable shadowing issues.
@item -fivar-visibility=@var{public|protected|private|package}
@opindex fivar-visibility
Set the default instance variable visibility to the specified option
so that instance variables declared outside the scope of any access
modifier directives default to the specified visibility.
@item -gen-decls @item -gen-decls
@opindex gen-decls @opindex gen-decls
Dump interface declarations for all classes seen in the source file to a Dump interface declarations for all classes seen in the source file to a
@ -4360,10 +4378,17 @@ Do not warn whenever an @samp{#else} or an @samp{#endif} are followed by text.
@item -Wshadow @item -Wshadow
@opindex Wshadow @opindex Wshadow
@opindex Wno-shadow @opindex Wno-shadow
Warn whenever a local variable or type declaration shadows another variable, Warn whenever a local variable or type declaration shadows another
parameter, type, or class member (in C++), or whenever a built-in function variable, parameter, type, class member (in C++), or instance variable
is shadowed. Note that in C++, the compiler warns if a local variable (in Objective-C) or whenever a built-in function is shadowed. Note
shadows an explicit typedef, but not if it shadows a struct/class/enum. that in C++, the compiler warns if a local variable shadows an
explicit typedef, but not if it shadows a struct/class/enum.
@item -Wno-shadow-ivar @r{(Objective-C only)}
@opindex Wno-shadow-ivar
@opindex Wshadow-ivar
Do not warn whenever a local variable shadows an instance variable in an
Objective-C method.
@item -Wlarger-than=@var{len} @item -Wlarger-than=@var{len}
@opindex Wlarger-than=@var{len} @opindex Wlarger-than=@var{len}

View File

@ -1,3 +1,16 @@
2014-05-12 Dimitris Papavasiliou <dpapavas@gmail.com>
* objc.dg/shadow-1.m: New test.
* objc.dg/shadow-2.m: New test.
* objc.dg/ivar-scope-1.m: New test.
* objc.dg/ivar-scope-2.m: New test.
* objc.dg/ivar-scope-3.m: New test.
* objc.dg/ivar-scope-4.m: New test.
* objc.dg/ivar-visibility-1.m: New test.
* objc.dg/ivar-visibility-2.m: New test.
* objc.dg/ivar-visibility-3.m: New test.
* objc.dg/ivar-visibility-4.m: New test.
2014-05-12 Tobias Burnus <burnus@net-b.de> 2014-05-12 Tobias Burnus <burnus@net-b.de>
PR fortran/60127 PR fortran/60127