From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by sourceware.org (Postfix) with ESMTPS id 1908C3858D35 for ; Fri, 10 Nov 2023 23:53:44 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1908C3858D35 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=linux.ibm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linux.ibm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 1908C3858D35 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=148.163.156.1 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699660426; cv=none; b=LaqAdDy7RRCXmcWndNvzApntcCFh9eMiW0X126YoEkcOiSwOp+5jH2ozMVaGMYFtmhJt0ljP3hf4eQvzBuPExn3OAKbXLpRTukZbSWKprpxt4yc+6u15d695RFAz4Q042dVhIWeT/NhpFV0PW75KLgvA9ax0xuIdstpWUxMMing= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699660426; c=relaxed/simple; bh=ft9a4oOR99ZXvK4szHpazd71yVDDBQUiFXt0UqZ+yAA=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From; b=HJ/MB9yQqdJ75sHqcGLBmfHVmsknqWm6mpdPrO/0aD9Y5P7UTdc7x3o/gTjRzKzDD+EsQF3zpyN4bIWUAzWuK6z2p6elcXoZZUlZ7bPO4DjQqKjV2bUYQzoqsvUIZ24Pv43rHb9niblSPaEXKVhUG5RYejhz8EkG9k94K0eofHM= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 3AANgFpI016246; Fri, 10 Nov 2023 23:53:43 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=message-id : date : mime-version : subject : to : cc : references : from : in-reply-to : content-type : content-transfer-encoding; s=pp1; bh=GhArdCgTuLDcUSH5Eii/oFwjcI8WOJebiPjo01f4rLA=; b=P4+XtN5oixxqlW/TqAjX3l5SdAwqlFjSUcy70Kjnhjk+J94/55v4yE4FXoUt8CJC8mse AGYwvDW60RQ83unUUx8efZp0NZn2FS8JpoPhhzLUu7s9TuAr9CpajFhIBqn2+/md55wg tGPz1qPtlO8h8Bnfs6xpHoyvFU+qNbAde5PJszPWo6nWysmI0Mv8Tcawa0sTpq+JMztq 0v8z1+7a3+BdTc5wDZS7qhZDvfVnR+F0wApg4nHWDX6TpPGLDb3mbFUGXop6Auadf3YQ PpCDEMkfzu+KgJP9aq3kalujeaiId2vYhiXf2Lq/xrJa4A3Q+CBaIhllk+KK+yxPl8Pf yw== Received: from ppma11.dal12v.mail.ibm.com (db.9e.1632.ip4.static.sl-reverse.com [50.22.158.219]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3u9xe306nk-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 10 Nov 2023 23:53:42 +0000 Received: from pps.filterd (ppma11.dal12v.mail.ibm.com [127.0.0.1]) by ppma11.dal12v.mail.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 3AALud84004112; Fri, 10 Nov 2023 23:51:32 GMT Received: from smtprelay06.dal12v.mail.ibm.com ([172.16.1.8]) by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 3u7w21egnk-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 10 Nov 2023 23:51:32 +0000 Received: from smtpav01.dal12v.mail.ibm.com (smtpav01.dal12v.mail.ibm.com [10.241.53.100]) by smtprelay06.dal12v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 3AANpVfh18940490 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 10 Nov 2023 23:51:32 GMT Received: from smtpav01.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id E126A58058; Fri, 10 Nov 2023 23:51:31 +0000 (GMT) Received: from smtpav01.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 5ECDD5805D; Fri, 10 Nov 2023 23:51:31 +0000 (GMT) Received: from [9.61.149.35] (unknown [9.61.149.35]) by smtpav01.dal12v.mail.ibm.com (Postfix) with ESMTP; Fri, 10 Nov 2023 23:51:31 +0000 (GMT) Message-ID: Date: Fri, 10 Nov 2023 17:51:30 -0600 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] rs6000: Disable PCREL for unsupported targets [PR111045] Content-Language: en-US To: "Kewen.Lin" Cc: segher@kernel.crashing.org, gcc-patches@gcc.gnu.org, Michael Meissner , P Jeevitha References: <448048b2-1256-4d13-924e-695b4b3ff9ba@linux.vnet.ibm.com> <2c4fb77c-4cc9-dce8-b25f-4c3a463d348c@linux.ibm.com> <31f76b1c-86ce-bb08-e888-c7d7bb49e75f@linux.ibm.com> <2029afa9-e971-21a9-f346-e335ef384d78@linux.ibm.com> <29fc5f0f-130a-85b3-0d50-82ac9f3494b4@linux.ibm.com> <5bd33bfc-ca84-6879-75b9-628313bdd7e7@linux.ibm.com> From: Peter Bergner In-Reply-To: <5bd33bfc-ca84-6879-75b9-628313bdd7e7@linux.ibm.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: BTfWL2o7ju5pCtHi3o-9c78eUAMBYut4 X-Proofpoint-GUID: BTfWL2o7ju5pCtHi3o-9c78eUAMBYut4 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.987,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-11-10_21,2023-11-09_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 suspectscore=0 phishscore=0 clxscore=1011 adultscore=0 bulkscore=0 spamscore=0 mlxlogscore=999 mlxscore=0 malwarescore=0 impostorscore=0 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311060000 definitions=main-2311100198 X-Spam-Status: No, score=-9.8 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,GIT_PATCH_0,KAM_STOCKGEN,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On 8/27/23 9:06 PM, Kewen.Lin wrote: > Assuming we only have ELFv2_ABI_CHECK in PCREL_SUPPORTED_BY_OS, we > can have either TARGET_PCREL or !TARGET_PCREL after the checking. > For the latter, it's fine and don't need any checks. For the former, > if it's implicit, for !TARGET_PREFIXED we will clean it silently; > while if it's explicit, for !TARGET_PREFIXED we will emit an error. > TARGET_PREFIXED checking has considered Power10, so it's also > concerned accordingly. [snip] > Yeah, looking forward to their opinions. IMHO, with the current proposed > change, pcrel doesn't look like a pure Power10 hardware feature, it also > quite relies on ABIs, that's why I thought it seems good not to turn it > on by default for Power10. Ok, how about the patch below? This removes OPTION_MASK_PCREL from the power10 flags, so instead of our options override code needing to disable PCREL on the systems that don't support it, we now enable it only on those systems that do support it. Jeevitha, can you test this patch to see whether it fixes the testsuite issue caused by your earlier patch that was approved, but not yet pushed? That was the use GPR2 for register allocation, correct? Note, you'll need to update the patch to replace the rs6000_pcrel_p() usage with just TARGET_PCREL, since this patch removes rs6000_pcrel_p(). If testing is clean and everyone is OK with the patch, I'll officially submit it for review with git log entry, etc. Peter gcc/ * config/rs6000/linux64.h (PCREL_SUPPORTED_BY_OS): Only test the ABI. * config/rs6000/rs6000-cpus.def (RS6000_CPU): Remove OPTION_MASK_PCREL from power10. * config/rs6000/predicates.md: Use TARGET_PCREL. * config/rs6000/rs6000-logue.cc (rs6000_decl_ok_for_sibcall): Likewise. (rs6000_global_entry_point_prologue_needed_p): Likewise. (rs6000_output_function_prologue): Likewise. * config/rs6000/rs6000.md: Likewise. * config/rs6000/rs6000.cc (rs6000_option_override_internal): Rework the logic for enabling PCREL by default. (rs6000_legitimize_tls_address): Use TARGET_PCREL. (rs6000_call_template_1): Likewise. (rs6000_indirect_call_template_1): Likewise. (rs6000_longcall_ref): Likewise. (rs6000_call_aix): Likewise. (rs6000_sibcall_aix): Likewise. (rs6000_pcrel_p): Remove. * config/rs6000/rs6000-protos.h (rs6000_pcrel_p): Likewise. diff --git a/gcc/config/rs6000/linux64.h b/gcc/config/rs6000/linux64.h index 98b7255c95f..5b77bd7fd51 100644 --- a/gcc/config/rs6000/linux64.h +++ b/gcc/config/rs6000/linux64.h @@ -563,8 +563,5 @@ extern int dot_symbols; #define TARGET_FLOAT128_ENABLE_TYPE 1 /* Enable using prefixed PC-relative addressing on POWER10 if the ABI - supports it. The ELF v2 ABI only supports PC-relative relocations for - the medium code model. */ -#define PCREL_SUPPORTED_BY_OS (TARGET_POWER10 && TARGET_PREFIXED \ - && ELFv2_ABI_CHECK \ - && TARGET_CMODEL == CMODEL_MEDIUM) + supports it. */ +#define PCREL_SUPPORTED_BY_OS (ELFv2_ABI_CHECK) diff --git a/gcc/config/rs6000/rs6000-cpus.def b/gcc/config/rs6000/rs6000-cpus.def index 4f350da378c..fe01a2312ae 100644 --- a/gcc/config/rs6000/rs6000-cpus.def +++ b/gcc/config/rs6000/rs6000-cpus.def @@ -256,7 +256,8 @@ RS6000_CPU ("power8", PROCESSOR_POWER8, MASK_POWERPC64 | ISA_2_7_MASKS_SERVER | OPTION_MASK_HTM) RS6000_CPU ("power9", PROCESSOR_POWER9, MASK_POWERPC64 | ISA_3_0_MASKS_SERVER | OPTION_MASK_HTM) -RS6000_CPU ("power10", PROCESSOR_POWER10, MASK_POWERPC64 | ISA_3_1_MASKS_SERVER) +RS6000_CPU ("power10", PROCESSOR_POWER10, MASK_POWERPC64 + | (ISA_3_1_MASKS_SERVER & ~OPTION_MASK_PCREL)) RS6000_CPU ("powerpc", PROCESSOR_POWERPC, 0) RS6000_CPU ("powerpc64", PROCESSOR_POWERPC64, OPTION_MASK_PPC_GFXOPT | MASK_POWERPC64) diff --git a/gcc/config/rs6000/predicates.md b/gcc/config/rs6000/predicates.md index ef7d3f214c4..0b76541fc0a 100644 --- a/gcc/config/rs6000/predicates.md +++ b/gcc/config/rs6000/predicates.md @@ -1216,7 +1216,7 @@ && SYMBOL_REF_DECL (op) != NULL && TREE_CODE (SYMBOL_REF_DECL (op)) == FUNCTION_DECL && (rs6000_fndecl_pcrel_p (SYMBOL_REF_DECL (op)) - != rs6000_pcrel_p ()))"))) + != TARGET_PCREL))"))) ;; Return 1 if this operand is a valid input for a move insn. (define_predicate "input_operand" diff --git a/gcc/config/rs6000/rs6000-logue.cc b/gcc/config/rs6000/rs6000-logue.cc index 98846f781ec..9e08d9bb4d2 100644 --- a/gcc/config/rs6000/rs6000-logue.cc +++ b/gcc/config/rs6000/rs6000-logue.cc @@ -1106,7 +1106,7 @@ rs6000_decl_ok_for_sibcall (tree decl) r2 for its caller's TOC. Such a function may make sibcalls to any function, whether local or external, without restriction based on TOC-save/restore rules. */ - if (rs6000_pcrel_p ()) + if (TARGET_PCREL) return true; /* Otherwise, under the AIX or ELFv2 ABIs we can't allow sibcalls @@ -2583,7 +2583,7 @@ rs6000_global_entry_point_prologue_needed_p (void) return false; /* PC-relative functions never generate a global entry point prologue. */ - if (rs6000_pcrel_p ()) + if (TARGET_PCREL) return false; /* Ensure we have a global entry point for thunks. ??? We could @@ -4045,7 +4045,7 @@ rs6000_output_function_prologue (FILE *file) patch_area_entry == 0); } - else if (rs6000_pcrel_p ()) + else if (TARGET_PCREL) { const char *name = XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0); /* All functions compiled to use PC-relative addressing will diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 2a1b5ecfaee..97de6940e07 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -11333,7 +11333,7 @@ (match_operand:P 3 "" "")] UNSPECV_PLT_PCREL))] "HAVE_AS_PLTSEQ && TARGET_ELF - && rs6000_pcrel_p ()" + && TARGET_PCREL" { return rs6000_pltseq_template (operands, RS6000_PLTSEQ_PLT_PCREL34); } @@ -11418,7 +11418,7 @@ else if (INTVAL (operands[2]) & CALL_V4_CLEAR_FP_ARGS) output_asm_insn ("creqv 6,6,6", operands); - if (rs6000_pcrel_p ()) + if (TARGET_PCREL) return "bl %z0@notoc"; return (DEFAULT_ABI == ABI_V4 && flag_pic) ? "bl %z0@local" : "bl %z0"; } @@ -11439,7 +11439,7 @@ else if (INTVAL (operands[3]) & CALL_V4_CLEAR_FP_ARGS) output_asm_insn ("creqv 6,6,6", operands); - if (rs6000_pcrel_p ()) + if (TARGET_PCREL) return "bl %z1@notoc"; return (DEFAULT_ABI == ABI_V4 && flag_pic) ? "bl %z1@local" : "bl %z1"; } @@ -11614,7 +11614,7 @@ } [(set_attr "type" "branch") (set (attr "length") - (if_then_else (match_test "rs6000_pcrel_p ()") + (if_then_else (match_test "TARGET_PCREL") (const_int 4) (const_int 8)))]) @@ -11631,7 +11631,7 @@ } [(set_attr "type" "branch") (set (attr "length") - (if_then_else (match_test "rs6000_pcrel_p ()") + (if_then_else (match_test "TARGET_PCREL") (const_int 4) (const_int 8)))]) @@ -11705,7 +11705,7 @@ (match_operand 1)) (use (match_operand:SI 2 "immediate_operand" "n,n,n")) (clobber (reg:P LR_REGNO))] - "rs6000_pcrel_p ()" + "TARGET_PCREL" { return rs6000_indirect_call_template (operands, 0); } @@ -11742,7 +11742,7 @@ (match_operand:P 2 "unspec_tls" ""))) (use (match_operand:SI 3 "immediate_operand" "n,n,n")) (clobber (reg:P LR_REGNO))] - "rs6000_pcrel_p ()" + "TARGET_PCREL" { return rs6000_indirect_call_template (operands, 1); } diff --git a/gcc/config/rs6000/rs6000.cc b/gcc/config/rs6000/rs6000.cc index 5f56c3ed85b..c4077c786ec 100644 --- a/gcc/config/rs6000/rs6000.cc +++ b/gcc/config/rs6000/rs6000.cc @@ -4378,17 +4378,23 @@ rs6000_option_override_internal (bool global_init_p) /* If the ABI has support for PC-relative relocations, enable it by default. This test depends on the sub-target tests above setting the code model to medium for ELF v2 systems. */ - if (PCREL_SUPPORTED_BY_OS - && (rs6000_isa_flags_explicit & OPTION_MASK_PCREL) == 0) - rs6000_isa_flags |= OPTION_MASK_PCREL; - - /* -mpcrel requires -mcmodel=medium, but we can't check TARGET_CMODEL until - after the subtarget override options are done. */ - else if (TARGET_PCREL && TARGET_CMODEL != CMODEL_MEDIUM) + if (PCREL_SUPPORTED_BY_OS) { - if ((rs6000_isa_flags_explicit & OPTION_MASK_PCREL) != 0) + /* PCREL on ELFv2 currently requires -mcmodel=medium, but we can't check + TARGET_CMODEL until after the subtarget override options are done. */ + if (TARGET_PCREL && TARGET_CMODEL != CMODEL_MEDIUM) error ("%qs requires %qs", "-mpcrel", "-mcmodel=medium"); + if (TARGET_POWER10 + && TARGET_PREFIXED + && (rs6000_isa_flags_explicit & OPTION_MASK_PCREL) == 0) + rs6000_isa_flags |= OPTION_MASK_PCREL; + } + else + { + if (TARGET_PCREL + && (rs6000_isa_flags_explicit & OPTION_MASK_PCREL) != 0) + error ("use of %qs is invalid for this target", "-mpcrel"); rs6000_isa_flags &= ~OPTION_MASK_PCREL; } @@ -9645,7 +9651,7 @@ rs6000_legitimize_tls_address (rtx addr, enum tls_model model) dest = gen_reg_rtx (Pmode); if (model == TLS_MODEL_LOCAL_EXEC - && (rs6000_tls_size == 16 || rs6000_pcrel_p ())) + && (rs6000_tls_size == 16 || TARGET_PCREL)) { rtx tlsreg; @@ -9692,7 +9698,7 @@ rs6000_legitimize_tls_address (rtx addr, enum tls_model model) them in the .got section. So use a pointer to the .got section, not one to secondary TOC sections used by 64-bit -mminimal-toc, or to secondary GOT sections used by 32-bit -fPIC. */ - if (rs6000_pcrel_p ()) + if (TARGET_PCREL) got = const0_rtx; else if (TARGET_64BIT) got = gen_rtx_REG (Pmode, 2); @@ -9757,7 +9763,7 @@ rs6000_legitimize_tls_address (rtx addr, enum tls_model model) rtx uns = gen_rtx_UNSPEC (Pmode, vec, UNSPEC_TLS_GET_ADDR); set_unique_reg_note (get_last_insn (), REG_EQUAL, uns); - if (rs6000_tls_size == 16 || rs6000_pcrel_p ()) + if (rs6000_tls_size == 16 || TARGET_PCREL) { if (TARGET_64BIT) insn = gen_tls_dtprel_64 (dest, tmp1, addr); @@ -9798,7 +9804,7 @@ rs6000_legitimize_tls_address (rtx addr, enum tls_model model) else insn = gen_tls_got_tprel_32 (tmp2, got, addr); emit_insn (insn); - if (rs6000_pcrel_p ()) + if (TARGET_PCREL) { if (TARGET_64BIT) insn = gen_tls_tls_pcrel_64 (dest, tmp2, addr); @@ -14866,7 +14872,7 @@ rs6000_call_template_1 (rtx *operands, unsigned int funop, bool sibcall) ? "+32768" : "")); static char str[32]; /* 1 spare */ - if (rs6000_pcrel_p ()) + if (TARGET_PCREL) sprintf (str, "b%s %s@notoc%s", sibcall ? "" : "l", z, arg); else if (DEFAULT_ABI == ABI_AIX || DEFAULT_ABI == ABI_ELFv2) sprintf (str, "b%s %s%s%s", sibcall ? "" : "l", z, arg, @@ -15006,7 +15012,7 @@ rs6000_indirect_call_template_1 (rtx *operands, unsigned int funop, rel64); } - const char *notoc = rs6000_pcrel_p () ? "_NOTOC" : ""; + const char *notoc = TARGET_PCREL ? "_NOTOC" : ""; const char *addend = (DEFAULT_ABI == ABI_V4 && TARGET_SECURE_PLT && flag_pic == 2 ? "+32768" : ""); if (!speculate) @@ -15023,7 +15029,7 @@ rs6000_indirect_call_template_1 (rtx *operands, unsigned int funop, else if (!speculate) s += sprintf (s, "crset 2\n\t"); - if (rs6000_pcrel_p ()) + if (TARGET_PCREL) { if (speculate) sprintf (s, "b%%T%ul", funop); @@ -20685,7 +20691,7 @@ rs6000_longcall_ref (rtx call_ref, rtx arg) { rtx base = const0_rtx; int regno = 12; - if (rs6000_pcrel_p ()) + if (TARGET_PCREL) { rtx reg = gen_rtx_REG (Pmode, regno); rtx u = gen_rtx_UNSPEC_VOLATILE (Pmode, @@ -25934,7 +25940,7 @@ rs6000_call_aix (rtx value, rtx func_desc, rtx tlsarg, rtx cookie) if (!SYMBOL_REF_P (func) || (DEFAULT_ABI == ABI_AIX && !SYMBOL_REF_FUNCTION_P (func))) { - if (!rs6000_pcrel_p ()) + if (!TARGET_PCREL) { /* Save the TOC into its reserved slot before the call, and prepare to restore it after the call. */ @@ -26040,7 +26046,7 @@ rs6000_call_aix (rtx value, rtx func_desc, rtx tlsarg, rtx cookie) else { /* No TOC register needed for calls from PC-relative callers. */ - if (!rs6000_pcrel_p ()) + if (!TARGET_PCREL) /* Direct calls use the TOC: for local calls, the callee will assume the TOC register is set; for non-local calls, the PLT stub needs the TOC register. */ @@ -26089,7 +26095,7 @@ rs6000_sibcall_aix (rtx value, rtx func_desc, rtx tlsarg, rtx cookie) { /* PCREL can do a sibling call to a longcall function because we don't need to restore the TOC register. */ - gcc_assert (rs6000_pcrel_p ()); + gcc_assert (TARGET_PCREL); func_desc = rs6000_longcall_ref (func_desc, tlsarg); } else @@ -26116,7 +26122,7 @@ rs6000_sibcall_aix (rtx value, rtx func_desc, rtx tlsarg, rtx cookie) insn = emit_call_insn (insn); /* Note use of the TOC register. */ - if (!rs6000_pcrel_p ()) + if (!TARGET_PCREL) use_reg (&CALL_INSN_FUNCTION_USAGE (insn), gen_rtx_REG (Pmode, TOC_REGNUM)); @@ -26416,16 +26422,6 @@ rs6000_function_pcrel_p (struct function *fn) return rs6000_fndecl_pcrel_p (fn->decl); } -/* Return whether we should generate PC-relative code for the current - function. */ -bool -rs6000_pcrel_p () -{ - return (DEFAULT_ABI == ABI_ELFv2 - && (rs6000_isa_flags & OPTION_MASK_PCREL) != 0 - && TARGET_CMODEL == CMODEL_MEDIUM); -} - /* Given an address (ADDR), a mode (MODE), and what the format of the non-prefixed address (NON_PREFIXED_FORMAT) is, return the instruction format diff --git a/gcc/config/rs6000/rs6000-protos.h b/gcc/config/rs6000/rs6000-protos.h index f70118ea40f..8ffec295d09 100644 --- a/gcc/config/rs6000/rs6000-protos.h +++ b/gcc/config/rs6000/rs6000-protos.h @@ -158,7 +158,6 @@ extern rtx rs6000_allocate_stack_temp (machine_mode, bool, bool); extern align_flags rs6000_loop_align (rtx); extern void rs6000_split_logical (rtx [], enum rtx_code, bool, bool, bool); extern bool rs6000_function_pcrel_p (struct function *); -extern bool rs6000_pcrel_p (void); extern bool rs6000_fndecl_pcrel_p (const_tree); extern void rs6000_output_addr_vec_elt (FILE *, int);