[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gcc
Subject:    Re: Handle macros like TARGET_OS_CPP_BUILTINS for non C-family frontends
From:       "Joseph S. Myers" <joseph () codesourcery ! com>
Date:       2010-09-26 14:37:39
Message-ID: Pine.LNX.4.64.1009261427220.1101 () digraph ! polyomino ! org ! uk
[Download RAW message or body]

On Sun, 26 Sep 2010, FX wrote:

> How can we fix this? The only way I see would be to have two macros 
> instead of TARGET_OS_CPP_BUILTINS: one that will be used for 
> source-preprocessing in all languages (maybe keeping the name 
> TARGET_OS_CPP_BUILTINS), and one that will be used only for C-family 
> languages (TARGET_OS_CPP_BUILTINS_CFAMILY). It seems like a bit of work, 
> to get everything in the right place. However, I don't really see an 
> alternative solution, which is why I'm writing here: would there be any 
> easier solution? Or one that makes more sense to you?

If you're redesigning these macros, you ought to be designing things to 
use hooks instead anyway, though these macros probably aren't that easy to 
replace by hooks.

You could I suppose define the hooks to take a structure of callbacks that 
they use in place of directly calling builtin_define or testing 
flag_isoc99 - or if you set up s separate hooks structure that is at least 
only used in front ends that link with libcpp, then you might reduce the 
number of callbacks needed.  Or you could fully split things up as you 
suggest - put C-family-only hooks in targetcm, and libcpp-using hooks in a 
new structure.  Splitting things up is probably cleaner than having a lot 
of callbacks.

Whatever you do, you probably want to arrange for the code that is common 
between c-family/c-cppbuiltin.c and fortran/cpp.c (defining various 
language-independent macros) to be genuinely shared between front ends 
using libcpp, instead of duplicated.

-- 
Joseph S. Myers
joseph@codesourcery.com
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic