public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Jeff Law <law@redhat.com>
To: Bernd Schmidt <bschmidt@redhat.com>,
	Mikhail Maltsev <maltsevm@gmail.com>,
	       gcc-patches mailing list <gcc-patches@gcc.gnu.org>,
	       Richard Biener <richard.guenther@gmail.com>
Subject: Re: [PATCH 2/9] ENABLE_CHECKING refactoring: libcpp
Date: Mon, 12 Oct 2015 20:57:00 -0000	[thread overview]
Message-ID: <561C1EB6.6010300@redhat.com> (raw)
In-Reply-To: <5613C145.70602@redhat.com>

On 10/06/2015 06:40 AM, Bernd Schmidt wrote:
> I'm not entirely sure what to make of this series. There seem to be good
> bits in there but also some things I find questionable. I'll add some
> comments on things that occur to me.
Maybe we should start pulling out the bits that we think are ready & 
good and start installing them independently.

I'm less concerned about getting conditional compilation out of the lib* 
directories right now than I am the core of the compiler.  So I wouldn't 
lose any sleep if we extracted the obviously good bits for libcpp tested 
& installed those, then table the rest of the libcpp stuff and focused 
on the core compiler.

Thoughts?


>
> On 10/06/2015 01:28 AM, Mikhail Maltsev wrote:
>>
>>     * include/line-map.h: Fix use of ENABLE_CHECKING.
>
> Fix how? What's wrong with it?
>
>>   /* Sanity-checks are dependent on command-line options, so it is
>>      called as a subroutine of cpp_read_main_file ().  */
>> -#if ENABLE_CHECKING
>> +#if CHECKING_P
>>   static void sanity_checks (cpp_reader *);
>>   static void sanity_checks (cpp_reader *pfile)
>>   {
>
> Ok, this one seems to be a real problem (should have been #ifdef), but...
Agreed.

>
>> -#ifdef ENABLE_CHECKING
>> +#if CHECKING_P
>
> I fail to see the point of this change.
I'm guessing (and Mikhail, please correct me if I'm wrong), but I think 
he's trying to get away from ENABLE_CHECKING and instead use a macro 
which is always defined to a value.


>
>> -#ifdef ENABLE_CHECKING
>> -      if (kind == MACRO_ARG_TOKEN_STRINGIFIED
>> -      || !track_macro_exp_p)
>> -    /* We can't set the location of a stringified argument
>> -       token and we can't set any location if we aren't tracking
>> -       macro expansion locations.   */
>> -    abort ();
>> -#endif
>> +      /* We can't set the location of a stringified argument
>> +     token and we can't set any location if we aren't tracking
>> +     macro expansion locations.   */
>> +      gcc_checking_assert (kind != MACRO_ARG_TOKEN_STRINGIFIED
>> +               && track_macro_exp_p);
>
> This kind of change seems good. I think the patch series would benefit
> if it was separated thematically rather than by sets of files. I.e.,
> merge all changes like this one into one patch or maybe a few if it
> grows too large.
That would work for me.  I just asked Mikhail to try and break down the 
monster patch into something that could be digested.  Ultimately my goal 
was to make it possible to start reviewing and installing these bits and 
keep making progress on removing the conditionally compiled code.

>
>> +/* Redefine abort to report an internal error w/o coredump, and
>> +   reporting the location of the error in the source file.  */
>> +extern void fancy_abort (const char *, int, const char *)
>> ATTRIBUTE_NORETURN;
>> +#define abort() fancy_abort (__FILE__, __LINE__, __FUNCTION__)
>> +
>> +/* Use gcc_assert(EXPR) to test invariants.  */
>> +#if ENABLE_ASSERT_CHECKING
>> +#define gcc_assert(EXPR)                         \
>> +   ((void)(!(EXPR) ? fancy_abort (__FILE__, __LINE__, __FUNCTION__),
>> 0 : 0))
>> +#elif (GCC_VERSION >= 4005)
>> +#define gcc_assert(EXPR)                         \
>> +  ((void)(__builtin_expect (!(EXPR), 0) ? __builtin_unreachable (), 0
>> : 0))
>> +#else
>> +/* Include EXPR, so that unused variable warnings do not occur.  */
>> +#define gcc_assert(EXPR) ((void)(0 && (EXPR)))
>> +#endif
>
> Probably a good thing, but it looks like libcpp has grown its own
> variant linemap_assert; we should check whether that can be replaced.
>
> Also, the previous patch already introduces a use of gcc_assert, or at
> least a reference to it, and it's only defined here. The two
> modifications of libcpp/system.h should probably be merged into one.
Agreed.

jeff

  reply	other threads:[~2015-10-12 20:57 UTC|newest]

Thread overview: 77+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-05 23:27 [PATCH 1/9] ENABLE_CHECKING refactoring Mikhail Maltsev
2015-10-05 23:29 ` [PATCH 2/9] ENABLE_CHECKING refactoring: libcpp Mikhail Maltsev
2015-10-06 12:40   ` Bernd Schmidt
2015-10-12 20:57     ` Jeff Law [this message]
2015-10-19  1:18       ` Mikhail Maltsev
2015-10-21 22:29         ` Jeff Law
2015-10-21 21:19     ` Jeff Law
2015-10-05 23:30 ` [PATCH 3/9] ENABLE_CHECKING refactoring: Java and Ada Mikhail Maltsev
2015-10-22 19:25   ` Jeff Law
2015-10-05 23:31 ` [PATCH 4/9] ENABLE_CHECKING refactoring: Fortran Mikhail Maltsev
2015-10-23 22:38   ` Jeff Law
2015-10-05 23:32 ` [PATCH 5/9] ENABLE_CHECKING refactoring: pool allocators Mikhail Maltsev
2015-10-06 12:41   ` Bernd Schmidt
2015-10-06 12:45     ` Richard Biener
2015-10-19  0:47       ` Mikhail Maltsev
2015-10-21 11:02         ` Richard Biener
2015-10-26  2:07           ` Mikhail Maltsev
2015-10-26  9:48             ` Richard Biener
2015-10-26 10:57               ` Mikhail Maltsev
2015-10-05 23:34 ` [PATCH 6/9] ENABLE_CHECKING refactoring: generators Mikhail Maltsev
2015-10-06 12:57   ` Richard Biener
2015-10-19  0:09     ` Mikhail Maltsev
2015-10-21 10:57       ` Richard Biener
2015-10-28 16:32         ` Jeff Law
2015-10-29 16:31       ` Jeff Law
2015-10-05 23:39 ` [PATCH 7/9] ENABLE_CHECKING refactoring: middle-end, LTO FE Mikhail Maltsev
2015-10-06 12:46   ` Bernd Schmidt
2015-10-06 12:59     ` Richard Biener
2015-10-06 12:59     ` Richard Biener
2015-10-19  0:56       ` Mikhail Maltsev
2015-10-19 12:19         ` Bernd Schmidt
2015-10-26 17:04           ` Jeff Law
2015-10-26 17:15             ` Bernd Schmidt
2015-10-26 19:05               ` Jeff Law
2015-10-28  1:17                 ` Jeff Law
2015-10-28  2:12                   ` Trevor Saunders
2015-10-05 23:40 ` [PATCH 8/9] ENABLE_CHECKING refactoring: target-specific parts Mikhail Maltsev
2015-10-06 12:48   ` Bernd Schmidt
2015-10-29 19:43     ` Jeff Law
2015-10-29 21:23   ` Jeff Law
2015-10-30  4:13   ` Jeff Law
2015-10-30  4:20     ` Jeff Law
2015-10-06 12:53 ` [PATCH 1/9] ENABLE_CHECKING refactoring Richard Biener
2015-10-12 20:48 ` Jeff Law
2015-10-13 21:33 ` Jeff Law
2015-10-18  8:25   ` Mikhail Maltsev
2015-10-19 11:14     ` Bernd Schmidt
2015-10-19 13:54       ` Mikhail Maltsev
2015-10-21 15:59         ` Jeff Law
2015-10-21 16:06           ` Bernd Schmidt
2015-10-21 16:18             ` Richard Biener
2015-10-21 16:28               ` Jeff Law
2015-11-07 22:42                 ` Gerald Pfeifer
2015-10-21 16:19             ` Jeff Law
2015-10-21 16:22               ` Bernd Schmidt
2015-10-21 16:44                 ` Jakub Jelinek
2015-10-22  7:58                   ` Richard Biener
2015-10-21 20:06                 ` Jeff Law
2015-10-20 16:14     ` Jeff Law
2015-10-21 21:17     ` Jeff Law
2015-11-01 14:58 ` [PATCH 9/9] ENABLE_CHECKING refactoring: C family front ends Mikhail Maltsev
2015-11-02 23:34   ` Jeff Law
2015-11-04 14:41     ` Mikhail Maltsev
2015-11-01 20:19 ` [PATCH 10/9] ENABLE_CHECKING refactoring: remove remaining occurrences Mikhail Maltsev
2015-11-02 23:35   ` Jeff Law
2015-11-04 15:03     ` Mikhail Maltsev
2016-02-23 15:21       ` Richard Biener
2016-02-24 14:17         ` Martin Liška
2016-02-24 14:27           ` Michael Matz
2016-02-24 14:53             ` Martin Liška
2016-02-24 15:43               ` Pierre-Marie de Rodat
2016-02-25  9:24                 ` Richard Biener
2016-02-25 10:14                   ` Pierre-Marie de Rodat
2016-02-25 10:15                     ` Martin Liška
2016-02-25 10:16                       ` Pierre-Marie de Rodat
2016-02-25  9:24           ` Richard Biener
     [not found]   ` <C5BB0125-FB5F-46C6-B16D-74C3D0F07C10@gmail.com>
2015-11-08 15:37     ` Mikhail Maltsev

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=561C1EB6.6010300@redhat.com \
    --to=law@redhat.com \
    --cc=bschmidt@redhat.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=maltsevm@gmail.com \
    --cc=richard.guenther@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).