public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug other/60336] New: va_start corrupts 6-th argument in case of empty type used before the format string
@ 2014-02-25  9:36 ahanins at gmail dot com
  2014-02-25 19:53 ` [Bug other/60336] " mikpelinux at gmail dot com
                   ` (20 more replies)
  0 siblings, 21 replies; 22+ messages in thread
From: ahanins at gmail dot com @ 2014-02-25  9:36 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336

            Bug ID: 60336
           Summary: va_start corrupts 6-th argument in case of empty type
                    used before the format string
           Product: gcc
           Version: 4.8.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: other
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ahanins at gmail dot com

Created attachment 32208
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=32208&action=edit
va_list corruption simple example

The code in attachment (for convenience see here
http://coliru.stacked-crooked.com/a/14319753d1667629) prints garbage instead of
6-th argument if Dummy struct is empty. Adding some member to this struct
"fixes" the problem. Not sure, whether problem is in Gcc code generation or
libc, but probably related to ABI.

Tested on Ubuntu 13.04 64bit.


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug other/60336] va_start corrupts 6-th argument in case of empty type used before the format string
  2014-02-25  9:36 [Bug other/60336] New: va_start corrupts 6-th argument in case of empty type used before the format string ahanins at gmail dot com
@ 2014-02-25 19:53 ` mikpelinux at gmail dot com
  2014-02-25 21:41 ` [Bug c++/60336] " hjl.tools at gmail dot com
                   ` (19 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: mikpelinux at gmail dot com @ 2014-02-25 19:53 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336

Mikael Pettersson <mikpelinux at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |mikpelinux at gmail dot com

--- Comment #1 from Mikael Pettersson <mikpelinux at gmail dot com> ---
Created attachment 32212
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=32212&action=edit
pre-processed test case, valid C and C++

The following is a pre-processed and simplified test case, tweaked to compile
as both C and C++.  As C it succeeds, as C++ it fails.  Tested with gcc/g++
4.8.2 on x86_64-linux.


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug c++/60336] va_start corrupts 6-th argument in case of empty type used before the format string
  2014-02-25  9:36 [Bug other/60336] New: va_start corrupts 6-th argument in case of empty type used before the format string ahanins at gmail dot com
  2014-02-25 19:53 ` [Bug other/60336] " mikpelinux at gmail dot com
@ 2014-02-25 21:41 ` hjl.tools at gmail dot com
  2014-02-25 22:35 ` [Bug target/60336] " pinskia at gcc dot gnu.org
                   ` (18 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: hjl.tools at gmail dot com @ 2014-02-25 21:41 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336

H.J. Lu <hjl.tools at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2014-02-25
          Component|other                       |c++
     Ever confirmed|0                           |1

--- Comment #2 from H.J. Lu <hjl.tools at gmail dot com> ---
Should g++ put pass the empty struct on stack?


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug target/60336] va_start corrupts 6-th argument in case of empty type used before the format string
  2014-02-25  9:36 [Bug other/60336] New: va_start corrupts 6-th argument in case of empty type used before the format string ahanins at gmail dot com
  2014-02-25 19:53 ` [Bug other/60336] " mikpelinux at gmail dot com
  2014-02-25 21:41 ` [Bug c++/60336] " hjl.tools at gmail dot com
@ 2014-02-25 22:35 ` pinskia at gcc dot gnu.org
  2014-02-26 17:03 ` [Bug target/60336] empty struct value is passed differently in C and C++ hjl.tools at gmail dot com
                   ` (17 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: pinskia at gcc dot gnu.org @ 2014-02-25 22:35 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|c++                         |target

--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to H.J. Lu from comment #2)
> Should g++ put pass the empty struct on stack?

It is a target bug if it is passing on the stack.  Note in C++, the size of the
struct is 1 while in C, the size is 0.


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug target/60336] empty struct value is passed differently in C and C++
  2014-02-25  9:36 [Bug other/60336] New: va_start corrupts 6-th argument in case of empty type used before the format string ahanins at gmail dot com
                   ` (2 preceding siblings ...)
  2014-02-25 22:35 ` [Bug target/60336] " pinskia at gcc dot gnu.org
