]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
common.opt (fjump-tables): New.
authorJoseph Myers <joseph@codesourcery.com>
Wed, 1 Jun 2005 18:19:09 +0000 (19:19 +0100)
committerJoseph Myers <jsm28@gcc.gnu.org>
Wed, 1 Jun 2005 18:19:09 +0000 (19:19 +0100)
* 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

gcc/ChangeLog
gcc/common.opt
gcc/doc/invoke.texi
gcc/stmt.c

index 66269506c54416d3e71903bb135705c818800289..adfecf5de169820c131bb98c8caafcf848f7e496 100644 (file)
@@ -1,3 +1,10 @@
+2005-06-01  Joseph S. Myers  <joseph@codesourcery.com>
+
+       * 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  <richard.earnshaw@arm.com>
 
        * arm.md (bunordered, bordered, bungt, bunlt, bunge, bunle, buneq)
index 91cc3c1ccc219151cac3341d8b5ea5845b788307..a603707508a435989c4224049fd2664fba1cc453 100644 (file)
@@ -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
index a6483e8eaa8633432243793d86b1d64734903afb..94c4b2ead7a740d9bd636611c035ad02a3276283 100644 (file)
@@ -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
index d1e71dea4f158d0a8309147b8207c22d719122ae..6bdaf51b9db654d6864fd2b7591dc5556e4c9666 100644 (file)
@@ -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.  */