aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.c
diff options
context:
space:
mode:
authorAlexandre Oliva <oliva@adacore.com>2020-12-03 16:20:28 -0300
committerAlexandre Oliva <oliva@gnu.org>2020-12-03 16:20:28 -0300
commit442b6fb7c09a39577261de90413cc4db366f1c5f (patch)
tree72fca0cbff303ab54fb255d15194067e0643adb2 /gcc/tree.c
parent44ac1ea0e2244343b798ff1ccc7048029cb9fa02 (diff)
downloadgcc-442b6fb7c09a39577261de90413cc4db366f1c5f.zip
gcc-442b6fb7c09a39577261de90413cc4db366f1c5f.tar.gz
gcc-442b6fb7c09a39577261de90413cc4db366f1c5f.tar.bz2
fix __builtin___clear_cache overrider fallout
Machines that had CLEAR_CACHE_INSN and that would thus issue calls to __clear_cache with the default call expander, would fail on languages that did not set up the __clear_cache builtin. This patch arranges for all languages to set up this builtin. Machines or multilibs that had ptr_mode != Pmode, such as aarch64 with -mabi=ilp32, would fail the RTL mode test of the arguments passed to __clear_cache, because we'd insist on ptr_mode. This patch arranges for Pmode to be accepted as well. for gcc/ChangeLog * tree.c (build_common_builtin_nodes): Declare __builtin___clear_cache for all languages. * builtins.c (maybe_emit_call_builtin___clear_cache): Accept Pmode arguments.
Diffstat (limited to 'gcc/tree.c')
-rw-r--r--gcc/tree.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/tree.c b/gcc/tree.c
index 52a145d..72311005 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -10733,6 +10733,12 @@ build_common_builtin_nodes (void)
ftype = build_function_type_list (void_type_node,
ptr_type_node, ptr_type_node, NULL_TREE);
+ if (!builtin_decl_explicit_p (BUILT_IN_CLEAR_CACHE))
+ local_define_builtin ("__builtin___clear_cache", ftype,
+ BUILT_IN_CLEAR_CACHE,
+ "__builtin___clear_cache",
+ ECF_NOTHROW);
+
local_define_builtin ("__builtin_nonlocal_goto", ftype,
BUILT_IN_NONLOCAL_GOTO,
"__builtin_nonlocal_goto",