From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 121196 invoked by alias); 7 Jun 2016 20:22:26 -0000 Mailing-List: contact jit-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Post: List-Help: List-Subscribe: Sender: jit-owner@gcc.gnu.org Received: (qmail 120660 invoked by uid 89); 7 Jun 2016 20:22:26 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Checked: by ClamAV 0.99.1 on sourceware.org X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 spammy=pinskia@gmail.com, pinskiagmailcom, france, les X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on sourceware.org X-Spam-Level: X-Spam-User: qpsmtpd, 2 recipients X-HELO: mail-lf0-f44.google.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=D+OUQiuriARl/kwy3UKUJ0wiPPmFS2GbWbdz2zMkV2A=; b=g5nQbtg+Lb4e2nhhklMLwPSvbUVbF4eXT2rUMQjGVdZh+HhrLSwiMg03vdmgpfqOp/ 6UrYiSFkWaWsqYRQCot+zVmWgxUCijyK9bU6czvKMg0xXLJKlLnjFBuNv5DaQrlRuTVf zcUayz9+Wi0zueF+p/KVMEZGTuJhedRRG+vGcnK4qQP8VCiEEmjzJXFlXZ0LECyvhrP9 sDAt1LFlx4f9zhW0zP5GgMh6maQ42312dDcRC3vtqIH4fdO9sk8YlfISMNOogsmBxqsg RdGOypUkDCbhoFysTHNSiIIFI4LO94KNJ4SBk7JIzkNqGRWATxQi7BrBLMYSLkwzXbOt /lnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=D+OUQiuriARl/kwy3UKUJ0wiPPmFS2GbWbdz2zMkV2A=; b=I6ehOcV9WqOxKi+wKxdty0Ayh694AypvHCKtqkgX6Lxm6xvHCePM/q+YNRf+soPL3+ HoNkEkaO7AYuHZwMtSEONC0d688ZvHFBwRxDbMRLJvAV3yIQYMXX659QC0FXfcv051Qj hstdx8qgFOi9GYWsvhdvW+VNoazHAlGDutDgb+1CHhP0coJIAKZ/GFo24rX8cC0hDtoE yGxlJH60r+vtxsU9ipWVG4W+gYzgglF4LICm/bS79qaW58w5t/xaZjWIEDDGPq5b5Ylk m4H4Xgx6ZPHPvLSz9xKjQyzQzAtoViAMDu310m3+ihn3ZepegWrAWIKfjWOQORYI1jJP NGsQ== X-Gm-Message-State: ALyK8tIy+IjzZmSRJXnaw8LvoW6B384vVDpuBK07ODRRSoyXl2nBJunfZ7e5iyvMHHfNH76lm7pDOp65nyp4KQ== X-Received: by 10.25.24.163 with SMTP id 35mr1574283lfy.103.1465330932649; Tue, 07 Jun 2016 13:22:12 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: References: <5742F6FB.4060806@starynkevitch.net> From: Andrew Pinski Date: Fri, 01 Jan 2016 00:00:00 -0000 Message-ID: Subject: Re: JIT patch: add gcc_jit_magic_int To: Basile Starynkevitch Cc: GCC Patches , jit@gcc.gnu.org, David Malcolm Content-Type: text/plain; charset=UTF-8 X-SW-Source: 2016-q2/txt/msg00057.txt.bz2 On Tue, Jun 7, 2016 at 12:22 PM, Andrew Pinski wrote: > On Tue, Jun 7, 2016 at 12:19 PM, Andrew Pinski wrote: >> On Mon, May 23, 2016 at 5:26 AM, Basile Starynkevitch >> wrote: >>> Hello All, >>> >>> As I explained in https://gcc.gnu.org/ml/jit/2016-q2/msg00042.html it is >>> difficult (or tricky without using dirty tricks involving the GCC plugin >>> headers) to use GCCJIT to emit code equivalent to the following C file: >>> >>> extern int a; >>> int get_atomic_a (void) { >>> return __atomic_load_n (&a, __ATOMIC_SEQ_CST); >>> } >>> >>> The issue is that __ATOMIC_SEQ_CST is a magic preprocessor (but >>> non-standard!) symbol which might not be available >>> (or might have a different value) in the C code for GCCJIT building such an >>> AST. >> >>> >>> So we need a function to retrieve some magic integral value from the GCCJIT >>> compiler. >> >> Huh? Why can't you just use the enum: >> enum memmodel >> { >> MEMMODEL_RELAXED = 0, >> MEMMODEL_CONSUME = 1, >> MEMMODEL_ACQUIRE = 2, >> MEMMODEL_RELEASE = 3, >> MEMMODEL_ACQ_REL = 4, >> MEMMODEL_SEQ_CST = 5, >> MEMMODEL_LAST = 6, >> MEMMODEL_SYNC_ACQUIRE = MEMMODEL_ACQUIRE | MEMMODEL_SYNC, >> MEMMODEL_SYNC_RELEASE = MEMMODEL_RELEASE | MEMMODEL_SYNC, >> MEMMODEL_SYNC_SEQ_CST = MEMMODEL_SEQ_CST | MEMMODEL_SYNC >> }; >> >> >> For the values? I don't understand why you need to have a direct >> relationship to preprocessed macros to these values here. >> Have your own lookup table inside your own JIT rather than a generic >> way of doing it. >> Having a generic way seems more incorrect way of doing it and even >> says that the JIT is supposed to JITting C code but it is not JITing C >> code. > > > That is move enum memmodel to be included in the JIT API too. Or rather have an API which the __atomic_* for you and all you need to supply is the the "JIT" memory model and the locations. Thanks, Andrew > >> >> Thanks, >> Andrew Pinski >> >>> >>> The attached patch (relative to trunk svn 236583) is a first attempt to >>> solve that issue >>> (and also give ability to query some other magic numbers). >>> >>> Proposed ChangeLog entry (in gcc/jit/) >>> >>> 2016-05-23 Basile Starynkevitch >>> * libgccjit.h (LIBGCCJIT_HAVE_gcc_jit_magic_int): New macro. >>> (gcc_jit_magic_int): New public function declaration. >>> >>> * libgccjit.c: Include "cppbuiltin.h", "options.h", "flag-types.h" >>> (gcc_jit_magic_int): New function. >>> >>> * libgccjit.map: Add gcc_jit_magic_int to LIBGCCJIT_ABI_6. >>> >>> Comments (or an ok to commit) are welcome. (I am not sure that >>> __SANITIZE_ADDRESS__ is correctly handled, >>> because I would believe that optimization flags are not globals in GCCJIT) >>> >>> Regards. >>> >>> -- >>> Basile STARYNKEVITCH http://starynkevitch.net/Basile/ >>> email: basilestarynkevitchnet mobile: +33 6 8501 2359 >>> 8, rue de la Faiencerie, 92340 Bourg La Reine, France >>> *** opinions {are only mine, sont seulement les miennes} *** >>>