diff options
author | Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> | 2022-09-11 20:51:15 +0900 |
---|---|---|
committer | Max Filippov <jcmvbkbc@gmail.com> | 2022-09-12 12:37:07 -0700 |
commit | 936efcac733fe49e5ea9e636403e5941f24ff1b3 (patch) | |
tree | 8658fdc1d915f0946bb766b846f74b45a557f048 /gcc/config/xtensa/xtensa.cc | |
parent | db19cfdac8ede93172aecc58612171c239c993ad (diff) | |
download | gcc-936efcac733fe49e5ea9e636403e5941f24ff1b3.zip gcc-936efcac733fe49e5ea9e636403e5941f24ff1b3.tar.gz gcc-936efcac733fe49e5ea9e636403e5941f24ff1b3.tar.bz2 |
xtensa: Implement new target hook: TARGET_CONSTANT_OK_FOR_CPROP_P
This patch implements new target hook TARGET_CONSTANT_OK_FOR_CPROP_P in
order to exclude CONST_INTs that cannot fit into a MOVI machine instruction
from cprop.
gcc/ChangeLog:
* config/xtensa/xtensa.cc (TARGET_CONSTANT_OK_FOR_CPROP_P):
New macro definition.
(xtensa_constant_ok_for_cprop_p):
Implement the hook as mentioned above.
Diffstat (limited to 'gcc/config/xtensa/xtensa.cc')
-rw-r--r-- | gcc/config/xtensa/xtensa.cc | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/gcc/config/xtensa/xtensa.cc b/gcc/config/xtensa/xtensa.cc index f1b3331..cc1829d 100644 --- a/gcc/config/xtensa/xtensa.cc +++ b/gcc/config/xtensa/xtensa.cc @@ -191,6 +191,7 @@ static bool xtensa_can_eliminate (const int from ATTRIBUTE_UNUSED, static HOST_WIDE_INT xtensa_starting_frame_offset (void); static unsigned HOST_WIDE_INT xtensa_asan_shadow_offset (void); static bool xtensa_function_ok_for_sibcall (tree, tree); +static bool xtensa_constant_ok_for_cprop_p (const_rtx); static rtx xtensa_delegitimize_address (rtx); @@ -345,12 +346,15 @@ static rtx xtensa_delegitimize_address (rtx); #undef TARGET_HAVE_SPECULATION_SAFE_VALUE #define TARGET_HAVE_SPECULATION_SAFE_VALUE speculation_safe_value_not_needed -#undef TARGET_DELEGITIMIZE_ADDRESS -#define TARGET_DELEGITIMIZE_ADDRESS xtensa_delegitimize_address - #undef TARGET_FUNCTION_OK_FOR_SIBCALL #define TARGET_FUNCTION_OK_FOR_SIBCALL xtensa_function_ok_for_sibcall +#undef TARGET_CONSTANT_OK_FOR_CPROP_P +#define TARGET_CONSTANT_OK_FOR_CPROP_P xtensa_constant_ok_for_cprop_p + +#undef TARGET_DELEGITIMIZE_ADDRESS +#define TARGET_DELEGITIMIZE_ADDRESS xtensa_delegitimize_address + struct gcc_target targetm = TARGET_INITIALIZER; @@ -4983,6 +4987,16 @@ xtensa_function_ok_for_sibcall (tree decl ATTRIBUTE_UNUSED, tree exp ATTRIBUTE_U return true; } +/* Implement TARGET_CONSTANT_OK_FOR_CPROP_P. */ +static bool +xtensa_constant_ok_for_cprop_p (const_rtx x) +{ + if (CONST_INT_P (x) && ! xtensa_simm12b (INTVAL (x))) + return false; + + return true; +} + static rtx xtensa_delegitimize_address (rtx op) { |