@ 2014-02-26 17:03 ` hjl.tools at gmail dot com
  2014-02-26 18:09 ` ubizjak at gmail dot com
                   ` (16 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: hjl.tools at gmail dot com @ 2014-02-26 17:03 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336

H.J. Lu <hjl.tools at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|va_start corrupts 6-th      |empty struct value is
                   |argument in case of empty   |passed differently in C and
                   |type used before the format |C++
                   |string                      |

--- Comment #4 from H.J. Lu <hjl.tools at gmail dot com> ---
(In reply to Andrew Pinski from comment #3)
> (In reply to H.J. Lu from comment #2)
> > Should g++ put pass the empty struct on stack?
> 
> It is a target bug if it is passing on the stack.  Note in C++, the size of
> the struct is 1 while in C, the size is 0.

Can someone try this on non-x86 targets?

[hjl@gnu-6 pr60336]$ cat x.ii 
struct dummy { };
struct foo
{
  int i1;
  int i2;
  int i3;
  int i4;
  int i5;
};

extern "C" void fun(struct dummy, struct foo);

int main()
{
  struct dummy d;
  struct foo f = { -1, -2, -3, -4, -5 };

  fun(d, f);
  return 0;
}
[hjl@gnu-6 pr60336]$ cat fun.i 
struct dummy { };
struct foo
{
  int i1;
  int i2;
  int i3;
  int i4;
  int i5;
};

void fun(struct dummy d, struct foo f)
{
  if (f.i1 != -1)
    __builtin_abort();
}
[hjl@gnu-6 pr60336]$ gcc -c fun.i 
[hjl@gnu-6 pr60336]$ gcc -c x.ii
[hjl@gnu-6 pr60336]$ g++ fun.o x.o
[hjl@gnu-6 pr60336]$ ./a.out 
Aborted
[hjl@gnu-6 pr60336]$ 

Is this test valid? BTW, clang works fine on x86.


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug target/60336] empty struct value is passed differently in C and C++
  2014-02-25  9:36 [Bug other/60336] New: va_start corrupts 6-th argument in case of empty type used before the format string ahanins at gmail dot com
                   ` (3 preceding siblings ...)
  2014-02-26 17:03 ` [Bug target/60336] empty struct value is passed differently in C and C++ hjl.tools at gmail dot com
@ 2014-02-26 18:09 ` ubizjak at gmail dot com
  2014-02-26 19:06 ` hjl.tools at gmail dot com
                   ` (15 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: ubizjak at gmail dot com @ 2014-02-26 18:09 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336

--- Comment #5 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to Andrew Pinski from comment #3)

> It is a target bug if it is passing on the stack.  Note in C++, the size of
> the struct is 1 while in C, the size is 0.

Changing the testcase a bit:

  fun(d, 2, 3, 4, 5, 6, 7, 8);

cc1plus -O2 -maccumulate-outgoing-args:

        xorl    %eax, %eax
        movl    $7, %r9d
        movl    $8, 8(%rsp)
        movb    $0, (%rsp)  <--- this shouldn't be there.
        movl    $6, %r8d
        movl    $5, %ecx
        movl    $4, %edx
        movl    $3, %esi
        movl    $2, %edi
        call    _Z3fun5dummyiz

clang -O2:

        movl    $8, (%rsp)
        movl    $3, %esi
        movl    $4, %edx
        movl    $5, %ecx
        movl    $6, %r8d
        movl    $7, %r9d
        xorl    %eax, %eax
        callq   _Z3fun5dummyiz
>From gcc-bugs-return-444868-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Wed Feb 26 18:18:15 2014
Return-Path: <gcc-bugs-return-444868-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 16722 invoked by alias); 26 Feb 2014 18:18:14 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 16588 invoked by uid 48); 26 Feb 2014 18:18:04 -0000
From: "ubizjak at gmail dot com" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug target/60336] empty struct value is passed differently in C and C++
Date: Wed, 26 Feb 2014 18:18:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: target
X-Bugzilla-Version: 4.8.1
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: ubizjak at gmail dot com
X-Bugzilla-Status: NEW
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org
X-Bugzilla-Target-Milestone: ---
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields:
Message-ID: <bug-60336-4-3jQmlR8IQ7@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-60336-4@http.gcc.gnu.org/bugzilla/>
References: <bug-60336-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2014-02/txt/msg02625.txt.bz2
Content-length: 290

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336

