This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Convert more passes to new dump framework


On Tue, Sep 3, 2013 at 9:39 PM, Teresa Johnson <tejohnson@google.com> wrote:
> On Fri, Aug 30, 2013 at 11:28 PM, Sharad Singhai <singhai@google.com> wrote:
>>> Found the issue. The stream was incorrectly being closed when it was
>>> stderr/stdout. So only the dump output before the first dump_finish
>>> call was being emitted to stderr. I fixed this the same way the
>>> alt_dump_file was being handled just below - don't close if it is
>>> stderr/stdout. Confirmed that this fixes the problem.
>>>
>>> (So the real ratio between the volume of -fdump-...=stderr and
>>> -fopt-info is much higher than what I reported in an earlier email)
>>>
>>> Is the following patch ok, pending regression tests?
>>>
>>> 2013-08-30  Teresa Johnson  <tejohnson@google.com>
>>>
>>>         * dumpfile.c (dump_finish): Don't close stderr/stdout.
>>>
>>> Index: dumpfile.c
>>> ===================================================================
>>> --- dumpfile.c  (revision 202059)
>>> +++ dumpfile.c  (working copy)
>>> @@ -450,7 +450,8 @@ dump_finish (int phase)
>>>    if (phase < 0)
>>>      return;
>>>    dfi = get_dump_file_info (phase);
>>> -  if (dfi->pstream)
>>> +  if (dfi->pstream && strcmp("stderr", dfi->pfilename) != 0
>>> +      && strcmp("stdout", dfi->pfilename) != 0)
>>>      fclose (dfi->pstream);
>>>
>>>    if (dfi->alt_stream && strcmp("stderr", dfi->alt_filename) != 0
>>
>> Yes, this is clearly a bug which I missed. Thanks for fixing it. Is it
>> feasible to add a test case for it?
>>
>> Thanks,
>> Sharad
>
>
> Good idea. I modified an existing test to dump to stderr instead of a
> dump file. Since it has 2 functions with messages from each, I
> confirmed that it exposed the bug.
>
> Here is the full patch. Bootstrapped and tested on
> x86_64-unknown-linux-gnu. Ok for trunk?

Ok.

Thanks,
Richard.

> Thanks,
> Teresa
>
> 2013-09-03  Teresa Johnson  <tejohnson@google.com>
>
>         * dumpfile.c (dump_finish): Don't close stderr/stdout.
>
>         * testsuite/gcc.dg/unroll_1.c: Test dumping to stderr.
>
> Index: dumpfile.c
> ===================================================================
> --- dumpfile.c  (revision 202121)
> +++ dumpfile.c  (working copy)
> @@ -450,7 +450,9 @@ dump_finish (int phase)
>    if (phase < 0)
>      return;
>    dfi = get_dump_file_info (phase);
> -  if (dfi->pstream)
> +  if (dfi->pstream && (!dfi->pfilename
> +                       || (strcmp("stderr", dfi->pfilename) != 0
> +                           && strcmp("stdout", dfi->pfilename) != 0)))
>      fclose (dfi->pstream);
>
>    if (dfi->alt_stream && strcmp("stderr", dfi->alt_filename) != 0
> Index: testsuite/gcc.dg/unroll_1.c
> ===================================================================
> --- testsuite/gcc.dg/unroll_1.c (revision 202121)
> +++ testsuite/gcc.dg/unroll_1.c (working copy)
> @@ -1,5 +1,5 @@
>  /* { dg-do compile } */
> -/* { dg-options "-O2 -fdump-rtl-loop2_unroll -fno-peel-loops
> -fdisable-tree-cunroll -fdisable-tree-cunrolli
> -fenable-rtl-loop2_unroll" } */
> +/* { dg-options "-O2 -fdump-rtl-loop2_unroll=stderr -fno-peel-loops
> -fdisable-tree-cunroll -fdisable-tree-cunrolli
> -fenable-rtl-loop2_unroll" } */
>
>  unsigned a[100], b[100];
>  inline void bar()
> @@ -11,7 +11,7 @@ int foo(void)
>  {
>    int i;
>    bar();
> -  for (i = 0; i < 2; i++)
> +  for (i = 0; i < 2; i++) /* { dg-message "note: loop turned into
> non-loop; it never loops" } */
>    {
>       a[i]= b[i] + 1;
>    }
> @@ -21,12 +21,10 @@ int foo(void)
>  int foo2(void)
>  {
>    int i;
> -  for (i = 0; i < 2; i++)
> +  for (i = 0; i < 2; i++) /* { dg-message "note: loop turned into
> non-loop; it never loops" } */
>    {
>       a[i]= b[i] + 1;
>    }
>    return 1;
>  }
> -
> -/* { dg-final { scan-rtl-dump-times "loop turned into non-loop; it
> never loops" 2 "loop2_unroll" } } */
> -/* { dg-final { cleanup-rtl-dump "loop2_unroll" } } */
> +/* { dg-prune-output ".*" } */
>
>
> --
> Teresa Johnson | Software Engineer | tejohnson@google.com | 408-460-2413


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]