public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/26577]  New: [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile
@ 2006-03-06  8:06 reichelt at gcc dot gnu dot org
  2006-03-06  8:07 ` [Bug c++/26577] " reichelt at gcc dot gnu dot org
                   ` (26 more replies)
  0 siblings, 27 replies; 28+ messages in thread
From: reichelt at gcc dot gnu dot org @ 2006-03-06  8:06 UTC (permalink / raw)
  To: gcc-bugs

As reported here:

  http://gcc.gnu.org/ml/gcc-bugs/2006-03/msg00589.html

Confirmed. Fails since GCC 4.0.0.

However, this has nothing to do with templates or inline asm as the
reduced testcase shows:

==================================
struct A
{
    A(const A&);
    A& operator=(const A&);
    static void bar();
    void foo() volatile {}
    void baz() volatile;
};

void A::baz() volatile
{
    foo();
    bar();
}
==================================


-- 
           Summary: [4.0/4.1/4.2 regression] ICE in cp_expr_size with
                    volatile
           Product: gcc
           Version: 4.2.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code, monitored
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: reichelt at gcc dot gnu dot org


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


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

* [Bug c++/26577] [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile
  2006-03-06  8:06 [Bug c++/26577] New: [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile reichelt at gcc dot gnu dot org
  2006-03-06  8:07 ` [Bug c++/26577] " reichelt at gcc dot gnu dot org
@ 2006-03-06  8:07 ` reichelt at gcc dot gnu dot org
  2006-03-06 10:39 ` rguenth at gcc dot gnu dot org
                   ` (24 subsequent siblings)
  26 siblings, 0 replies; 28+ messages in thread
From: reichelt at gcc dot gnu dot org @ 2006-03-06  8:07 UTC (permalink / raw)
  To: gcc-bugs



-- 

reichelt at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2006-03-06 08:06:57
               date|                            |


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


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

* [Bug c++/26577] [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile
  2006-03-06  8:06 [Bug c++/26577] New: [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile reichelt at gcc dot gnu dot org
@ 2006-03-06  8:07 ` reichelt at gcc dot gnu dot org
  2006-03-06  8:07 ` reichelt at gcc dot gnu dot org
                   ` (25 subsequent siblings)
  26 siblings, 0 replies; 28+ messages in thread
From: reichelt at gcc dot gnu dot org @ 2006-03-06  8:07 UTC (permalink / raw)
  To: gcc-bugs



-- 

reichelt at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|---                         |4.0.3


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


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

* [Bug c++/26577] [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile
  2006-03-06  8:06 [Bug c++/26577] New: [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile reichelt at gcc dot gnu dot org
  2006-03-06  8:07 ` [Bug c++/26577] " reichelt at gcc dot gnu dot org
  2006-03-06  8:07 ` reichelt at gcc dot gnu dot org
@ 2006-03-06 10:39 ` rguenth at gcc dot gnu dot org
  2006-03-06 12:42 ` [Bug c++/26577] [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile and call to static pinskia at gcc dot gnu dot org
                   ` (23 subsequent siblings)
  26 siblings, 0 replies; 28+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2006-03-06 10:39 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from rguenth at gcc dot gnu dot org  2006-03-06 10:39 -------
      gcc_assert (!TYPE_HAS_COMPLEX_INIT_REF (type)
                  || !TYPE_HAS_COMPLEX_ASSIGN_REF (type)
                  /* But storing a CONSTRUCTOR isn't a copy.  */
                  || TREE_CODE (exp) == CONSTRUCTOR
                  /* And, the gimplifier will sometimes make a copy of
                     an aggregate.  In particular, for a case like:

                        struct S { S(); };
                        struct X { int a; S s; };
                        X x = { 0 };

                     the gimplifier will create a temporary with
                     static storage duration, perform static
                     initialization of the temporary, and then copy
                     the result.  Since the "s" subobject is never
                     constructed, this is a valid transformation.  */
                  || CP_AGGREGATE_TYPE_P (type));

(gdb) call debug_tree(0x40247958)
 <record_type 0x40247958 A addressable volatile needs-constructing type_1
type_5 BLK
    size <integer_cst 0x4018d1e0 type <integer_type 0x4019e05c bit_size_type>
constant invariant 8>
    unit size <integer_cst 0x4018d1f8 type <integer_type 0x4019e000 unsigned
int> constant invariant 1>
    align 8 symtab 0 alias set -1
    fields <type_decl 0x402149c0 A
        type <record_type 0x40247450 A addressable needs-constructing type_1
type_5 BLK size <integer_cst 0x4018d1e0 8> unit size <integer_cst 0x4018d1f8 1>
            align 8 symtab 0 alias set -1 fields <type_decl 0x402149c0 A>
           needs-constructor X(constX&) this=(X&) n_parents=0 use_template=0
interface-unknown
            pointer_to_this <pointer_type 0x4024761c> reference_to_this
<reference_type 0x402476d4> chain <type_decl 0x40214958 A>>
        nonlocal decl_4 VOID file /tmp/t.C line 2
        align 1 context <record_type 0x40247450 A>
       >
   needs-constructor X(constX&) this=(X&) n_parents=0 use_template=0
interface-unknown
    pointer_to_this <pointer_type 0x40247a10>>

(gdb) call debug_tree(exp)
 <indirect_ref 0x4020eb00
...
    arg 0 <parm_decl 0x40196c30 this
        type <pointer_type 0x40247a6c type <record_type 0x40247958 A>
            readonly unsigned SI
            size <integer_cst 0x4018d3d8 constant invariant 32>
            unit size <integer_cst 0x4018d168 constant invariant 4>
            align 32 symtab 0 alias set -1>
        readonly used unsigned SI file /tmp/t.C line 10 size <integer_cst
0x4018d3d8 32> unit size <integer_cst 0x4018d168 4>
        align 32 context <function_decl 0x40245d80 baz> initial <pointer_type
0x40247a6c>
        (mem/f/c/i:SI (reg/f:SI 53 virtual-incoming-args) [0 this+0 S4 A32])
arg-type <pointer_type 0x40247a6c>
        incoming-rtl (mem/f/c/i:SI (reg/f:SI 53 virtual-incoming-args) [0
this+0 S4 A32])>>

The last conditional should probably apply here:

  CP_AGGREGATE_TYPE_P (type)

but it doesn't due to CLASSTYPE_NON_AGGREGATE (TYPE)


-- 


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


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

* [Bug c++/26577] [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile and call to static
  2006-03-06  8:06 [Bug c++/26577] New: [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile reichelt at gcc dot gnu dot org
                   ` (2 preceding siblings ...)
  2006-03-06 10:39 ` rguenth at gcc dot gnu dot org
@ 2006-03-06 12:42 ` pinskia at gcc dot gnu dot org
  2006-03-06 12:45 ` pinskia at gcc dot gnu dot org
                   ` (22 subsequent siblings)
  26 siblings, 0 replies; 28+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2006-03-06 12:42 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from pinskia at gcc dot gnu dot org  2006-03-06 12:42 -------
Reduced testcase which shows the real issue:
struct A
{
    A(const A&);
    A& operator=(const A&);
    static void bar();
    void baz() volatile;
};
void A::baz() volatile
{
    bar();
}


-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|[4.0/4.1/4.2 regression] ICE|[4.0/4.1/4.2 regression] ICE
                   |in cp_expr_size with        |in cp_expr_size with
                   |volatile                    |volatile and call to static


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


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

* [Bug c++/26577] [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile and call to static
  2006-03-06  8:06 [Bug c++/26577] New: [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile reichelt at gcc dot gnu dot org
                   ` (3 preceding siblings ...)
  2006-03-06 12:42 ` [Bug c++/26577] [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile and call to static pinskia at gcc dot gnu dot org
@ 2006-03-06 12:45 ` pinskia at gcc dot gnu dot org
  2006-03-06 12:47 ` pinskia at gcc dot gnu dot org
                   ` (21 subsequent siblings)
  26 siblings, 0 replies; 28+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2006-03-06 12:45 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from pinskia at gcc dot gnu dot org  2006-03-06 12:45 -------
Related to PR 23167.


-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
  BugsThisDependsOn|                            |23167


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


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

* [Bug c++/26577] [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile and call to static
  2006-03-06  8:06 [Bug c++/26577] New: [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile reichelt at gcc dot gnu dot org
                   ` (4 preceding siblings ...)
  2006-03-06 12:45 ` pinskia at gcc dot gnu dot org
@ 2006-03-06 12:47 ` pinskia at gcc dot gnu dot org
  2006-03-07 12:26 ` reichelt at gcc dot gnu dot org
                   ` (20 subsequent siblings)
  26 siblings, 0 replies; 28+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2006-03-06 12:47 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from pinskia at gcc dot gnu dot org  2006-03-06 12:47 -------
(In reply to comment #3)
> Related to PR 23167.
One more comment about this, the fix for that PR moved the ICE from
create_tmp_var to cp_expr_size.


-- 


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


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

* [Bug c++/26577] [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile and call to static
  2006-03-06  8:06 [Bug c++/26577] New: [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile reichelt at gcc dot gnu dot org
                   ` (5 preceding siblings ...)
  2006-03-06 12:47 ` pinskia at gcc dot gnu dot org
@ 2006-03-07 12:26 ` reichelt at gcc dot gnu dot org
  2006-03-11  3:22 ` mmitchel at gcc dot gnu dot org
                   ` (19 subsequent siblings)
  26 siblings, 0 replies; 28+ messages in thread
From: reichelt at gcc dot gnu dot org @ 2006-03-07 12:26 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #5 from reichelt at gcc dot gnu dot org  2006-03-07 12:26 -------
*** Bug 26592 has been marked as a duplicate of this bug. ***


-- 

reichelt at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |cjh at managesoft dot com


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


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

* [Bug c++/26577] [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile and call to static
  2006-03-06  8:06 [Bug c++/26577] New: [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile reichelt at gcc dot gnu dot org
                   ` (6 preceding siblings ...)
  2006-03-07 12:26 ` reichelt at gcc dot gnu dot org
@ 2006-03-11  3:22 ` mmitchel at gcc dot gnu dot org
  2006-06-04 18:03 ` mmitchel at gcc dot gnu dot org
                   ` (18 subsequent siblings)
  26 siblings, 0 replies; 28+ messages in thread
From: mmitchel at gcc dot gnu dot org @ 2006-03-11  3:22 UTC (permalink / raw)
  To: gcc-bugs



-- 

mmitchel at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.0.3                       |4.0.4


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


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

* [Bug c++/26577] [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile and call to static
  2006-03-06  8:06 [Bug c++/26577] New: [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile reichelt at gcc dot gnu dot org
                   ` (7 preceding siblings ...)
  2006-03-11  3:22 ` mmitchel at gcc dot gnu dot org
@ 2006-06-04 18:03 ` mmitchel at gcc dot gnu dot org
  2006-06-05 22:39 ` mmitchel at gcc dot gnu dot org
                   ` (17 subsequent siblings)
  26 siblings, 0 replies; 28+ messages in thread
From: mmitchel at gcc dot gnu dot org @ 2006-06-04 18:03 UTC (permalink / raw)
  To: gcc-bugs



-- 

mmitchel at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P3                          |P1


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


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

* [Bug c++/26577] [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile and call to static
  2006-03-06  8:06 [Bug c++/26577] New: [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile reichelt at gcc dot gnu dot org
                   ` (8 preceding siblings ...)
  2006-06-04 18:03 ` mmitchel at gcc dot gnu dot org
@ 2006-06-05 22:39 ` mmitchel at gcc dot gnu dot org
  2006-06-12 12:16 ` dnovillo at redhat dot com
                   ` (16 subsequent siblings)
  26 siblings, 0 replies; 28+ messages in thread
From: mmitchel at gcc dot gnu dot org @ 2006-06-05 22:39 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #6 from mmitchel at gcc dot gnu dot org  2006-06-05 22:37 -------
An even smaller test case is:

==
struct A
{
  A(const A&);
  A& operator=(const A&);
  void baz() volatile;
};
void A::baz() volatile
{
  *this;
}
==

The problem is that the middle-end is creating a copy of an object of type A --
and C++ front-end has an assert designed to prevent exactly that, since copies
are supposed to be done by the copy constructor.

The code in the middle-end is in fact unsafe (and so we cannot just remove the
C++ assert) because for:

  struct B { ... };
  struct D : virtual public B { ... };

  void f(volatile D* p) {
    *p;
  }

the type of "*p" will be "D" -- but we cannot safely read sizeof (D) bytes from
*p, as sizeof (D) includes the size of the virtual base, and the virtual base
may be located elsewhere.  (If X derives from D virtually, then the B part of X
may be located in memory below the D part of X.)  If the C++ front end said
that "p" points only to a D-as-base (as agreed elsewhere would be a good idea),
then the middle end would still do the wrong thing, as it would touch only part
of *p.

Therefore, for a TREE_ADDRESSABLE type, I don't think the middle-end can or
should do anything for a volatile access.  It should just ignore the
volatility.

Diego, what say you?


-- 

mmitchel at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |dnovillo at redhat dot com


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


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

* [Bug c++/26577] [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile and call to static
  2006-03-06  8:06 [Bug c++/26577] New: [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile reichelt at gcc dot gnu dot org
                   ` (9 preceding siblings ...)
  2006-06-05 22:39 ` mmitchel at gcc dot gnu dot org
@ 2006-06-12 12:16 ` dnovillo at redhat dot com
  2006-06-14  2:40 ` mmitchel at gcc dot gnu dot org
                   ` (15 subsequent siblings)
  26 siblings, 0 replies; 28+ messages in thread
From: dnovillo at redhat dot com @ 2006-06-12 12:16 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #7 from dnovillo at redhat dot com  2006-06-12 12:12 -------
Subject: Re:  [4.0/4.1/4.2 regression] ICE in cp_expr_size
 with volatile and call to static

mmitchel at gcc dot gnu dot org wrote on 06/05/06 18:37:

> Diego, what say you?
> 
Shouldn't COMPLETE_TYPE_P imply that we can compute the size of the
type?  That's the requisite we need in this case to emit the load from
the volatile reference.  Otherwise, we have no other choice but to throw
it away.

ISTM that if COMPLETE_TYPE_P had the right sizeof semantics, we wouldn't
need the workaround added for 23167.
The only thing the gimplifier can do in this case is throw the reference
out, but


-- 


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


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

* [Bug c++/26577] [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile and call to static
  2006-03-06  8:06 [Bug c++/26577] New: [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile reichelt at gcc dot gnu dot org
                   ` (10 preceding siblings ...)
  2006-06-12 12:16 ` dnovillo at redhat dot com
@ 2006-06-14  2:40 ` mmitchel at gcc dot gnu dot org
  2006-06-30 19:46 ` [Bug middle-end/26577] " jason at gcc dot gnu dot org
                   ` (14 subsequent siblings)
  26 siblings, 0 replies; 28+ messages in thread
From: mmitchel at gcc dot gnu dot org @ 2006-06-14  2:40 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #8 from mmitchel at gcc dot gnu dot org  2006-06-14 02:16 -------
Diego --

Your last comment was cut off.  

However, no, COMPLETE_TYPE_P does not imply that we know the size of the type,
and it can't ever imply that, in C++.  For a type with virtual bases, we don't
know what the size of the object will be; in fact, we don't know wehther the
object will be located in a contiguous block of memory.

So, no front end change will avoid this problem.

-- Mark


-- 

mmitchel at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |mark at codesourcery dot com


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


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

* [Bug middle-end/26577] [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile and call to static
  2006-03-06  8:06 [Bug c++/26577] New: [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile reichelt at gcc dot gnu dot org
                   ` (11 preceding siblings ...)
  2006-06-14  2:40 ` mmitchel at gcc dot gnu dot org
@ 2006-06-30 19:46 ` jason at gcc dot gnu dot org
  2006-06-30 20:07 ` [Bug c++/26577] " jason at gcc dot gnu dot org
                   ` (13 subsequent siblings)
  26 siblings, 0 replies; 28+ messages in thread
From: jason at gcc dot gnu dot org @ 2006-06-30 19:46 UTC (permalink / raw)
  To: gcc-bugs



-- 

jason at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |jason at gcc dot gnu dot org
                   |dot org                     |
             Status|NEW                         |ASSIGNED
   Last reconfirmed|2006-03-06 08:06:57         |2006-06-30 19:29:43
               date|                            |


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


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

* [Bug c++/26577] [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile and call to static
  2006-03-06  8:06 [Bug c++/26577] New: [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile reichelt at gcc dot gnu dot org
                   ` (12 preceding siblings ...)
  2006-06-30 19:46 ` [Bug middle-end/26577] " jason at gcc dot gnu dot org
@ 2006-06-30 20:07 ` jason at gcc dot gnu dot org
  2006-06-30 21:13 ` jason at gcc dot gnu dot org
                   ` (12 subsequent siblings)
  26 siblings, 0 replies; 28+ messages in thread
From: jason at gcc dot gnu dot org @ 2006-06-30 20:07 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #9 from jason at gcc dot gnu dot org  2006-06-30 19:49 -------
Actually, this is a frontend issue: we shouldn't be asking for the access in
the first place.  Patch soon.


-- 

jason at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|middle-end                  |c++


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


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

* [Bug c++/26577] [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile and call to static
  2006-03-06  8:06 [Bug c++/26577] New: [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile reichelt at gcc dot gnu dot org
                   ` (13 preceding siblings ...)
  2006-06-30 20:07 ` [Bug c++/26577] " jason at gcc dot gnu dot org
@ 2006-06-30 21:13 ` jason at gcc dot gnu dot org
  2006-06-30 21:24 ` jason at gcc dot gnu dot org
                   ` (11 subsequent siblings)
  26 siblings, 0 replies; 28+ messages in thread
From: jason at gcc dot gnu dot org @ 2006-06-30 21:13 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #10 from jason at gcc dot gnu dot org  2006-06-30 20:48 -------
Subject: Bug 26577

Author: jason
Date: Fri Jun 30 20:48:42 2006
New Revision: 115105

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=115105
Log:
        PR c++/26577
        * call.c (build_new_method_call): Force evaluation of the
        instance pointer, not the object.

Added:
    trunk/gcc/testsuite/g++.dg/init/volatile1.C
Modified:
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/call.c


-- 


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


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

* [Bug c++/26577] [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile and call to static
  2006-03-06  8:06 [Bug c++/26577] New: [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile reichelt at gcc dot gnu dot org
                   ` (14 preceding siblings ...)
  2006-06-30 21:13 ` jason at gcc dot gnu dot org
@ 2006-06-30 21:24 ` jason at gcc dot gnu dot org
  2006-06-30 21:30 ` jason at gcc dot gnu dot org
                   ` (10 subsequent siblings)
  26 siblings, 0 replies; 28+ messages in thread
From: jason at gcc dot gnu dot org @ 2006-06-30 21:24 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #11 from jason at gcc dot gnu dot org  2006-06-30 21:23 -------
Subject: Bug 26577

Author: jason
Date: Fri Jun 30 21:23:45 2006
New Revision: 115106

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=115106
Log:
        PR c++/26577
        * call.c (build_new_method_call): Force evaluation of the
        instance pointer, not the object.

Added:
    branches/gcc-4_1-branch/gcc/testsuite/g++.dg/init/volatile1.C
      - copied unchanged from r115105,
trunk/gcc/testsuite/g++.dg/init/volatile1.C
Modified:
    branches/gcc-4_1-branch/gcc/cp/ChangeLog
    branches/gcc-4_1-branch/gcc/cp/call.c


-- 


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


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

* [Bug c++/26577] [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile and call to static
  2006-03-06  8:06 [Bug c++/26577] New: [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile reichelt at gcc dot gnu dot org
                   ` (15 preceding siblings ...)
  2006-06-30 21:24 ` jason at gcc dot gnu dot org
@ 2006-06-30 21:30 ` jason at gcc dot gnu dot org
  2006-07-03 18:28 ` reichelt at gcc dot gnu dot org
                   ` (9 subsequent siblings)
  26 siblings, 0 replies; 28+ messages in thread
From: jason at gcc dot gnu dot org @ 2006-06-30 21:30 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #12 from jason at gcc dot gnu dot org  2006-06-30 21:25 -------
Subject: Bug 26577

Author: jason
Date: Fri Jun 30 21:25:21 2006
New Revision: 115107

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=115107
Log:
        PR c++/26577
        * call.c (build_new_method_call): Force evaluation of the
        instance pointer, not the object.

Added:
    branches/gcc-4_0-branch/gcc/testsuite/g++.dg/init/volatile1.C
      - copied unchanged from r115105,
trunk/gcc/testsuite/g++.dg/init/volatile1.C
Modified:
    branches/gcc-4_0-branch/gcc/cp/ChangeLog
    branches/gcc-4_0-branch/gcc/cp/call.c


-- 


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


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

* [Bug c++/26577] [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile and call to static
  2006-03-06  8:06 [Bug c++/26577] New: [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile reichelt at gcc dot gnu dot org
                   ` (16 preceding siblings ...)
  2006-06-30 21:30 ` jason at gcc dot gnu dot org
@ 2006-07-03 18:28 ` reichelt at gcc dot gnu dot org
  2006-07-05  0:46 ` jason at gcc dot gnu dot org
                   ` (8 subsequent siblings)
  26 siblings, 0 replies; 28+ messages in thread
From: reichelt at gcc dot gnu dot org @ 2006-07-03 18:28 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #14 from reichelt at gcc dot gnu dot org  2006-07-03 18:28 -------
Marks's testcase from comment #6 still ICEs.


-- 

reichelt at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |REOPENED
         Resolution|FIXED                       |


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


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

* [Bug c++/26577] [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile and call to static
  2006-03-06  8:06 [Bug c++/26577] New: [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile reichelt at gcc dot gnu dot org
                   ` (17 preceding siblings ...)
  2006-07-03 18:28 ` reichelt at gcc dot gnu dot org
@ 2006-07-05  0:46 ` jason at gcc dot gnu dot org
  2006-07-17  3:17 ` mmitchel at gcc dot gnu dot org
                   ` (7 subsequent siblings)
  26 siblings, 0 replies; 28+ messages in thread
From: jason at gcc dot gnu dot org @ 2006-07-05  0:46 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #15 from jason at gcc dot gnu dot org  2006-07-05 00:46 -------
(In reply to comment #14)
> Marks's testcase from comment #6 still ICEs.

True, but it's a contrived testcase; I doubt anyone deliberately tries to force
a load of a non-POD object for its own sake.


-- 


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


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

* [Bug c++/26577] [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile and call to static
  2006-03-06  8:06 [Bug c++/26577] New: [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile reichelt at gcc dot gnu dot org
                   ` (18 preceding siblings ...)
  2006-07-05  0:46 ` jason at gcc dot gnu dot org
@ 2006-07-17  3:17 ` mmitchel at gcc dot gnu dot org
  2006-07-17 15:10 ` jason at redhat dot com
                   ` (6 subsequent siblings)
  26 siblings, 0 replies; 28+ messages in thread
From: mmitchel at gcc dot gnu dot org @ 2006-07-17  3:17 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #16 from mmitchel at gcc dot gnu dot org  2006-07-17 03:17 -------
Contrived, or not, what should we do?

I stand by my position that the middle end should not try to load a
TREE_ADDRESSABLE type from memory in this way.


-- 


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


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

* [Bug c++/26577] [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile and call to static
  2006-03-06  8:06 [Bug c++/26577] New: [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile reichelt at gcc dot gnu dot org
                   ` (19 preceding siblings ...)
  2006-07-17  3:17 ` mmitchel at gcc dot gnu dot org
@ 2006-07-17 15:10 ` jason at redhat dot com
  2006-08-28  3:05 ` [Bug c++/26577] [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile and non POD pinskia at gcc dot gnu dot org
                   ` (5 subsequent siblings)
  26 siblings, 0 replies; 28+ messages in thread
From: jason at redhat dot com @ 2006-07-17 15:10 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #17 from jason at redhat dot com  2006-07-17 15:10 -------
Subject: Re:  [4.0/4.1/4.2 regression] ICE in cp_expr_size
 with volatile and call to static

Agreed; if we try to explicitly force a load of a volatile non-POD we 
should call force_rvalue on it.

Jason


-- 


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


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

* [Bug c++/26577] [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile and non POD
  2006-03-06  8:06 [Bug c++/26577] New: [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile reichelt at gcc dot gnu dot org
                   ` (20 preceding siblings ...)
  2006-07-17 15:10 ` jason at redhat dot com
@ 2006-08-28  3:05 ` pinskia at gcc dot gnu dot org
  2006-08-29  6:55 ` jason at gcc dot gnu dot org
                   ` (4 subsequent siblings)
  26 siblings, 0 replies; 28+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2006-08-28  3:05 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #18 from pinskia at gcc dot gnu dot org  2006-08-28 03:04 -------
(In reply to comment #6)
> An even smaller test case without a member function is:
Even smaller:
struct A
{
  A(const A&);
  A& operator=(const A&);
};
void f(volatile A *a) { *a; }


-- 


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


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

* [Bug c++/26577] [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile and non POD
  2006-03-06  8:06 [Bug c++/26577] New: [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile reichelt at gcc dot gnu dot org
                   ` (21 preceding siblings ...)
  2006-08-28  3:05 ` [Bug c++/26577] [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile and non POD pinskia at gcc dot gnu dot org
@ 2006-08-29  6:55 ` jason at gcc dot gnu dot org
  2006-08-29 18:15 ` [Bug c++/26577] [4.0/4.1 " jason at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  26 siblings, 0 replies; 28+ messages in thread
From: jason at gcc dot gnu dot org @ 2006-08-29  6:55 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #19 from jason at gcc dot gnu dot org  2006-08-29 06:55 -------
Subject: Bug 26577

Author: jason
Date: Tue Aug 29 06:55:03 2006
New Revision: 116554

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=116554
Log:
        PR c++/26577
        * cvt.c (convert_to_void): Don't automatically load from volatiles
        of TREE_ADDRESSABLE type.

Added:
    trunk/gcc/testsuite/g++.dg/warn/volatile1.C
Modified:
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/cvt.c


-- 


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


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

* [Bug c++/26577] [4.0/4.1 regression] ICE in cp_expr_size with volatile and non POD
  2006-03-06  8:06 [Bug c++/26577] New: [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile reichelt at gcc dot gnu dot org
                   ` (22 preceding siblings ...)
  2006-08-29  6:55 ` jason at gcc dot gnu dot org
@ 2006-08-29 18:15 ` jason at gcc dot gnu dot org
  2006-08-30  2:59 ` jason at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  26 siblings, 0 replies; 28+ messages in thread
From: jason at gcc dot gnu dot org @ 2006-08-29 18:15 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #20 from jason at gcc dot gnu dot org  2006-08-29 18:15 -------
Subject: Bug 26577

Author: jason
Date: Tue Aug 29 18:15:20 2006
New Revision: 116568

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=116568
Log:
        PR c++/26577
        * cvt.c (convert_to_void): Don't automatically load from volatiles
        of TREE_ADDRESSABLE type.

Added:
    branches/gcc-4_0-branch/gcc/testsuite/g++.dg/warn/volatile1.C
      - copied unchanged from r116555,
trunk/gcc/testsuite/g++.dg/warn/volatile1.C
Modified:
    branches/gcc-4_0-branch/gcc/cp/ChangeLog
    branches/gcc-4_0-branch/gcc/cp/cvt.c


-- 


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


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

* [Bug c++/26577] [4.0/4.1 regression] ICE in cp_expr_size with volatile and non POD
  2006-03-06  8:06 [Bug c++/26577] New: [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile reichelt at gcc dot gnu dot org
                   ` (23 preceding siblings ...)
  2006-08-29 18:15 ` [Bug c++/26577] [4.0/4.1 " jason at gcc dot gnu dot org
@ 2006-08-30  2:59 ` jason at gcc dot gnu dot org
  2006-08-30  3:42 ` pinskia at gcc dot gnu dot org
  2006-09-21 14:54 ` pinskia at gcc dot gnu dot org
  26 siblings, 0 replies; 28+ messages in thread
From: jason at gcc dot gnu dot org @ 2006-08-30  2:59 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #21 from jason at gcc dot gnu dot org  2006-08-30 02:59 -------
Subject: Bug 26577

Author: jason
Date: Wed Aug 30 02:59:14 2006
New Revision: 116576

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=116576
Log:
        PR c++/26577
        * cvt.c (convert_to_void): Don't automatically load from volatiles
        of TREE_ADDRESSABLE type.

Added:
    branches/gcc-4_1-branch/gcc/testsuite/g++.dg/warn/volatile1.C
      - copied unchanged from r116568,
branches/gcc-4_0-branch/gcc/testsuite/g++.dg/warn/volatile1.C
Modified:
    branches/gcc-4_1-branch/gcc/cp/ChangeLog
    branches/gcc-4_1-branch/gcc/cp/cvt.c


-- 


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


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

* [Bug c++/26577] [4.0/4.1 regression] ICE in cp_expr_size with volatile and non POD
  2006-03-06  8:06 [Bug c++/26577] New: [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile reichelt at gcc dot gnu dot org
                   ` (24 preceding siblings ...)
  2006-08-30  2:59 ` jason at gcc dot gnu dot org
@ 2006-08-30  3:42 ` pinskia at gcc dot gnu dot org
  2006-09-21 14:54 ` pinskia at gcc dot gnu dot org
  26 siblings, 0 replies; 28+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2006-08-30  3:42 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #22 from pinskia at gcc dot gnu dot org  2006-08-30 03:42 -------
Fixed.


-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|REOPENED                    |RESOLVED
         Resolution|                            |FIXED


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


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

* [Bug c++/26577] [4.0/4.1 regression] ICE in cp_expr_size with volatile and non POD
  2006-03-06  8:06 [Bug c++/26577] New: [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile reichelt at gcc dot gnu dot org
                   ` (25 preceding siblings ...)
  2006-08-30  3:42 ` pinskia at gcc dot gnu dot org
@ 2006-09-21 14:54 ` pinskia at gcc dot gnu dot org
  26 siblings, 0 replies; 28+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2006-09-21 14:54 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #23 from pinskia at gcc dot gnu dot org  2006-09-21 14:54 -------
*** Bug 29168 has been marked as a duplicate of this bug. ***


-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |Ed dot Ralston at jhuapl dot
                   |                            |edu


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


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

end of thread, other threads:[~2006-09-21 14:54 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-03-06  8:06 [Bug c++/26577] New: [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile reichelt at gcc dot gnu dot org
2006-03-06  8:07 ` [Bug c++/26577] " reichelt at gcc dot gnu dot org
2006-03-06  8:07 ` reichelt at gcc dot gnu dot org
2006-03-06 10:39 ` rguenth at gcc dot gnu dot org
2006-03-06 12:42 ` [Bug c++/26577] [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile and call to static pinskia at gcc dot gnu dot org
2006-03-06 12:45 ` pinskia at gcc dot gnu dot org
2006-03-06 12:47 ` pinskia at gcc dot gnu dot org
2006-03-07 12:26 ` reichelt at gcc dot gnu dot org
2006-03-11  3:22 ` mmitchel at gcc dot gnu dot org
2006-06-04 18:03 ` mmitchel at gcc dot gnu dot org
2006-06-05 22:39 ` mmitchel at gcc dot gnu dot org
2006-06-12 12:16 ` dnovillo at redhat dot com
2006-06-14  2:40 ` mmitchel at gcc dot gnu dot org
2006-06-30 19:46 ` [Bug middle-end/26577] " jason at gcc dot gnu dot org
2006-06-30 20:07 ` [Bug c++/26577] " jason at gcc dot gnu dot org
2006-06-30 21:13 ` jason at gcc dot gnu dot org
2006-06-30 21:24 ` jason at gcc dot gnu dot org
2006-06-30 21:30 ` jason at gcc dot gnu dot org
2006-07-03 18:28 ` reichelt at gcc dot gnu dot org
2006-07-05  0:46 ` jason at gcc dot gnu dot org
2006-07-17  3:17 ` mmitchel at gcc dot gnu dot org
2006-07-17 15:10 ` jason at redhat dot com
2006-08-28  3:05 ` [Bug c++/26577] [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile and non POD pinskia at gcc dot gnu dot org
2006-08-29  6:55 ` jason at gcc dot gnu dot org
2006-08-29 18:15 ` [Bug c++/26577] [4.0/4.1 " jason at gcc dot gnu dot org
2006-08-30  2:59 ` jason at gcc dot gnu dot org
2006-08-30  3:42 ` pinskia at gcc dot gnu dot org
2006-09-21 14:54 ` pinskia at gcc dot gnu dot org

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