--- Comment #6 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to H.J. Lu from comment #4)

> Can someone try this on non-x86 targets?

I get abort on alpha:

$ gcc -c fun.i
$ gcc -c x.ii
$ g++ fun.o x.o
$ ./a.out
Aborted
>From gcc-bugs-return-444869-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Wed Feb 26 18:23:31 2014
Return-Path: <gcc-bugs-return-444869-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 19602 invoked by alias); 26 Feb 2014 18:23:31 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 19547 invoked by uid 48); 26 Feb 2014 18:23:27 -0000
From: "pinskia at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug target/60336] empty struct value is passed differently in C and C++
Date: Wed, 26 Feb 2014 18:23:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: target
X-Bugzilla-Version: 4.8.1
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: pinskia at gcc dot gnu.org
X-Bugzilla-Status: NEW
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org
X-Bugzilla-Target-Milestone: ---
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields:
Message-ID: <bug-60336-4-iUUCuBnNmo@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-60336-4@http.gcc.gnu.org/bugzilla/>
References: <bug-60336-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2014-02/txt/msg02626.txt.bz2
Content-length: 376

http://gcc.gnu.org/bugzilla/show_bug.cgi?id`336

--- Comment #7 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to H.J. Lu from comment #4)
> Is this test valid? BTW, clang works fine on x86.

No this testcase is not valid at all.  See
http://gcc.gnu.org/onlinedocs/gcc-4.8.2/gcc/Empty-Structures.html#Empty-Structures
where it is documented it is not valid.


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug target/60336] empty struct value is passed differently in C and C++
  2014-02-25  9:36 [Bug other/60336] New: va_start corrupts 6-th argument in case of empty type used before the format string ahanins at gmail dot com
                   ` (4 preceding siblings ...)
  2014-02-26 18:09 ` ubizjak at gmail dot com
