diff options
-rw-r--r-- | gcc-4.6/gcc/config/arm/arm.h | 3 | ||||
-rw-r--r-- | gcc-4.6/gcc/config/arm/arm.md | 2 | ||||
-rw-r--r-- | gcc-4.6/gcc/config/arm/arm.opt | 4 | ||||
-rw-r--r-- | gcc-4.6/gcc/config/arm/elf.h | 3 | ||||
-rw-r--r-- | gcc-4.7/gcc/config/arm/arm.h | 3 | ||||
-rw-r--r-- | gcc-4.7/gcc/config/arm/arm.md | 2 | ||||
-rw-r--r-- | gcc-4.7/gcc/config/arm/arm.opt | 4 | ||||
-rw-r--r-- | gcc-4.7/gcc/config/arm/elf.h | 3 | ||||
-rw-r--r-- | gcc-4.8/gcc/config/arm/arm.h | 3 | ||||
-rw-r--r-- | gcc-4.8/gcc/config/arm/arm.md | 2 | ||||
-rw-r--r-- | gcc-4.8/gcc/config/arm/arm.opt | 4 | ||||
-rw-r--r-- | gcc-4.8/gcc/config/arm/elf.h | 3 |
12 files changed, 27 insertions, 9 deletions
diff --git a/gcc-4.6/gcc/config/arm/arm.h b/gcc-4.6/gcc/config/arm/arm.h index 9b0a83475..b41f3a73d 100644 --- a/gcc-4.6/gcc/config/arm/arm.h +++ b/gcc-4.6/gcc/config/arm/arm.h @@ -1965,10 +1965,11 @@ typedef struct #define CASE_VECTOR_PC_RELATIVE (TARGET_THUMB2 \ || (TARGET_THUMB1 \ + && !inline_thumb1_jump_table \ && (optimize_size || flag_pic))) #define CASE_VECTOR_SHORTEN_MODE(min, max, body) \ - (TARGET_THUMB1 \ + (TARGET_THUMB1 && !inline_thumb1_jump_table \ ? (min >= 0 && max < 512 \ ? (ADDR_DIFF_VEC_FLAGS (body).offset_unsigned = 1, QImode) \ : min >= -256 && max < 256 \ diff --git a/gcc-4.6/gcc/config/arm/arm.md b/gcc-4.6/gcc/config/arm/arm.md index cc73aa2f3..5a50f8754 100644 --- a/gcc-4.6/gcc/config/arm/arm.md +++ b/gcc-4.6/gcc/config/arm/arm.md @@ -8343,7 +8343,7 @@ (match_operand:SI 2 "const_int_operand" "") ; total range (match_operand:SI 3 "" "") ; table label (match_operand:SI 4 "" "")] ; Out of range label - "TARGET_32BIT || optimize_size || flag_pic" + "TARGET_32BIT || ((optimize_size || flag_pic) && !inline_thumb1_jump_table)" " { enum insn_code code; diff --git a/gcc-4.6/gcc/config/arm/arm.opt b/gcc-4.6/gcc/config/arm/arm.opt index a39bb3a8d..a7ab693b3 100644 --- a/gcc-4.6/gcc/config/arm/arm.opt +++ b/gcc-4.6/gcc/config/arm/arm.opt @@ -137,6 +137,10 @@ mthumb-interwork Target Report Mask(INTERWORK) Support calls between Thumb and ARM instruction sets +minline-thumb1-jumptable +Target Report Var(inline_thumb1_jump_table) +Inline Thumb1 Jump table code + mtp= Target RejectNegative Joined Var(target_thread_switch) Specify how to access the thread pointer diff --git a/gcc-4.6/gcc/config/arm/elf.h b/gcc-4.6/gcc/config/arm/elf.h index 44d840b39..cb84a594f 100644 --- a/gcc-4.6/gcc/config/arm/elf.h +++ b/gcc-4.6/gcc/config/arm/elf.h @@ -104,7 +104,8 @@ the code more efficient, but for Thumb-1 it's better to put them out of band unless we are generating compressed tables. */ #define JUMP_TABLES_IN_TEXT_SECTION \ - (TARGET_32BIT || (TARGET_THUMB && (optimize_size || flag_pic))) + (TARGET_32BIT || (TARGET_THUMB && !inline_thumb1_jump_table \ + && (optimize_size || flag_pic))) #ifndef LINK_SPEC #define LINK_SPEC "%{mbig-endian:-EB} %{mlittle-endian:-EL} -X" diff --git a/gcc-4.7/gcc/config/arm/arm.h b/gcc-4.7/gcc/config/arm/arm.h index 7ce48d13a..c82847fe2 100644 --- a/gcc-4.7/gcc/config/arm/arm.h +++ b/gcc-4.7/gcc/config/arm/arm.h @@ -1843,10 +1843,11 @@ typedef struct #define CASE_VECTOR_PC_RELATIVE (TARGET_THUMB2 \ || (TARGET_THUMB1 \ + && !inline_thumb1_jump_table \ && (optimize_size || flag_pic))) #define CASE_VECTOR_SHORTEN_MODE(min, max, body) \ - (TARGET_THUMB1 \ + (TARGET_THUMB1 && !inline_thumb1_jump_table \ ? (min >= 0 && max < 512 \ ? (ADDR_DIFF_VEC_FLAGS (body).offset_unsigned = 1, QImode) \ : min >= -256 && max < 256 \ diff --git a/gcc-4.7/gcc/config/arm/arm.md b/gcc-4.7/gcc/config/arm/arm.md index fee20175f..d9a07ae8f 100644 --- a/gcc-4.7/gcc/config/arm/arm.md +++ b/gcc-4.7/gcc/config/arm/arm.md @@ -8755,7 +8755,7 @@ (match_operand:SI 2 "const_int_operand" "") ; total range (match_operand:SI 3 "" "") ; table label (match_operand:SI 4 "" "")] ; Out of range label - "TARGET_32BIT || optimize_size || flag_pic" + "TARGET_32BIT || ((optimize_size || flag_pic) && !inline_thumb1_jump_table)" " { enum insn_code code; diff --git a/gcc-4.7/gcc/config/arm/arm.opt b/gcc-4.7/gcc/config/arm/arm.opt index e03a16337..de60108bc 100644 --- a/gcc-4.7/gcc/config/arm/arm.opt +++ b/gcc-4.7/gcc/config/arm/arm.opt @@ -205,6 +205,10 @@ mthumb-interwork Target Report Mask(INTERWORK) Support calls between Thumb and ARM instruction sets +minline-thumb1-jumptable +Target Report Var(inline_thumb1_jump_table) +Inline Thumb1 Jump table code + mtls-dialect= Target RejectNegative Joined Enum(tls_type) Var(target_tls_dialect) Init(TLS_GNU) Specify thread local storage scheme diff --git a/gcc-4.7/gcc/config/arm/elf.h b/gcc-4.7/gcc/config/arm/elf.h index 417adf8a2..f8bf4cf40 100644 --- a/gcc-4.7/gcc/config/arm/elf.h +++ b/gcc-4.7/gcc/config/arm/elf.h @@ -102,7 +102,8 @@ the code more efficient, but for Thumb-1 it's better to put them out of band unless we are generating compressed tables. */ #define JUMP_TABLES_IN_TEXT_SECTION \ - (TARGET_32BIT || (TARGET_THUMB && (optimize_size || flag_pic))) + (TARGET_32BIT || (TARGET_THUMB && !inline_thumb1_jump_table \ + && (optimize_size || flag_pic))) #ifndef LINK_SPEC #define LINK_SPEC "%{mbig-endian:-EB} %{mlittle-endian:-EL} -X" diff --git a/gcc-4.8/gcc/config/arm/arm.h b/gcc-4.8/gcc/config/arm/arm.h index 05aea3577..478a3d7c8 100644 --- a/gcc-4.8/gcc/config/arm/arm.h +++ b/gcc-4.8/gcc/config/arm/arm.h @@ -1944,10 +1944,11 @@ enum arm_auto_incmodes #define CASE_VECTOR_PC_RELATIVE (TARGET_THUMB2 \ || (TARGET_THUMB1 \ + && !inline_thumb1_jump_table \ && (optimize_size || flag_pic))) #define CASE_VECTOR_SHORTEN_MODE(min, max, body) \ - (TARGET_THUMB1 \ + (TARGET_THUMB1 && !inline_thumb1_jump_table \ ? (min >= 0 && max < 512 \ ? (ADDR_DIFF_VEC_FLAGS (body).offset_unsigned = 1, QImode) \ : min >= -256 && max < 256 \ diff --git a/gcc-4.8/gcc/config/arm/arm.md b/gcc-4.8/gcc/config/arm/arm.md index a532e56ce..aea02fbf4 100644 --- a/gcc-4.8/gcc/config/arm/arm.md +++ b/gcc-4.8/gcc/config/arm/arm.md @@ -8807,7 +8807,7 @@ (match_operand:SI 2 "const_int_operand" "") ; total range (match_operand:SI 3 "" "") ; table label (match_operand:SI 4 "" "")] ; Out of range label - "TARGET_32BIT || optimize_size || flag_pic" + "TARGET_32BIT || ((optimize_size || flag_pic) && !inline_thumb1_jump_table)" " { enum insn_code code; diff --git a/gcc-4.8/gcc/config/arm/arm.opt b/gcc-4.8/gcc/config/arm/arm.opt index e778407ab..85826c1e4 100644 --- a/gcc-4.8/gcc/config/arm/arm.opt +++ b/gcc-4.8/gcc/config/arm/arm.opt @@ -185,6 +185,10 @@ mthumb-interwork Target Report Mask(INTERWORK) Support calls between Thumb and ARM instruction sets +minline-thumb1-jumptable +Target Report Var(inline_thumb1_jump_table) +Inline Thumb1 Jump table code + mtls-dialect= Target RejectNegative Joined Enum(tls_type) Var(target_tls_dialect) Init(TLS_GNU) Specify thread local storage scheme diff --git a/gcc-4.8/gcc/config/arm/elf.h b/gcc-4.8/gcc/config/arm/elf.h index 96fadebc3..d1a112d5c 100644 --- a/gcc-4.8/gcc/config/arm/elf.h +++ b/gcc-4.8/gcc/config/arm/elf.h @@ -101,7 +101,8 @@ the code more efficient, but for Thumb-1 it's better to put them out of band unless we are generating compressed tables. */ #define JUMP_TABLES_IN_TEXT_SECTION \ - (TARGET_32BIT || (TARGET_THUMB && (optimize_size || flag_pic))) + (TARGET_32BIT || (TARGET_THUMB && !inline_thumb1_jump_table \ + && (optimize_size || flag_pic))) #ifndef LINK_SPEC #define LINK_SPEC "%{mbig-endian:-EB} %{mlittle-endian:-EL} -X" |