From: Joseph Myers Date: Wed, 1 Jun 2005 18:19:09 +0000 (+0100) Subject: common.opt (fjump-tables): New. X-Git-Tag: misc/cutover-cvs2svn~2731 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=82c0180d7797e3602a7069dbf5696b487be5d7d8;p=thirdparty%2Fgcc.git common.opt (fjump-tables): New. * common.opt (fjump-tables): New. * doc/invoke.texi (-fno-jump-tables): Document. * stmt.c (expand_end_case_type): Do not emit jump tables unless flag_jump_tables. From-SVN: r100457 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 66269506c544..adfecf5de169 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2005-06-01 Joseph S. Myers + + * common.opt (fjump-tables): New. + * doc/invoke.texi (-fno-jump-tables): Document. + * stmt.c (expand_end_case_type): Do not emit jump tables unless + flag_jump_tables. + 2005-06-01 Richard Earnshaw * arm.md (bunordered, bordered, bungt, bunlt, bunge, bunle, buneq) diff --git a/gcc/common.opt b/gcc/common.opt index 91cc3c1ccc21..a603707508a4 100644 --- a/gcc/common.opt +++ b/gcc/common.opt @@ -488,6 +488,10 @@ fivopts Common Report Var(flag_ivopts) Init(1) Optimize induction variables on trees +fjump-tables +Common Var(flag_jump_tables) Init(1) +Use jump tables for sufficiently large switch statements + fkeep-inline-functions Common Report Var(flag_keep_inline_functions) Generate code for functions even if they are fully inlined diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index a6483e8eaa86..94c4b2ead7a7 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -732,6 +732,7 @@ See S/390 and zSeries Options. -finhibit-size-directive -finstrument-functions @gol -fno-common -fno-ident @gol -fpcc-struct-return -fpic -fPIC -fpie -fPIE @gol +-fno-jump-tables @gol -freg-struct-return -fshared-data -fshort-enums @gol -fshort-double -fshort-wchar @gol -fverbose-asm -fpack-struct[=@var{n}] -fstack-check @gol @@ -12582,6 +12583,15 @@ generated position independent code can be only linked into executables. Usually these options are used when @option{-pie} GCC option will be used during linking. +@item -fno-jump-tables +@opindex fno-jump-tables +Do not use jump tables for switch statements even where it would be +more efficient than other code generation strategies. This option is +of use in conjunction with @option{-fpic} or @option{-fPIC} for +building code which forms part of a dynamic linker and cannot +reference the address of a jump table. On some targets, jump tables +do not require a GOT and this option is not needed. + @item -ffixed-@var{reg} @opindex ffixed Treat the register named @var{reg} as a fixed register; generated code diff --git a/gcc/stmt.c b/gcc/stmt.c index d1e71dea4f15..6bdaf51b9db6 100644 --- a/gcc/stmt.c +++ b/gcc/stmt.c @@ -2458,6 +2458,7 @@ expand_case (tree exp) #ifndef ASM_OUTPUT_ADDR_DIFF_ELT || flag_pic #endif + || !flag_jump_tables || TREE_CONSTANT (index_expr) /* If neither casesi or tablejump is available, we can only go this way. */