@ 2014-02-26 19:06 ` hjl.tools at gmail dot com
  2014-02-26 19:25 ` vagran.ast at gmail dot com
                   ` (14 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: hjl.tools at gmail dot com @ 2014-02-26 19:06 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336

--- Comment #8 from H.J. Lu <hjl.tools at gmail dot com> ---
This works:

diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 00773d8..16669b9 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -7193,6 +7193,7 @@ function_arg_advance_64 (CUMULATIVE_ARGS *cum, enum
machine_mode mode,
     return;

   if (examine_argument (mode, type, 0, &int_nregs, &sse_nregs)
+      && (sse_nregs || int_nregs)
       && sse_nregs <= cum->sse_nregs && int_nregs <= cum->nregs)
     {
       cum->nregs -= int_nregs;


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug target/60336] empty struct value is passed differently in C and C++
  2014-02-25  9:36 [Bug other/60336] New: va_start corrupts 6-th argument in case of empty type used before the format string ahanins at gmail dot com
                   ` (5 preceding siblings ...)
  2014-02-26 19:06 ` hjl.tools at gmail dot com
@ 2014-02-26 19:25 ` vagran.ast at gmail dot com
  2014-02-26 19:31 ` pinskia at gcc dot gnu.org
                   ` (13 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: vagran.ast at gmail dot com @ 2014-02-26 19:25 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336

--- Comment #9 from vagran <vagran.ast at gmail dot com> ---
(In reply to Andrew Pinski from comment #7)
> (In reply to H.J. Lu from comment #4)
> > Is this test valid? BTW, clang works fine on x86.
> 
> No this testcase is not valid at all.  See
> http://gcc.gnu.org/onlinedocs/gcc-4.8.2/gcc/Empty-Structures.html#Empty-
> Structures where it is documented it is not valid.

How it proves that the test case is invalid? Independently on what size has
empty structure the called function absolutely legally can expect it receives
the values which were passed by the caller. A compiler should care it works for
both C and C++. Am I wrong?

Also as I remember in C++ size of empty structure is sizeof(char) except the
case some class is derived from the empty structure. In this case it adds no
overhead to the size of the derived class itself (thus virtually has zero size
in this case).


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug target/60336] empty struct value is passed differently in C and C++
  2014-02-25  9:36 [Bug other/60336] New: va_start corrupts 6-th argument in case of empty type used before the format string ahanins at gmail dot com
                   ` (6 preceding siblings ...)
  2014-02-26 19:25 ` vagran.ast at gmail dot com
@ 2014-02-26 19:31 ` pinskia at gcc dot gnu.org
  2014-02-26 19:32 ` hjl.tools at gmail dot com
                   ` (12 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: pinskia at gcc dot gnu.org @ 2014-02-26 19:31 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336

--- Comment #10 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to vagran from comment #9)
> (In reply to Andrew Pinski from comment #7)
> > (In reply to H.J. Lu from comment #4)
> > > Is this test valid? BTW, clang works fine on x86.
> > 
> > No this testcase is not valid at all.  See
> > http://gcc.gnu.org/onlinedocs/gcc-4.8.2/gcc/Empty-Structures.html#Empty-
> > Structures where it is documented it is not valid.
> 
> How it proves that the test case is invalid?

I am not saying the original testcase (variable argument case) is invalid, just
the testcase where you are passing an empty struct between C and C++ one is
invalid.


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug target/60336] empty struct value is passed differently in C and C++
  2014-02-25  9:36 [Bug other/60336] New: va_start corrupts 6-th argument in case of empty type used before the format string ahanins at gmail dot com
                   ` (7 preceding siblings ...)
  2014-02-26 19:31 ` pinskia at gcc dot gnu.org
@ 2014-02-26 19:32 ` hjl.tools at gmail dot com
  2014-02-26 19:51 ` glisse at gcc dot gnu.org
                   ` (11 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: hjl.tools at gmail dot com @ 2014-02-26 19:32 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336

--- Comment #11 from H.J. Lu <hjl.tools at gmail dot com> ---
This patch may be better:

diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 00773d8..426146a 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -6842,7 +6842,7 @@ examine_argument (enum machine_mode mode, const_tree
type, int in_return,
       case X86_64_MEMORY_CLASS:
   gcc_unreachable ();
       }
-  return 1;
+  return *int_nregs || *sse_nregs;
 }

 /* Construct container for the argument used by GCC interface.  See


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug target/60336] empty struct value is passed differently in C and C++
  2014-02-25  9:36 [Bug other/60336] New: va_start corrupts 6-th argument in case of empty type used before the format string ahanins at gmail dot com
                   ` (8 preceding siblings ...)
  2014-02-26 19:32 ` hjl.tools at gmail dot com
@ 2014-02-26 19:51 ` glisse at gcc dot gnu.org
  2014-02-26 19:55 ` hjl.tools at gmail dot com
                   ` (10 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: glisse at gcc dot gnu.org @ 2014-02-26 19:51 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336

--- Comment #12 from Marc Glisse <glisse at gcc dot gnu.org> ---
It is a bit alarming that gcc, clang and clang++ use one ABI and g++ uses a
different (inferior) one (the incompatibility with clang++ should affect some
standard library functions, though they are often inlined). Also, extern "C" is
a calling convention marker, and it is rather disrespectful of g++ to ignore
it, even if this is only about a non-standard (but documented) extension.


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug target/60336] empty struct value is passed differently in C and C++
  2014-02-25  9:36 [Bug other/60336] New: va_start corrupts 6-th argument in case of empty type used before the format string ahanins at gmail dot com
                   ` (9 preceding siblings ...)
  2014-02-26 19:51 ` glisse at gcc dot gnu.org
@ 2014-02-26 19:55 ` hjl.tools at gmail dot com
  2014-02-27 14:37 ` jason at gcc dot gnu.org
                   ` (9 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: hjl.tools at gmail dot com @ 2014-02-26 19:55 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336

--- Comment #13 from H.J. Lu <hjl.tools at gmail dot com> ---
Passing

struct dummy { };

is still odd for g++.  It is supposed to have a single member of type char,
which should be passed in register, not on stack.


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug target/60336] empty struct value is passed differently in C and C++
  2014-02-25  9:36 [Bug other/60336] New: va_start corrupts 6-th argument in case of empty type used before the format string ahanins at gmail dot com
                   ` (10 preceding siblings ...)
  2014-02-26 19:55 ` hjl.tools at gmail dot com
@ 2014-02-27 14:37 ` jason at gcc dot gnu.org
  2014-02-27 16:04 ` hjl.tools at gmail dot com
                   ` (8 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: jason at gcc dot gnu.org @ 2014-02-27 14:37 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336

--- Comment #15 from Jason Merrill <jason at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #7)
> No this testcase is not valid at all.  See
> http://gcc.gnu.org/onlinedocs/gcc-4.8.2/gcc/Empty-Structures.html#Empty-
> Structures where it is documented it is not valid.

That only documents that sizeof is different for C and C++, the calling
convention should be the same.  And it seems like classify_argument should
already be returning 1 with classes[0]==NO_CLASS for both C and C++.  Why are
we getting different results?


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug target/60336] empty struct value is passed differently in C and C++
  2014-02-25  9:36 [Bug other/60336] New: va_start corrupts 6-th argument in case of empty type used before the format string ahanins at gmail dot com
                   ` (11 preceding siblings ...)
  2014-02-27 14:37 ` jason at gcc dot gnu.org
@ 2014-02-27 16:04 ` hjl.tools at gmail dot com
  2014-02-27 16:17 ` ubizjak at gmail dot com
                   ` (7 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: hjl.tools at gmail dot com @ 2014-02-27 16:04 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336

H.J. Lu <hjl.tools at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |hjl.tools at gmail dot com

--- Comment #16 from H.J. Lu <hjl.tools at gmail dot com> ---
(In reply to Jason Merrill from comment #15)
> (In reply to Andrew Pinski from comment #7)
> > No this testcase is not valid at all.  See
> > http://gcc.gnu.org/onlinedocs/gcc-4.8.2/gcc/Empty-Structures.html#Empty-
> > Structures where it is documented it is not valid.
> 
> That only documents that sizeof is different for C and C++, the calling
> convention should be the same.  And it seems like classify_argument should
> already be returning 1 with classes[0]==NO_CLASS for both C and C++.  Why
> are we getting different results?

X86 backend has some issues.  But the C/C++ calling convention issue
affects most, if not all, targets.  You can try the test case in
comment 4 on non-x86 targets.


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug target/60336] empty struct value is passed differently in C and C++
  2014-02-25  9:36 [Bug other/60336] New: va_start corrupts 6-th argument in case of empty type used before the format string ahanins at gmail dot com
                   ` (12 preceding siblings ...)
  2014-02-27 16:04 ` hjl.tools at gmail dot com
@ 2014-02-27 16:17 ` ubizjak at gmail dot com
  2014-02-27 17:58 ` jason at gcc dot gnu.org
                   ` (6 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: ubizjak at gmail dot com @ 2014-02-27 16:17 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336

--- Comment #17 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to Jason Merrill from comment #15)

> That only documents that sizeof is different for C and C++, the calling
> convention should be the same.  And it seems like classify_argument should
> already be returning 1 with classes[0]==NO_CLASS for both C and C++.  Why
> are we getting different results?

classify_argument has an early exit:

      /* Zero sized arrays or structures are NO_CLASS.  We return 0 to
     signalize memory class, so handle it as special case.  */

      if (!words)
    {
      classes[0] = X86_64_NO_CLASS;
      return 1;
    }

but it doesn't trigger for c++, where words gets calculated as 1.
>From gcc-bugs-return-445001-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Thu Feb 27 16:21:36 2014
Return-Path: <gcc-bugs-return-445001-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 16567 invoked by alias); 27 Feb 2014 16:21:35 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 16487 invoked by uid 55); 27 Feb 2014 16:21:32 -0000
From: "jason at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug c++/60353] [4.9 Regression] Firefox build failure #3 caused by r208157
Date: Thu, 27 Feb 2014 16:21:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: c++
X-Bugzilla-Version: 4.9.0
X-Bugzilla-Keywords: rejects-valid
X-Bugzilla-Severity: normal
X-Bugzilla-Who: jason at gcc dot gnu.org
X-Bugzilla-Status: ASSIGNED
X-Bugzilla-Priority: P1
X-Bugzilla-Assigned-To: jason at gcc dot gnu.org
X-Bugzilla-Target-Milestone: 4.9.0
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields:
Message-ID: <bug-60353-4-m8GE0ngcXE@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-60353-4@http.gcc.gnu.org/bugzilla/>
References: <bug-60353-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2014-02/txt/msg02758.txt.bz2
Content-length: 495

