mirror of git://gcc.gnu.org/git/gcc.git
invoke.texi: Remove the documentation about option -Wunreachable-code.
2010-01-05 Eric Fisher <joefoxreal@gmail.com> * doc/invoke.texi: Remove the documentation about option -Wunreachable-code. * common.opt (Wunreachable-code): Preserved for backward compatibility. * tree-cfg.c: Remove the implementation of -Wunreachable-code. * opts.c (common_handle_option): Add OPT_Wunreachable_code to the backward compatibility flag section. * gcc.dg/pr12603.c: Remove -Wunreachable-code from dg-options. * gcc.dg/Wunreachable-1.c: Remove the testcase of -Wunreachable-code. * gcc.dg/Wunreachable-2.c: Likewise. * gcc.dg/Wunreachable-3.c: Likewise. * gcc.dg/Wunreachable-4.c: Likewise. * gcc.dg/Wunreachable-5.c: Likewise. * gcc.dg/Wunreachable-6.c: Likewise. * gcc.dg/Wunreachable-7.c: Likewise. * gcc.dg/Wunreachable-8.c: Likewise. * gcc.dg/20041231-1.c: Likewise. From-SVN: r155645
This commit is contained in:
parent
4ebf9c3763
commit
bc3c12a29c
|
|
@ -1,3 +1,13 @@
|
|||
2010-01-05 Eric Fisher <joefoxreal@gmail.com>
|
||||
|
||||
* doc/invoke.texi: Remove the documentation about option
|
||||
-Wunreachable-code.
|
||||
* common.opt (Wunreachable-code): Preserved for backward
|
||||
compatibility.
|
||||
* tree-cfg.c: Remove the implementation of -Wunreachable-code.
|
||||
* opts.c (common_handle_option): Add OPT_Wunreachable_code to
|
||||
the backward compatibility flag section.
|
||||
|
||||
2010-01-05 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
* tree-ssa-pre.c (bitmap_value_insert_into_set): Optimize.
|
||||
|
|
|
|||
|
|
@ -201,8 +201,8 @@ Common Var(warn_uninitialized) Init(-1) Warning
|
|||
Warn about uninitialized automatic variables
|
||||
|
||||
Wunreachable-code
|
||||
Common Var(warn_notreached) Warning
|
||||
Warn about code that will never be executed
|
||||
Common
|
||||
Does nothing. Preserved for backward compatibility.
|
||||
|
||||
Wunused
|
||||
Common Var(warn_unused) Init(0) Warning
|
||||
|
|
|
|||
|
|
@ -259,7 +259,7 @@ Objective-C and Objective-C++ Dialects}.
|
|||
-Wstrict-overflow -Wstrict-overflow=@var{n} @gol
|
||||
-Wswitch -Wswitch-default -Wswitch-enum -Wsync-nand @gol
|
||||
-Wsystem-headers -Wtrigraphs -Wtype-limits -Wundef -Wuninitialized @gol
|
||||
-Wunknown-pragmas -Wno-pragmas -Wunreachable-code @gol
|
||||
-Wunknown-pragmas -Wno-pragmas @gol
|
||||
-Wunsuffixed-float-constants -Wunused -Wunused-function @gol
|
||||
-Wunused-label -Wunused-parameter -Wno-unused-result -Wunused-value -Wunused-variable @gol
|
||||
-Wvariadic-macros -Wvla @gol
|
||||
|
|
@ -4192,29 +4192,6 @@ cases where multiple declaration is valid and changes nothing.
|
|||
@opindex Wno-nested-externs
|
||||
Warn if an @code{extern} declaration is encountered within a function.
|
||||
|
||||
@item -Wunreachable-code
|
||||
@opindex Wunreachable-code
|
||||
@opindex Wno-unreachable-code
|
||||
Warn if the compiler detects that code will never be executed.
|
||||
|
||||
This option is intended to warn when the compiler detects that at
|
||||
least a whole line of source code will never be executed, because
|
||||
some condition is never satisfied or because it is after a
|
||||
procedure that never returns.
|
||||
|
||||
It is possible for this option to produce a warning even though there
|
||||
are circumstances under which part of the affected line can be executed,
|
||||
so care should be taken when removing apparently-unreachable code.
|
||||
|
||||
For instance, when a function is inlined, a warning may mean that the
|
||||
line is unreachable in only one inlined copy of the function.
|
||||
|
||||
This option is not made part of @option{-Wall} because in a debugging
|
||||
version of a program there is often substantial code which checks
|
||||
correct functioning of the program and is, hopefully, unreachable
|
||||
because the program does work. Another common use of unreachable
|
||||
code is to provide behavior which is selectable at compile-time.
|
||||
|
||||
@item -Winline
|
||||
@opindex Winline
|
||||
@opindex Wno-inline
|
||||
|
|
|
|||
|
|
@ -2131,6 +2131,7 @@ common_handle_option (size_t scode, const char *arg, int value,
|
|||
case OPT_fforce_addr:
|
||||
case OPT_ftree_salias:
|
||||
case OPT_ftree_store_ccp:
|
||||
case OPT_Wunreachable_code:
|
||||
/* These are no-ops, preserved for backward compatibility. */
|
||||
break;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,17 @@
|
|||
2010-01-05 Eric Fisher <joefoxreal@gmail.com>
|
||||
|
||||
* gcc.dg/pr12603.c: Remove -Wunreachable-code from dg-options.
|
||||
* gcc.dg/Wunreachable-1.c: Remove the testcase of
|
||||
-Wunreachable-code.
|
||||
* gcc.dg/Wunreachable-2.c: Likewise.
|
||||
* gcc.dg/Wunreachable-3.c: Likewise.
|
||||
* gcc.dg/Wunreachable-4.c: Likewise.
|
||||
* gcc.dg/Wunreachable-5.c: Likewise.
|
||||
* gcc.dg/Wunreachable-6.c: Likewise.
|
||||
* gcc.dg/Wunreachable-7.c: Likewise.
|
||||
* gcc.dg/Wunreachable-8.c: Likewise.
|
||||
* gcc.dg/20041231-1.c: Likewise.
|
||||
|
||||
2010-01-05 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR other/42611
|
||||
|
|
|
|||
|
|
@ -1,15 +0,0 @@
|
|||
/* PR17544 Incorrect -Wunreachable-code warning
|
||||
Origin: Giovanni Bajo
|
||||
|
||||
In C99 we append a "return 0;" when finishing a function, but it was
|
||||
not given a source location. The gimplifier thinks a return statement
|
||||
needs a locus so it would add one, making the compiler generated code
|
||||
visible to the unreachable code warning. */
|
||||
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-std=c99 -O -Wunreachable-code" } */
|
||||
|
||||
int main (void) // 1
|
||||
{ // 2
|
||||
return 0; // 3
|
||||
} // 4
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -Wunreachable-code" } */
|
||||
|
||||
extern void foo (void);
|
||||
extern void baz (void);
|
||||
|
||||
void bar (int i)
|
||||
{
|
||||
if (i < 2)
|
||||
{
|
||||
baz ();
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (i >= 4 && i <= 5)
|
||||
foo ();
|
||||
return;
|
||||
}
|
||||
|
||||
baz (); /* { dg-warning "will never be executed" "" } */
|
||||
baz ();
|
||||
baz ();
|
||||
}
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -Wunreachable-code" } */
|
||||
|
||||
extern int foo (const char *);
|
||||
extern void baz (void);
|
||||
const char *a[] = { "one", "two" };
|
||||
|
||||
void bar (void)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 2; i++) /* { dg-bogus "will never be executed" "" { xfail *-*-* } } */
|
||||
if (! foo (a[i])) /* { dg-bogus "will never be executed" "" { xfail *-*-* } } */
|
||||
return;
|
||||
|
||||
baz (); /* { dg-bogus "will never be executed" } */
|
||||
baz ();
|
||||
baz ();
|
||||
}
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
/* PR c/10175 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-Wunreachable-code" } */
|
||||
|
||||
int i,j;
|
||||
int main(void)
|
||||
{
|
||||
if (0) {
|
||||
i = 0; /* { dg-warning "will never be executed" "" } */
|
||||
j = 0;
|
||||
} else {
|
||||
i = 1;
|
||||
j = 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
/* PR middle-end/10336 */
|
||||
/* { dg-options "-Wunreachable-code" } */
|
||||
|
||||
void foo(int i)
|
||||
{
|
||||
switch(i) {
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
/* PR c/10175 */
|
||||
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-Wunreachable-code" } */
|
||||
|
||||
int value;
|
||||
|
||||
int main(void)
|
||||
{
|
||||
if (0)
|
||||
value = 0; /* { dg-warning "will never be executed" "" } */
|
||||
else
|
||||
value = 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
/* PR c/11370 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-Wunreachable-code" } */
|
||||
|
||||
extern int printf (const char *, ...);
|
||||
extern void exit (int);
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
if (argc != 1)
|
||||
exit(1);
|
||||
|
||||
{
|
||||
int ix; /* { dg-bogus "will never be executed" } */
|
||||
ix = printf("hello\n");
|
||||
printf("%d\n", ix);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
/* PR c/11370 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -Wunreachable-code" } */
|
||||
|
||||
extern int printf (const char *, ...);
|
||||
extern void exit (int);
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
if (argc != 1)
|
||||
exit(1);
|
||||
|
||||
{
|
||||
int ix; /* { dg-bogus "will never be executed" } */
|
||||
ix = printf("hello\n");
|
||||
printf("%d\n", ix);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -Wunreachable-code" } */
|
||||
float Factorial(float X)
|
||||
{
|
||||
float val = 1.0;
|
||||
int k,j;
|
||||
for (k=1; k < 5; k++) /* { dg-bogus "will never be executed" "" { xfail *-*-* } } */
|
||||
{
|
||||
val += 1.0; /* { dg-bogus "will never be executed" "" { xfail *-*-* } } */
|
||||
}
|
||||
return (val); /* { dg-bogus "will never be executed" } */
|
||||
}
|
||||
|
||||
int main (void)
|
||||
{
|
||||
float result;
|
||||
result=Factorial(2.1);
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
/* PR 12603: No return statement warning on function that never returns with -O3. */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O3 -Wall -Wextra -Wreturn-type -Wunreachable-code" } */
|
||||
/* { dg-options "-O3 -Wall -Wextra -Wreturn-type" } */
|
||||
int
|
||||
this_function_never_returns ()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1760,7 +1760,6 @@ static void
|
|||
remove_bb (basic_block bb)
|
||||
{
|
||||
gimple_stmt_iterator i;
|
||||
source_location loc = UNKNOWN_LOCATION;
|
||||
|
||||
if (dump_file)
|
||||
{
|
||||
|
|
@ -1830,24 +1829,9 @@ remove_bb (basic_block bb)
|
|||
i = gsi_last_bb (bb);
|
||||
else
|
||||
gsi_prev (&i);
|
||||
|
||||
/* Don't warn for removed gotos. Gotos are often removed due to
|
||||
jump threading, thus resulting in bogus warnings. Not great,
|
||||
since this way we lose warnings for gotos in the original
|
||||
program that are indeed unreachable. */
|
||||
if (gimple_code (stmt) != GIMPLE_GOTO
|
||||
&& gimple_has_location (stmt))
|
||||
loc = gimple_location (stmt);
|
||||
}
|
||||
}
|
||||
|
||||
/* If requested, give a warning that the first statement in the
|
||||
block is unreachable. We walk statements backwards in the
|
||||
loop above, so the last statement we process is the first statement
|
||||
in the block. */
|
||||
if (loc > BUILTINS_LOCATION && LOCATION_LINE (loc) > 0)
|
||||
warning_at (loc, OPT_Wunreachable_code, "will never be executed");
|
||||
|
||||
remove_phi_nodes_and_edges_for_unreachable_block (bb);
|
||||
bb->il.gimple = NULL;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue