diff --git a/gcc/config/arc64/arc64.cc b/gcc/config/arc64/arc64.cc index bad5a50fa9f4..f3bc5c094222 100644 --- a/gcc/config/arc64/arc64.cc +++ b/gcc/config/arc64/arc64.cc @@ -297,7 +297,7 @@ static tree arc64_interrupt_attribute (tree *, tree, tree, int, bool *); /* { name, min_len, max_len, decl_req, type_req, fn_type_req, affects_type_identity, handler, exclude } */ -const struct attribute_spec arc64_attribute_table[] = +TARGET_GNU_ATTRIBUTES (arc64_attribute_table, { /* Functions which are used for ISR, return address is using ILINK reg. */ { "interrupt", 0, 1, false, true, true, false, arc64_interrupt_attribute, @@ -306,10 +306,8 @@ const struct attribute_spec arc64_attribute_table[] = /* Function which are not having the prologue and epilogue generated by the compiler. */ { "naked", 0, 0, true, false, false, false, arc64_fndecl_attribute, - NULL }, - - { NULL, 0, 0, false, false, false, false, NULL, NULL } -}; + NULL } +}); /* Local variable true if we output scalled address. */ static bool scalled_p = false; @@ -922,7 +920,10 @@ arc64_get_symbol_type (rtx x) } /* Helper legitimate address. Extra takes an input to discriminate - among load or store addresses. */ + among load or store addresses. + + This function must handle the "true" cases returned from + arc64_legitimate_constant1_p(). */ static bool arc64_legitimate_address_1_p (machine_mode mode, rtx x, @@ -953,7 +954,8 @@ arc64_legitimate_address_1_p (machine_mode mode, return false; /* fall thru */ } - if (GET_CODE (XEXP (x, 0)) == PLUS + if (GET_CODE (x) == CONST /* Avoid {SYMBOL,LABEL}_REFs */ + && GET_CODE (XEXP (x, 0)) == PLUS && CONST_INT_P (XEXP (XEXP (x, 0), 1)) /* Reloc addendum is only 32bit. */ && UNSIGNED_INT32 (INTVAL (XEXP (XEXP (x, 0), 1)))) @@ -1100,7 +1102,8 @@ arc64_legitimate_address_1_p (machine_mode mode, static bool arc64_legitimate_address_p (machine_mode mode, rtx x, - bool strict ATTRIBUTE_UNUSED) + bool strict ATTRIBUTE_UNUSED, + code_helper = ERROR_MARK) { /* Allow all the addresses accepted by load. */ return arc64_legitimate_address_1_p (mode, x, strict, true, true); diff --git a/gcc/config/arc64/arc64.opt.urls b/gcc/config/arc64/arc64.opt.urls new file mode 100644 index 000000000000..e1945b82d4cc --- /dev/null +++ b/gcc/config/arc64/arc64.opt.urls @@ -0,0 +1,40 @@ +; Autogenerated by regenerate-opt-urls.py from gcc/config/arc64/arc64.opt and generated HTML + +mcmodel= +UrlSuffix(gcc/ARC64-Options.html#index-mcmodel) + +matomic= +UrlSuffix(gcc/ARC64-Options.html#index-matomic-1) + +mfpu= +UrlSuffix(gcc/ARC64-Options.html#index-mfpu-1) + +mdiv-rem +UrlSuffix(gcc/ARC64-Options.html#index-mdiv-rem-1) + +mbitscan +UrlSuffix(gcc/ARC64-Options.html#index-mbitscan) + +mcpu= +UrlSuffix(gcc/ARC64-Options.html#index-mcpu-2) + +munaligned-access +UrlSuffix(gcc/ARC64-Options.html#index-munaligned-access) + +mvolatile-di +UrlSuffix(gcc/ARC64-Options.html#index-mvolatile-di) + +mcode-density +UrlSuffix(gcc/ARC64-Options.html#index-mcode-density-1) + +msimd +UrlSuffix(gcc/ARC64-Options.html#index-msimd-1) + +mwide +UrlSuffix(gcc/ARC64-Options.html#index-mwide) + +; skipping UrlSuffix for 'mll64' due to finding no URLs + +m128 +UrlSuffix(gcc/ARC64-Options.html#index-m128) +