http://gcc.gnu.org/bugzilla/show_bug.cgi?id`353

--- Comment #2 from Jason Merrill <jason at gcc dot gnu.org> ---
Author: jason
Date: Thu Feb 27 16:20:59 2014
New Revision: 208200

URL: http://gcc.gnu.org/viewcvs?rev 8200&root=gcc&view=rev
Log:
    PR c++/60353
    PR c++/55877
    * decl2.c (tentative_decl_linkage): Don't mess with functions that
    are not yet defined.

Added:
    trunk/gcc/testsuite/g++.dg/other/anon6.C
Modified:
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/decl2.c


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug target/60336] empty struct value is passed differently in C and C++
  2014-02-25  9:36 [Bug other/60336] New: va_start corrupts 6-th argument in case of empty type used before the format string ahanins at gmail dot com
                   ` (13 preceding siblings ...)
  2014-02-27 16:17 ` ubizjak at gmail dot com
@ 2014-02-27 17:58 ` jason at gcc dot gnu.org
  2014-02-27 18:41 ` jason at gcc dot gnu.org
                   ` (5 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: jason at gcc dot gnu.org @ 2014-02-27 17:58 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336

--- Comment #18 from Jason Merrill <jason at gcc dot gnu.org> ---
(In reply to Uroš Bizjak from comment #17)
> classify_argument has an early exit:
> 
>       /* Zero sized arrays or structures are NO_CLASS.  We return 0 to
> 	 signalize memory class, so handle it as special case.  */
> 
>       if (!words)
> 	{
> 	  classes[0] = X86_64_NO_CLASS;
> 	  return 1;
> 	}
> 
> but it doesn't trigger for c++, where words gets calculated as 1.

Yes, it looks like this special case is in order to return the same thing that
C++ does through the normal logic: normally we return 'words', and since there
are no fields classes[0] is still initialized to NO_CLASS.
>From gcc-bugs-return-445017-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Thu Feb 27 18:36:33 2014
Return-Path: <gcc-bugs-return-445017-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 26168 invoked by alias); 27 Feb 2014 18:36:32 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 26119 invoked by uid 48); 27 Feb 2014 18:36:29 -0000
From: "nicolas.boulenguez at free dot fr" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug ada/16081] Illegal program not detected, ambiguous call to "="
Date: Thu, 27 Feb 2014 18:36:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: ada
X-Bugzilla-Version: 3.4.0
X-Bugzilla-Keywords: accepts-invalid
X-Bugzilla-Severity: normal
X-Bugzilla-Who: nicolas.boulenguez at free dot fr
X-Bugzilla-Status: NEW
X-Bugzilla-Priority: P2
X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org
X-Bugzilla-Target-Milestone: ---
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields:
Message-ID: <bug-16081-4-Bu52zyybQ5@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-16081-4@http.gcc.gnu.org/bugzilla/>
References: <bug-16081-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2014-02/txt/msg02774.txt.bz2
Content-length: 138

http://gcc.gnu.org/bugzilla/show_bug.cgi?id\x16081

--- Comment #3 from nicolas.boulenguez at free dot fr ---
confirmed with 4.9-20140218


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug target/60336] empty struct value is passed differently in C and C++
  2014-02-25  9:36 [Bug other/60336] New: va_start corrupts 6-th argument in case of empty type used before the format string ahanins at gmail dot com
                   ` (14 preceding siblings ...)
  2014-02-27 17:58 ` jason at gcc dot gnu.org
@ 2014-02-27 18:41 ` jason at gcc dot gnu.org
  2014-02-27 20:53 ` ubizjak at gmail dot com
                   ` (4 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: jason at gcc dot gnu.org @ 2014-02-27 18:41 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336

--- Comment #19 from Jason Merrill <jason at gcc dot gnu.org> ---
Created attachment 32228
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=32228&action=edit
HJ's test in dejagnu form

Here's HJ's testcase in a form that can be dropped into g++.dg/abi.


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug target/60336] empty struct value is passed differently in C and C++
  2014-02-25  9:36 [Bug other/60336] New: va_start corrupts 6-th argument in case of empty type used before the format string ahanins at gmail dot com
                   ` (15 preceding siblings ...)
  2014-02-27 18:41 ` jason at gcc dot gnu.org
