X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Ftarghooks.c;h=da840190a2b8c691575a1bef757f2da93b9c95f9;hb=352e957ef4f7f37feae2777b343e458a53de5299;hp=00fa5024fa1a58f9ac5805765c962292ed9f817a;hpb=011d9d1639f6cdac670237f36144739b938a6c38;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/targhooks.c b/gcc/targhooks.c index 00fa5024fa1..da840190a2b 100644 --- a/gcc/targhooks.c +++ b/gcc/targhooks.c @@ -499,6 +499,8 @@ default_stack_protect_guard (void) if (t == NULL) { + rtx x; + t = build_decl (UNKNOWN_LOCATION, VAR_DECL, get_identifier ("__stack_chk_guard"), ptr_type_node); @@ -510,6 +512,11 @@ default_stack_protect_guard (void) DECL_ARTIFICIAL (t) = 1; DECL_IGNORED_P (t) = 1; + /* Do not share RTL as the declaration is visible outside of + current function. */ + x = DECL_RTL (t); + RTX_FLAG (x, used) = 1; + stack_chk_guard_decl = t; } @@ -619,6 +626,18 @@ default_libcall_value (enum machine_mode mode ATTRIBUTE_UNUSED, #endif } +/* The default hook for TARGET_FUNCTION_VALUE_REGNO_P. */ + +bool +default_function_value_regno_p (const unsigned int regno ATTRIBUTE_UNUSED) +{ +#ifdef FUNCTION_VALUE_REGNO_P + return FUNCTION_VALUE_REGNO_P (regno); +#else + gcc_unreachable (); +#endif +} + rtx default_internal_arg_pointer (void) { @@ -939,6 +958,26 @@ default_hard_regno_scratch_ok (unsigned int regno ATTRIBUTE_UNUSED) return true; } +/* The default implementation of TARGET_MODE_DEPENDENT_ADDRESS_P. */ + +bool +default_mode_dependent_address_p (const_rtx addr ATTRIBUTE_UNUSED) +{ +#ifdef GO_IF_MODE_DEPENDENT_ADDRESS + + GO_IF_MODE_DEPENDENT_ADDRESS (CONST_CAST_RTX (addr), win); + return false; + /* Label `win' might (not) be used via GO_IF_MODE_DEPENDENT_ADDRESS. */ + win: ATTRIBUTE_UNUSED_LABEL + return true; + +#else + + return false; + +#endif +} + bool default_target_option_valid_attribute_p (tree ARG_UNUSED (fndecl), tree ARG_UNUSED (name),