OSDN Git Service

* common.opt (fjump-tables): New.
authorjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 1 Jun 2005 18:19:09 +0000 (18:19 +0000)
committerjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 1 Jun 2005 18:19:09 +0000 (18:19 +0000)
* doc/invoke.texi (-fno-jump-tables): Document.
* stmt.c (expand_end_case_type): Do not emit jump tables unless
flag_jump_tables.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@100457 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 6626950..adfecf5 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 91cc3c1..a603707 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 a6483e8..94c4b2e 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 d1e71de..6bdaf51 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.  */