@ 2014-02-27 20:53 ` ubizjak at gmail dot com
  2014-02-27 21:21 ` pinskia at gcc dot gnu.org
                   ` (3 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: ubizjak at gmail dot com @ 2014-02-27 20:53 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336

--- Comment #20 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to H.J. Lu from comment #4)

> Can someone try this on non-x86 targets?

gcc110 (ppc64) from the compile farm:

[uros@gcc1-power7 ~]$ gcc -c fun.i
[uros@gcc1-power7 ~]$ gcc -c x.ii
[uros@gcc1-power7 ~]$ g++ fun.o x.o
[uros@gcc1-power7 ~]$ ./a.out
Aborted

I don't think this is a target bug.
>From gcc-bugs-return-445048-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Thu Feb 27 21:03:54 2014
Return-Path: <gcc-bugs-return-445048-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 6044 invoked by alias); 27 Feb 2014 21:03:53 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 6023 invoked by uid 48); 27 Feb 2014 21:03:50 -0000
From: "janus at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug fortran/60357] [F08] structure constructor with unspecified values for allocatable components
Date: Thu, 27 Feb 2014 21:03:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: fortran
X-Bugzilla-Version: 4.9.0
X-Bugzilla-Keywords: rejects-valid
X-Bugzilla-Severity: normal
X-Bugzilla-Who: janus at gcc dot gnu.org
X-Bugzilla-Status: NEW
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org
X-Bugzilla-Target-Milestone: ---
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields: keywords bug_status cf_reconfirmed_on cc short_desc everconfirmed
Message-ID: <bug-60357-4-vcWH4R3tCT@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-60357-4@http.gcc.gnu.org/bugzilla/>
References: <bug-60357-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2014-02/txt/msg02805.txt.bz2
Content-length: 1408

http://gcc.gnu.org/bugzilla/show_bug.cgi?id`357

