xops[0] = GEN_INT (TREE_INT_CST_LOW (TREE_VALUE (attr_args)));
output_asm_insn ("call\t%0", xops);
}
- else if (fndecl_built_in_p (decl))
- {
- /* For now lets report this as an error while we are not able to
- link eBPF object files. In particular with libgcc. */
- tree name = DECL_NAME (decl);
- error ("call to external builtin %s in function, which is not supported by "
- "eBPF", name != NULL_TREE ? IDENTIFIER_POINTER (name) : "(anon)");
- output_asm_insn ("call 0", NULL);
- }
else
output_asm_insn ("call\t%0", &target);
return "";
}
-static void
-bpf_external_libcall (rtx fun)
-{
- tree decl = SYMBOL_REF_DECL (fun);
- tree name = DECL_NAME (decl);
- error ("call to external libcall %s in function, which is not supported by "
- "eBPF", name != NULL_TREE ? IDENTIFIER_POINTER (name) : "(anon)");
-}
-
-#undef TARGET_ASM_EXTERNAL_LIBCALL
-#define TARGET_ASM_EXTERNAL_LIBCALL bpf_external_libcall
-
/* Print register name according to assembly dialect. In normal
syntax registers are printed like %rN where N is the register
number.
{
return __atomic_compare_exchange (p, expected, &desired, 0,
__ATOMIC_ACQUIRE, __ATOMIC_RELAXED);
-} /* { dg-error "call to external builtin" } */
+}
int
foo64 (long *p, long *expected, long desired)