From patchwork Tue Sep 11 14:02:31 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chris Schlumberger-Socha X-Patchwork-Id: 183117 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id A8ECD2C0081 for ; Wed, 12 Sep 2012 00:02:56 +1000 (EST) Comment: DKIM? See http://www.dkim.org DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=gcc.gnu.org; s=default; x=1347976977; h=Comment: DomainKey-Signature:Received:Received:Received:Received:Received: Message-ID:Date:From:User-Agent:MIME-Version:To:Subject: Content-Type:Mailing-List:Precedence:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:Sender:Delivered-To; bh=kQkDPH3 fukZ0y8E19HdE0o5Pko8=; b=rXF97jIg9aiwFQpTJSUh11F4CMn+EGywmZ4lfVw 3JLQGCo3jO9gKovRCQl22V6+Fet6ChWJM/3A7eqbqh1sGe6uZoSajAEjjoLQRBGk wSCub9WSEK0JE+DxVtceQiJ6dv0zg1nEZ2ZznLuM45bLwU/D82dfMSdXdl/VlF3a /9Dw= Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=default; d=gcc.gnu.org; h=Received:Received:X-SWARE-Spam-Status:X-Spam-Check-By:Received:Received:Received:Message-ID:Date:From:User-Agent:MIME-Version:To:Subject:X-MC-Unique:Content-Type:Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender:Delivered-To; b=og9yagKL4iiKOWJrPFMi2961Ltj/7IR1nVDSg8cbCjwCoVOYvDvMB5RAZtfNJs pQeIOEDcMF7Oi+0UEGgegbvELHP7X+XwYZDCqR/0RvSdZ/eY2u8ZkL4bjH6pUzca R85329UOBfDnu7pER315LBVKwzeI1z5kZIVTVB0ktBHF8=; Received: (qmail 30244 invoked by alias); 11 Sep 2012 14:02:50 -0000 Received: (qmail 30223 invoked by uid 22791); 11 Sep 2012 14:02:48 -0000 X-SWARE-Spam-Status: No, hits=-1.2 required=5.0 tests=AWL, BAYES_00, KHOP_RCVD_UNTRUST, RCVD_IN_DNSWL_LOW X-Spam-Check-By: sourceware.org Received: from service87.mimecast.com (HELO service87.mimecast.com) (91.220.42.44) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 11 Sep 2012 14:02:34 +0000 Received: from cam-owa2.Emea.Arm.com (fw-tnat.cambridge.arm.com [217.140.96.21]) by service87.mimecast.com; Tue, 11 Sep 2012 15:02:32 +0100 Received: from [10.1.69.51] ([10.1.255.212]) by cam-owa2.Emea.Arm.com with Microsoft SMTPSVC(6.0.3790.3959); Tue, 11 Sep 2012 15:02:31 +0100 Message-ID: <504F4477.3060009@arm.com> Date: Tue, 11 Sep 2012 15:02:31 +0100 From: Chris Schlumberger-Socha User-Agent: Thunderbird 2.0.0.24 (X11/20101213) MIME-Version: 1.0 To: gcc-patches@gcc.gnu.org Subject: [PATCH, AARCH64] Added predefines for AArch64 code models X-MC-Unique: 112091115023215101 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org This patch adds predefines for AArch64 code models. These code models are added as an effective target for the AArch64 platform. Tests for these predefines have been added to `gcc.target/aarch64/'. Thanks, Chris ChangeLog: [AArch64] Added predefines for AArch64 code models. gcc/ * config/aarch64/aarch64.h (TARGET_CPU_CPP_BUILTINS): Add predefine for AArch64 code models. gcc/testsuite/ * gcc.target/aarch64/predefine_large.c: New test for large code model predefine. * gcc.target/aarch64/predefine_small.c: Likewise for small code model. * gcc.target/aarch64/predefine_tiny.c: Likewise for small code model. * lib/target-supports.exp (check_effective_target_aarch64_tiny): Check effective target for tiny code model. (check_effective_target_aarch64_small): Likewise for small code model. (check_effective_target_aarch64_large): Likewise for large code model. >From c130393b5d8b888550e548b36dd34a71b8d94f88 Mon Sep 17 00:00:00 2001 From: Chris Schlumberger-Socha Date: Wed, 22 Aug 2012 18:22:26 +0100 Subject: [PATCH] Added predefines for AArch64 code models. Added DejaGnu tests for new predefines. --- gcc/config/aarch64/aarch64.h | 34 ++++++++++++---- gcc/testsuite/gcc.target/aarch64/predefine_large.c | 7 +++ gcc/testsuite/gcc.target/aarch64/predefine_small.c | 7 +++ gcc/testsuite/gcc.target/aarch64/predefine_tiny.c | 7 +++ gcc/testsuite/lib/target-supports.exp | 42 ++++++++++++++++++++ 5 files changed, 89 insertions(+), 8 deletions(-) create mode 100644 gcc/testsuite/gcc.target/aarch64/predefine_large.c create mode 100644 gcc/testsuite/gcc.target/aarch64/predefine_small.c create mode 100644 gcc/testsuite/gcc.target/aarch64/predefine_tiny.c diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h index 5d121fa..593c01a 100644 --- a/gcc/config/aarch64/aarch64.h +++ b/gcc/config/aarch64/aarch64.h @@ -23,14 +23,32 @@ #define GCC_AARCH64_H /* Target CPU builtins. */ -#define TARGET_CPU_CPP_BUILTINS() \ - do \ - { \ - builtin_define ("__aarch64__"); \ - if (TARGET_BIG_END) \ - builtin_define ("__AARCH64EB__"); \ - else \ - builtin_define ("__AARCH64EL__"); \ +#define TARGET_CPU_CPP_BUILTINS() \ + do \ + { \ + builtin_define ("__aarch64__"); \ + if (TARGET_BIG_END) \ + builtin_define ("__AARCH64EB__"); \ + else \ + builtin_define ("__AARCH64EL__"); \ + \ + switch (aarch64_cmodel) \ + { \ + case AARCH64_CMODEL_TINY: \ + case AARCH64_CMODEL_TINY_PIC: \ + builtin_define ("__AARCH64_CMODEL_TINY__"); \ + break; \ + case AARCH64_CMODEL_SMALL: \ + case AARCH64_CMODEL_SMALL_PIC: \ + builtin_define ("__AARCH64_CMODEL_SMALL__");\ + break; \ + case AARCH64_CMODEL_LARGE: \ + builtin_define ("__AARCH64_CMODEL_LARGE__"); \ + break; \ + default: \ + break; \ + } \ + \ } while (0) diff --git a/gcc/testsuite/gcc.target/aarch64/predefine_large.c b/gcc/testsuite/gcc.target/aarch64/predefine_large.c new file mode 100644 index 0000000..0d7d4da --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/predefine_large.c @@ -0,0 +1,7 @@ +/* { dg-skip-if "Code model already defined" { aarch64_tiny || aarch64_small } } */ + +#ifdef __AARCH64_CMODEL_LARGE__ + int dummy; +#else + #error +#endif diff --git a/gcc/testsuite/gcc.target/aarch64/predefine_small.c b/gcc/testsuite/gcc.target/aarch64/predefine_small.c new file mode 100644 index 0000000..b136284 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/predefine_small.c @@ -0,0 +1,7 @@ +/* { dg-skip-if "Code model already defined" { aarch64_tiny || aarch64_large } } */ + +#ifdef __AARCH64_CMODEL_SMALL__ + int dummy; +#else + #error +#endif diff --git a/gcc/testsuite/gcc.target/aarch64/predefine_tiny.c b/gcc/testsuite/gcc.target/aarch64/predefine_tiny.c new file mode 100644 index 0000000..d2c844b --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/predefine_tiny.c @@ -0,0 +1,7 @@ +/* { dg-skip-if "Code model already defined" { aarch64_small || aarch64_large } } */ + +#ifdef __AARCH64_CMODEL_TINY__ + int dummy; +#else + #error +#endif diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index 51805ed..2252c83 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -4654,3 +4654,45 @@ proc check_effective_target_ucontext_h { } { #include }] } + +proc check_effective_target_aarch64_tiny { } { + if { [istarget aarch64*-*-*] } { + return [check_no_compiler_messages aarch64_tiny object { + #ifdef __AARCH64_CMODEL_TINY__ + int dummy; + #else + #error target not AArch64 tiny code model + #endif + }] + } else { + return 0 + } +} + +proc check_effective_target_aarch64_small { } { + if { [istarget aarch64*-*-*] } { + return [check_no_compiler_messages aarch64_small object { + #ifdef __AARCH64_CMODEL_SMALL__ + int dummy; + #else + #error target not AArch64 small code model + #endif + }] + } else { + return 0 + } +} + +proc check_effective_target_aarch64_large { } { + if { [istarget aarch64*-*-*] } { + return [check_no_compiler_messages aarch64_large object { + #ifdef __AARCH64_CMODEL_LARGE__ + int dummy; + #else + #error target not AArch64 large code model + #endif + }] + } else { + return 0 + } +} -- 1.7.5.2