janus at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |rejects-valid
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2014-02-27
                 CC|                            |janus at gcc dot gnu.org
            Summary|structure constructor with  |[F08] structure constructor
                   |unspecified values for      |with unspecified values for
                   |allocatable components      |allocatable components
     Ever confirmed|0                           |1

--- Comment #1 from janus at gcc dot gnu.org ---
This seems to be allowed only since Fortran 2008. The F03 standard has:

C485 (R457) A component-spec shall be provided for a component unless it has
default initialization or is inheritance associated with another component for
which a component-spec is provided or that has default initialization.

While in F08 this sounds like:

C492 (R455) A component-spec shall be provided for a nonallocatable component
unless it has default initialization or is inheritance associated with a
subcomponent of another component for which a component-spec is provided.

Note in particular the addition of 'nonallocatable'.


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug target/60336] empty struct value is passed differently in C and C++
  2014-02-25  9:36 [Bug other/60336] New: va_start corrupts 6-th argument in case of empty type used before the format string ahanins at gmail dot com
                   ` (16 preceding siblings ...)
  2014-02-27 20:53 ` ubizjak at gmail dot com
@ 2014-02-27 21:21 ` pinskia at gcc dot gnu.org
  2014-08-12 19:21 ` [Bug c++/60336] " hjl.tools at gmail dot com
                   ` (2 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: pinskia at gcc dot gnu.org @ 2014-02-27 21:21 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336

--- Comment #21 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Marc Glisse from comment #12)
> It is a bit alarming that gcc, clang and clang++ use one ABI and g++ uses a
> different (inferior) one (the incompatibility with clang++ should affect
> some standard library functions, though they are often inlined). Also,
> extern "C" is a calling convention marker, and it is rather disrespectful of
> g++ to ignore it, even if this is only about a non-standard (but documented)
> extension.

See http://gcc.gnu.org/ml/gcc-patches/2006-05/msg00868.html which was about
adding a warning for the extern "C" case.
And http://gcc.gnu.org/bugzilla/show_bug.cgi?id=10208 for the ABI difference in
the past about C/C++.

There is most likely more discussion about this in other threads too.


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug c++/60336] empty struct value is passed differently in C and C++
  2014-02-25  9:36 [Bug other/60336] New: va_start corrupts 6-th argument in case of empty type used before the format string ahanins at gmail dot com
                   ` (17 preceding siblings ...)
  2014-02-27 21:21 ` pinskia at gcc dot gnu.org
@ 2014-08-12 19:21 ` hjl.tools at gmail dot com
  2014-08-12 22:58 ` pinskia at gcc dot gnu.org
  2014-08-13  5:05 ` vagran.ast at gmail dot com
  20 siblings, 0 replies; 22+ messages in thread
From: hjl.tools at gmail dot com @ 2014-08-12 19:21 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336

H.J. Lu <hjl.tools at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|target                      |c++
            Version|4.8.1                       |4.10.0

--- Comment #22 from H.J. Lu <hjl.tools at gmail dot com> ---
This is a target independent issue.  Clang++ skips empty struct argument
and g++ passes it. Skip empty struct argument requires middle-end changes.


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug c++/60336] empty struct value is passed differently in C and C++
  2014-02-25  9:36 [Bug other/60336] New: va_start corrupts 6-th argument in case of empty type used before the format string ahanins at gmail dot com
                   ` (18 preceding siblings ...)
  2014-08-12 19:21 ` [Bug c++/60336] " hjl.tools at gmail dot com
@ 2014-08-12 22:58 ` pinskia at gcc dot gnu.org
  2014-08-13  5:05 ` vagran.ast at gmail dot com
  20 siblings, 0 replies; 22+ messages in thread
From: pinskia at gcc dot gnu.org @ 2014-08-12 22:58 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336

--- Comment #23 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to H.J. Lu from comment #22)
> This is a target independent issue.  Clang++ skips empty struct argument
> and g++ passes it. Skip empty struct argument requires middle-end changes.

Except in c++, the struct is non zero in size.


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug c++/60336] empty struct value is passed differently in C and C++
  2014-02-25  9:36 [Bug other/60336] New: va_start corrupts 6-th argument in case of empty type used before the format string ahanins at gmail dot com
                   ` (19 preceding siblings ...)
  2014-08-12 22:58 ` pinskia at gcc dot gnu.org
@ 2014-08-13  5:05 ` vagran.ast at gmail dot com
  20 siblings, 0 replies; 22+ messages in thread
From: vagran.ast at gmail dot com @ 2014-08-13  5:05 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336

--- Comment #24 from vagran <vagran.ast at gmail dot com> ---
Just to be on a safe side, please, also do not forget that empty struct (or
class) is really zero in the case when another structure (or class) is derived
from it. For example, such test would be useful after fix:

struct A {};

struct B: A {
    int i;
};

assert(sizeof(B) == sizeof(int));

And something like this:

struct A {};
struct B: A {};
struct C: B {};
struct D: C {};

assert(sizeof(D) == 1);


^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2014-08-13  5:05 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-02-25  9:36 [Bug other/60336] New: va_start corrupts 6-th argument in case of empty type used before the format string ahanins at gmail dot com
2014-02-25 19:53 ` [Bug other/60336] " mikpelinux at gmail dot com
2014-02-25 21:41 ` [Bug c++/60336] " hjl.tools at gmail dot com
2014-02-25 22:35 ` [Bug target/60336] " pinskia at gcc dot gnu.org
2014-02-26 17:03 ` [Bug target/60336] empty struct value is passed differently in C and C++ hjl.tools at gmail dot com
2014-02-26 18:09 ` ubizjak at gmail dot com
2014-02-26 19:06 ` hjl.tools at gmail dot com
2014-02-26 19:25 ` vagran.ast at gmail dot com
2014-02-26 19:31 ` pinskia at gcc dot gnu.org
2014-02-26 19:32 ` hjl.tools at gmail dot com
2014-02-26 19:51 ` glisse at gcc dot gnu.org
2014-02-26 19:55 ` hjl.tools at gmail dot com
2014-02-27 14:37 ` jason at gcc dot gnu.org
2014-02-27 16:04 ` hjl.tools at gmail dot com
2014-02-27 16:17 ` ubizjak at gmail dot com
2014-02-27 17:58 ` jason at gcc dot gnu.org
2014-02-27 18:41 ` jason at gcc dot gnu.org
2014-02-27 20:53 ` ubizjak at gmail dot com
2014-02-27 21:21 ` pinskia at gcc dot gnu.org
2014-08-12 19:21 ` [Bug c++/60336] " hjl.tools at gmail dot com
2014-08-12 22:58 ` pinskia at gcc dot gnu.org
2014-08-13  5:05 ` vagran.ast at gmail dot com

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).