public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c/42898]  New: Problem initializing volatile structures
@ 2010-01-29 19:27 gandalf at winds dot org
  2010-01-29 19:38 ` [Bug c/42898] [4.3/4.4/4.5 Regression] volatile structures and compound literals pinskia at gcc dot gnu dot org
                   ` (23 more replies)
  0 siblings, 24 replies; 25+ messages in thread
From: gandalf at winds dot org @ 2010-01-29 19:27 UTC (permalink / raw)
  To: gcc-bugs

I've recently upgraded to GCC 4.3.2 from 4.2.2, and I noticed a strange
change in how volatile bitmask structures are optimized.

Consider the following code (compiled using just the -O3 option):


/* 32-bit MMIO */
struct hardware {
  int parm1:8;
  int :4;
  int parm2:4;
  int parm3:15;
  int parm4:1;
};

void f1()
{
  volatile struct hardware *ptr=(void *)0x11223344;

  *ptr=(struct hardware) {
    .parm1=42,
    .parm2=13,
    .parm3=11850,
    .parm4=1,
  };
}

void f2()
{
  volatile struct hardware *ptr=(void *)0x11223344;

  struct hardware set={
    .parm1=42,
    .parm2=13,
    .parm3=11850,
    .parm4=1,
  };

  *ptr=set;
}


In GCC 4.3.2, this produces the following assembly:

f1:
        movl    $0, 287454020
        movb    $42, 287454020
        movl    287454020, %eax
        andb    $15, %ah
        orb     $208, %ah
        movl    %eax, 287454020
        movl    287454020, %eax
        andl    $-2147418113, %eax
        orl     $776601600, %eax
        movl    %eax, 287454020
        movl    287454020, %eax
        orl     $-2147483648, %eax
        movl    %eax, 287454020
        ret

f2:
        movl    $-1370828758, 287454020
        ret

Aren't both functions syntactically the same, and shouldn't they produce the
same optimized code as in "f2" above? This used to be the case in GCC 4.2.2.

The problem I'm seeing, apart from the lack of optimization, is that "f1"
causes 5 separate writes to a single MMIO register, instead of 1. This
particular hardware register is only expecting one write to this location, and
when multiple writes are received it causes the hardware to fail.

If this new behavior is intended, is there some sort of attribute I can add to
the code to get the original 4.2.2 behavior back?

Thanks,
 -Byron


-- 
           Summary: Problem initializing volatile structures
           Product: gcc
           Version: 4.3.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: gandalf at winds dot org
 GCC build triplet: x86_64-pc-linux-gnu
  GCC host triplet: x86_64-pc-linux-gnu
GCC target triplet: x86_64-pc-linux-gnu


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


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

* [Bug c/42898] [4.3/4.4/4.5 Regression] volatile structures and compound literals
  2010-01-29 19:27 [Bug c/42898] New: Problem initializing volatile structures gandalf at winds dot org
@ 2010-01-29 19:38 ` pinskia at gcc dot gnu dot org
  2010-01-29 22:42 ` [Bug middle-end/42898] [4.3/4.4/4.5 Regression] volatile structures and compound literal initializers rguenth at gcc dot gnu dot org
                   ` (22 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2010-01-29 19:38 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from pinskia at gcc dot gnu dot org  2010-01-29 19:38 -------
Confirmed, I think this was caused/exposed by:
2007-11-20  Jakub Jelinek  <jakub@redhat.com>

        PR c/34146
        * c-gimplify.c (optimize_compound_literals_in_ctor): New function.
        (c_gimplify_expr): Use it.


-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu dot org
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
           Keywords|                            |wrong-code
   Last reconfirmed|0000-00-00 00:00:00         |2010-01-29 19:38:02
               date|                            |
            Summary|volatile structures and     |[4.3/4.4/4.5 Regression]
                   |compound literals           |volatile structures and
                   |                            |compound literals
   Target Milestone|---                         |4.4.4


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


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

* [Bug middle-end/42898] [4.3/4.4/4.5 Regression] volatile structures and compound literal initializers
  2010-01-29 19:27 [Bug c/42898] New: Problem initializing volatile structures gandalf at winds dot org
  2010-01-29 19:38 ` [Bug c/42898] [4.3/4.4/4.5 Regression] volatile structures and compound literals pinskia at gcc dot gnu dot org
  2010-01-29 22:42 ` [Bug middle-end/42898] [4.3/4.4/4.5 Regression] volatile structures and compound literal initializers rguenth at gcc dot gnu dot org
@ 2010-01-29 22:42 ` rguenth at gcc dot gnu dot org
  2010-01-29 22:42 ` rguenth at gcc dot gnu dot org
                   ` (20 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-01-29 22:42 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from rguenth at gcc dot gnu dot org  2010-01-29 22:41 -------
Yep:

f2 ()
{
  volatile struct hardware * ptr;
  struct hardware set;

  ptr = 287454020B;
  set = {};
  set.parm1 = 42;
  set.parm2 = -3;
  set.parm3 = 11850;
  set.parm4 = -1;
  *ptr = set;
}

f1 ()
{
  volatile struct hardware * ptr;

  ptr = 287454020B;
  *ptr = {};
  ptr->parm1 = 42;
  ptr->parm2 = -3;
  ptr->parm3 = 11850;
  ptr->parm4 = -1;
}

we need to gimplify f1 exactly the same as f2, using a temporary.


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|c                           |middle-end
            Summary|[4.3/4.4/4.5 Regression]    |[4.3/4.4/4.5 Regression]
                   |volatile structures and     |volatile structures and
                   |compound literals           |compound literal
                   |                            |initializers


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


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

* [Bug middle-end/42898] [4.3/4.4/4.5 Regression] volatile structures and compound literal initializers
  2010-01-29 19:27 [Bug c/42898] New: Problem initializing volatile structures gandalf at winds dot org
  2010-01-29 19:38 ` [Bug c/42898] [4.3/4.4/4.5 Regression] volatile structures and compound literals pinskia at gcc dot gnu dot org
@ 2010-01-29 22:42 ` rguenth at gcc dot gnu dot org
  2010-01-29 22:42 ` rguenth at gcc dot gnu dot org
                   ` (21 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-01-29 22:42 UTC (permalink / raw)
  To: gcc-bugs



-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.4.4                       |4.3.6


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


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

* [Bug middle-end/42898] [4.3/4.4/4.5 Regression] volatile structures and compound literal initializers
  2010-01-29 19:27 [Bug c/42898] New: Problem initializing volatile structures gandalf at winds dot org
                   ` (2 preceding siblings ...)
  2010-01-29 22:42 ` rguenth at gcc dot gnu dot org
@ 2010-01-29 22:42 ` rguenth at gcc dot gnu dot org
  2010-01-30 18:09 ` rguenth at gcc dot gnu dot org
                   ` (19 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-01-29 22:42 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from rguenth at gcc dot gnu dot org  2010-01-29 22:42 -------
I will have a look.


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |rguenth at gcc dot gnu dot
                   |dot org                     |org
             Status|NEW                         |ASSIGNED
   Last reconfirmed|2010-01-29 19:38:02         |2010-01-29 22:42:15
               date|                            |


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


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

* [Bug middle-end/42898] [4.3/4.4/4.5 Regression] volatile structures and compound literal initializers
  2010-01-29 19:27 [Bug c/42898] New: Problem initializing volatile structures gandalf at winds dot org
                   ` (3 preceding siblings ...)
  2010-01-29 22:42 ` rguenth at gcc dot gnu dot org
@ 2010-01-30 18:09 ` rguenth at gcc dot gnu dot org
  2010-01-30 18:17 ` rguenth at gcc dot gnu dot org
                   ` (18 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-01-30 18:09 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from rguenth at gcc dot gnu dot org  2010-01-30 18:08 -------
Martin - we recently regressed here due to SRA.  Even for f2 we now decompose
the assigment to *ptr, even though that will create extra volatile accesses.

I have a patch for the gimplifier bits (to be attached).


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jamborm at gcc dot gnu dot
                   |                            |org


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


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

* [Bug middle-end/42898] [4.3/4.4/4.5 Regression] volatile structures and compound literal initializers
  2010-01-29 19:27 [Bug c/42898] New: Problem initializing volatile structures gandalf at winds dot org
                   ` (4 preceding siblings ...)
  2010-01-30 18:09 ` rguenth at gcc dot gnu dot org
@ 2010-01-30 18:17 ` rguenth at gcc dot gnu dot org
  2010-01-30 20:56 ` gandalf at winds dot org
                   ` (17 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-01-30 18:17 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #5 from rguenth at gcc dot gnu dot org  2010-01-30 18:17 -------
Created an attachment (id=19759)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=19759&action=view)
patch


-- 


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


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

* [Bug middle-end/42898] [4.3/4.4/4.5 Regression] volatile structures and compound literal initializers
  2010-01-29 19:27 [Bug c/42898] New: Problem initializing volatile structures gandalf at winds dot org
                   ` (5 preceding siblings ...)
  2010-01-30 18:17 ` rguenth at gcc dot gnu dot org
@ 2010-01-30 20:56 ` gandalf at winds dot org
  2010-01-30 21:25 ` rguenther at suse dot de
                   ` (16 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: gandalf at winds dot org @ 2010-01-30 20:56 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #6 from gandalf at winds dot org  2010-01-30 20:56 -------
The patch provided fixes this issue and brings the original GCC 4.2.2 behavior
back.

Thanks so much for your quick response!


-- 


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


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

* [Bug middle-end/42898] [4.3/4.4/4.5 Regression] volatile structures and compound literal initializers
  2010-01-29 19:27 [Bug c/42898] New: Problem initializing volatile structures gandalf at winds dot org
                   ` (6 preceding siblings ...)
  2010-01-30 20:56 ` gandalf at winds dot org
@ 2010-01-30 21:25 ` rguenther at suse dot de
  2010-01-31 17:02 ` rguenth at gcc dot gnu dot org
                   ` (15 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: rguenther at suse dot de @ 2010-01-30 21:25 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #7 from rguenther at suse dot de  2010-01-30 21:25 -------
Subject: Re:  [4.3/4.4/4.5 Regression] volatile structures
 and compound literal initializers

On Sat, 30 Jan 2010, gandalf at winds dot org wrote:

> ------- Comment #6 from gandalf at winds dot org  2010-01-30 20:56 -------
> The patch provided fixes this issue and brings the original GCC 4.2.2 behavior
> back.

Not yet for 4.5 though.

Richard.

> Thanks so much for your quick response!


-- 


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


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

* [Bug middle-end/42898] [4.3/4.4/4.5 Regression] volatile structures and compound literal initializers
  2010-01-29 19:27 [Bug c/42898] New: Problem initializing volatile structures gandalf at winds dot org
                   ` (7 preceding siblings ...)
  2010-01-30 21:25 ` rguenther at suse dot de
@ 2010-01-31 17:02 ` rguenth at gcc dot gnu dot org
  2010-01-31 17:04 ` rguenth at gcc dot gnu dot org
                   ` (14 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-01-31 17:02 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #8 from rguenth at gcc dot gnu dot org  2010-01-31 17:01 -------
Subject: Bug 42898

Author: rguenth
Date: Sun Jan 31 17:01:38 2010
New Revision: 156404

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=156404
Log:
2010-01-31  Richard Guenther  <rguenther@suse.de>

        PR middle-end/42898
        * gimplify.c (gimplify_init_constructor): For volatile LHS
        initialize a temporary.

        * gcc.dg/torture/pr42898.c: New testcase.

Added:
    trunk/gcc/testsuite/gcc.dg/torture/pr42898.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/gimplify.c
    trunk/gcc/testsuite/ChangeLog


-- 


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


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

* [Bug middle-end/42898] [4.3/4.4/4.5 Regression] volatile structures and compound literal initializers
  2010-01-29 19:27 [Bug c/42898] New: Problem initializing volatile structures gandalf at winds dot org
                   ` (8 preceding siblings ...)
  2010-01-31 17:02 ` rguenth at gcc dot gnu dot org
@ 2010-01-31 17:04 ` rguenth at gcc dot gnu dot org
  2010-01-31 17:07 ` rguenth at gcc dot gnu dot org
                   ` (13 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-01-31 17:04 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #9 from rguenth at gcc dot gnu dot org  2010-01-31 17:04 -------
Subject: Bug 42898

Author: rguenth
Date: Sun Jan 31 17:04:29 2010
New Revision: 156405

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=156405
Log:
2010-01-31  Richard Guenther  <rguenther@suse.de>

        PR middle-end/42898
        * gimplify.c (gimplify_init_constructor): For volatile LHS
        initialize a temporary.

        * gcc.dg/torture/pr42898.c: New testcase.

Added:
    branches/gcc-4_4-branch/gcc/testsuite/gcc.dg/torture/pr42898.c
Modified:
    branches/gcc-4_4-branch/gcc/ChangeLog
    branches/gcc-4_4-branch/gcc/gimplify.c
    branches/gcc-4_4-branch/gcc/testsuite/ChangeLog


-- 


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


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

* [Bug middle-end/42898] [4.3/4.4/4.5 Regression] volatile structures and compound literal initializers
  2010-01-29 19:27 [Bug c/42898] New: Problem initializing volatile structures gandalf at winds dot org
                   ` (9 preceding siblings ...)
  2010-01-31 17:04 ` rguenth at gcc dot gnu dot org
@ 2010-01-31 17:07 ` rguenth at gcc dot gnu dot org
  2010-01-31 17:09 ` [Bug middle-end/42898] [4.5 " rguenth at gcc dot gnu dot org
                   ` (12 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-01-31 17:07 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #10 from rguenth at gcc dot gnu dot org  2010-01-31 17:07 -------
Subject: Bug 42898

Author: rguenth
Date: Sun Jan 31 17:07:16 2010
New Revision: 156407

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=156407
Log:
2010-01-31  Richard Guenther  <rguenther@suse.de>

        PR middle-end/42898
        * gimplify.c (gimplify_init_constructor): For volatile LHS
        initialize a temporary.

        * gcc.dg/torture/pr42898.c: New testcase.

Added:
    branches/gcc-4_3-branch/gcc/testsuite/gcc.dg/torture/pr42898.c
Modified:
    branches/gcc-4_3-branch/gcc/ChangeLog
    branches/gcc-4_3-branch/gcc/gimplify.c
    branches/gcc-4_3-branch/gcc/testsuite/ChangeLog


-- 


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


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

* [Bug middle-end/42898] [4.5 Regression] volatile structures and compound literal initializers
  2010-01-29 19:27 [Bug c/42898] New: Problem initializing volatile structures gandalf at winds dot org
                   ` (10 preceding siblings ...)
  2010-01-31 17:07 ` rguenth at gcc dot gnu dot org
@ 2010-01-31 17:09 ` rguenth at gcc dot gnu dot org
  2010-01-31 20:01 ` ebotcazou at gcc dot gnu dot org
                   ` (11 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-01-31 17:09 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #11 from rguenth at gcc dot gnu dot org  2010-01-31 17:08 -------
Fixed on the branches.  Trunk is still broken because of SRA, reassigning to
Martin for that.


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|rguenth at gcc dot gnu dot  |jamborm at gcc dot gnu dot
                   |org                         |org
      Known to work|                            |4.3.5 4.4.4
            Summary|[4.3/4.4/4.5 Regression]    |[4.5 Regression] volatile
                   |volatile structures and     |structures and compound
                   |compound literal            |literal initializers
                   |initializers                |
   Target Milestone|4.3.6                       |4.3.5


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


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

* [Bug middle-end/42898] [4.5 Regression] volatile structures and compound literal initializers
  2010-01-29 19:27 [Bug c/42898] New: Problem initializing volatile structures gandalf at winds dot org
                   ` (11 preceding siblings ...)
  2010-01-31 17:09 ` [Bug middle-end/42898] [4.5 " rguenth at gcc dot gnu dot org
@ 2010-01-31 20:01 ` ebotcazou at gcc dot gnu dot org
  2010-01-31 21:06 ` ebotcazou at gcc dot gnu dot org
                   ` (10 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: ebotcazou at gcc dot gnu dot org @ 2010-01-31 20:01 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #12 from ebotcazou at gcc dot gnu dot org  2010-01-31 20:01 -------
Subject: Bug 42898

Author: ebotcazou
Date: Sun Jan 31 20:00:54 2010
New Revision: 156414

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=156414
Log:
        PR middle-end/42898
        * gcc.dg/torture/pr42898-2.c: New test.

Added:
    trunk/gcc/testsuite/gcc.dg/torture/pr42898-2.c
Modified:
    trunk/gcc/testsuite/ChangeLog


-- 


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


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

* [Bug middle-end/42898] [4.5 Regression] volatile structures and compound literal initializers
  2010-01-29 19:27 [Bug c/42898] New: Problem initializing volatile structures gandalf at winds dot org
                   ` (12 preceding siblings ...)
  2010-01-31 20:01 ` ebotcazou at gcc dot gnu dot org
@ 2010-01-31 21:06 ` ebotcazou at gcc dot gnu dot org
  2010-01-31 21:08 ` ebotcazou at gcc dot gnu dot org
                   ` (9 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: ebotcazou at gcc dot gnu dot org @ 2010-01-31 21:06 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #13 from ebotcazou at gcc dot gnu dot org  2010-01-31 21:06 -------
Subject: Bug 42898

Author: ebotcazou
Date: Sun Jan 31 21:06:20 2010
New Revision: 156415

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=156415
Log:
        PR middle-end/42898
        Backport from mainline:
        2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>

        * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
        assignment from the constructor either if the target is volatile.

Added:
    branches/gcc-4_4-branch/gcc/testsuite/gcc.dg/torture/pr42898-2.c
Modified:
    branches/gcc-4_4-branch/gcc/ChangeLog
    branches/gcc-4_4-branch/gcc/gimplify.c
    branches/gcc-4_4-branch/gcc/testsuite/ChangeLog


-- 


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


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

* [Bug middle-end/42898] [4.5 Regression] volatile structures and compound literal initializers
  2010-01-29 19:27 [Bug c/42898] New: Problem initializing volatile structures gandalf at winds dot org
                   ` (13 preceding siblings ...)
  2010-01-31 21:06 ` ebotcazou at gcc dot gnu dot org
@ 2010-01-31 21:08 ` ebotcazou at gcc dot gnu dot org
  2010-02-01  1:47 ` howarth at nitro dot med dot uc dot edu
                   ` (8 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: ebotcazou at gcc dot gnu dot org @ 2010-01-31 21:08 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #14 from ebotcazou at gcc dot gnu dot org  2010-01-31 21:08 -------
Subject: Bug 42898

Author: ebotcazou
Date: Sun Jan 31 21:08:15 2010
New Revision: 156416

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=156416
Log:
2010-01-31  Eric Botcazou  <ebotcazou@adacore.com>

        PR middle-end/42898
        Backport from mainline:
        2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>

        * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
        assignment from the constructor either if the target is volatile.

Added:
    branches/gcc-4_3-branch/gcc/testsuite/gcc.dg/torture/pr42898-2.c
Modified:
    branches/gcc-4_3-branch/gcc/ChangeLog
    branches/gcc-4_3-branch/gcc/gimplify.c
    branches/gcc-4_3-branch/gcc/testsuite/ChangeLog


-- 


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


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

* [Bug middle-end/42898] [4.5 Regression] volatile structures and compound literal initializers
  2010-01-29 19:27 [Bug c/42898] New: Problem initializing volatile structures gandalf at winds dot org
                   ` (14 preceding siblings ...)
  2010-01-31 21:08 ` ebotcazou at gcc dot gnu dot org
@ 2010-02-01  1:47 ` howarth at nitro dot med dot uc dot edu
  2010-02-01  1:51 ` howarth at nitro dot med dot uc dot edu
                   ` (7 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: howarth at nitro dot med dot uc dot edu @ 2010-02-01  1:47 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #15 from howarth at nitro dot med dot uc dot edu  2010-02-01 01:47 -------
The new gcc.dg/torture/pr42898.c fails on x86_64-apple-darwin10...

FAIL: gcc.dg/torture/pr42898.c  -O1  scan-tree-dump-times optimized "\*ptr" 1
FAIL: gcc.dg/torture/pr42898.c  -O2  scan-tree-dump-times optimized "\*ptr" 1
FAIL: gcc.dg/torture/pr42898.c  -O3 -fomit-frame-pointer  scan-tree-dump-times
optimized "\*ptr" 1
FAIL: gcc.dg/torture/pr42898.c  -O3 -g  scan-tree-dump-times optimized "\*ptr"
1
FAIL: gcc.dg/torture/pr42898.c  -Os  scan-tree-dump-times optimized "\*ptr" 1


-- 


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


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

* [Bug middle-end/42898] [4.5 Regression] volatile structures and compound literal initializers
  2010-01-29 19:27 [Bug c/42898] New: Problem initializing volatile structures gandalf at winds dot org
                   ` (15 preceding siblings ...)
  2010-02-01  1:47 ` howarth at nitro dot med dot uc dot edu
@ 2010-02-01  1:51 ` howarth at nitro dot med dot uc dot edu
  2010-02-01  1:54 ` howarth at nitro dot med dot uc dot edu
                   ` (6 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: howarth at nitro dot med dot uc dot edu @ 2010-02-01  1:51 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #16 from howarth at nitro dot med dot uc dot edu  2010-02-01 01:50 -------
Created an attachment (id=19772)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=19772&action=view)
assembly for gcc.dg/torture/pr42898.c  -O1 on x86_64-apple-darwin10

/sw/src/fink.build/gcc45-4.4.999-20100131/darwin_objdir/gcc/xgcc
-B/sw/src/fink.build/gcc45-4.4.999-20100131/darwin_objdir/gcc/
/sw/src/fink.build/gcc45-4.4.999-20100131/gcc-4.5-20100131/gcc/testsuite/gcc.dg/torture/pr42898.c
-O1 -fdump-tree-optimized -S -o pr42898.s


-- 


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


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

* [Bug middle-end/42898] [4.5 Regression] volatile structures and compound literal initializers
  2010-01-29 19:27 [Bug c/42898] New: Problem initializing volatile structures gandalf at winds dot org
                   ` (16 preceding siblings ...)
  2010-02-01  1:51 ` howarth at nitro dot med dot uc dot edu
@ 2010-02-01  1:54 ` howarth at nitro dot med dot uc dot edu
  2010-02-01  3:13 ` matz at gcc dot gnu dot org
                   ` (5 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: howarth at nitro dot med dot uc dot edu @ 2010-02-01  1:54 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #17 from howarth at nitro dot med dot uc dot edu  2010-02-01 01:54 -------
Created an attachment (id=19773)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=19773&action=view)
.optimized for gcc.dg/torture/pr42898.c  -O1 on x86_64-apple-darwin10


-- 


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


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

* [Bug middle-end/42898] [4.5 Regression] volatile structures and compound literal initializers
  2010-01-29 19:27 [Bug c/42898] New: Problem initializing volatile structures gandalf at winds dot org
                   ` (17 preceding siblings ...)
  2010-02-01  1:54 ` howarth at nitro dot med dot uc dot edu
@ 2010-02-01  3:13 ` matz at gcc dot gnu dot org
  2010-02-02 13:31 ` rguenth at gcc dot gnu dot org
                   ` (4 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: matz at gcc dot gnu dot org @ 2010-02-01  3:13 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #18 from matz at gcc dot gnu dot org  2010-02-01 03:13 -------
See comment #11


-- 


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


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

* [Bug middle-end/42898] [4.5 Regression] volatile structures and compound literal initializers
  2010-01-29 19:27 [Bug c/42898] New: Problem initializing volatile structures gandalf at winds dot org
                   ` (18 preceding siblings ...)
  2010-02-01  3:13 ` matz at gcc dot gnu dot org
@ 2010-02-02 13:31 ` rguenth at gcc dot gnu dot org
  2010-02-05 14:40 ` jamborm at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-02-02 13:31 UTC (permalink / raw)
  To: gcc-bugs



-- 

rguenth at gcc dot gnu dot org changed:

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


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


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

* [Bug middle-end/42898] [4.5 Regression] volatile structures and compound literal initializers
  2010-01-29 19:27 [Bug c/42898] New: Problem initializing volatile structures gandalf at winds dot org
                   ` (19 preceding siblings ...)
  2010-02-02 13:31 ` rguenth at gcc dot gnu dot org
@ 2010-02-05 14:40 ` jamborm at gcc dot gnu dot org
  2010-02-08 13:24 ` jamborm at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: jamborm at gcc dot gnu dot org @ 2010-02-05 14:40 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #19 from jamborm at gcc dot gnu dot org  2010-02-05 14:40 -------
Created an attachment (id=19807)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=19807&action=view)
Patch disallowing piecemeal and total scalarization in presence of volatile ops

I'm currently bootstrapping and testing this patch.


-- 


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


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

* [Bug middle-end/42898] [4.5 Regression] volatile structures and compound literal initializers
  2010-01-29 19:27 [Bug c/42898] New: Problem initializing volatile structures gandalf at winds dot org
                   ` (20 preceding siblings ...)
  2010-02-05 14:40 ` jamborm at gcc dot gnu dot org
@ 2010-02-08 13:24 ` jamborm at gcc dot gnu dot org
  2010-02-08 13:32 ` jamborm at gcc dot gnu dot org
  2010-02-08 22:36 ` pinskia at gcc dot gnu dot org
  23 siblings, 0 replies; 25+ messages in thread
From: jamborm at gcc dot gnu dot org @ 2010-02-08 13:24 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #20 from jamborm at gcc dot gnu dot org  2010-02-08 13:24 -------
Subject: Bug 42898

Author: jamborm
Date: Mon Feb  8 13:24:12 2010
New Revision: 156599

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=156599
Log:
2010-02-08  Martin Jambor  <mjambor@suse.cz>

        PR middle-end/42898
        * tree-sra.c (build_accesses_from_assign): Do not mark in
        should_scalarize_away_bitmap if stmt has volatile ops.
        (sra_modify_assign): Do not process assigns piecemeal if if stmt
        has volatile ops.


Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/tree-sra.c


-- 


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


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

* [Bug middle-end/42898] [4.5 Regression] volatile structures and compound literal initializers
  2010-01-29 19:27 [Bug c/42898] New: Problem initializing volatile structures gandalf at winds dot org
                   ` (21 preceding siblings ...)
  2010-02-08 13:24 ` jamborm at gcc dot gnu dot org
@ 2010-02-08 13:32 ` jamborm at gcc dot gnu dot org
  2010-02-08 22:36 ` pinskia at gcc dot gnu dot org
  23 siblings, 0 replies; 25+ messages in thread
From: jamborm at gcc dot gnu dot org @ 2010-02-08 13:32 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #21 from jamborm at gcc dot gnu dot org  2010-02-08 13:31 -------
The testcase now passes.  The issue is fixed.


-- 

jamborm at gcc dot gnu dot org changed:

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


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


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

* [Bug middle-end/42898] [4.5 Regression] volatile structures and compound literal initializers
  2010-01-29 19:27 [Bug c/42898] New: Problem initializing volatile structures gandalf at winds dot org
                   ` (22 preceding siblings ...)
  2010-02-08 13:32 ` jamborm at gcc dot gnu dot org
@ 2010-02-08 22:36 ` pinskia at gcc dot gnu dot org
  23 siblings, 0 replies; 25+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2010-02-08 22:36 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #22 from pinskia at gcc dot gnu dot org  2010-02-08 22:36 -------
*** Bug 43003 has been marked as a duplicate of this bug. ***


-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |zoltan at bendor dot com dot
                   |                            |au


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


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

end of thread, other threads:[~2010-02-08 22:36 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-01-29 19:27 [Bug c/42898] New: Problem initializing volatile structures gandalf at winds dot org
2010-01-29 19:38 ` [Bug c/42898] [4.3/4.4/4.5 Regression] volatile structures and compound literals pinskia at gcc dot gnu dot org
2010-01-29 22:42 ` [Bug middle-end/42898] [4.3/4.4/4.5 Regression] volatile structures and compound literal initializers rguenth at gcc dot gnu dot org
2010-01-29 22:42 ` rguenth at gcc dot gnu dot org
2010-01-29 22:42 ` rguenth at gcc dot gnu dot org
2010-01-30 18:09 ` rguenth at gcc dot gnu dot org
2010-01-30 18:17 ` rguenth at gcc dot gnu dot org
2010-01-30 20:56 ` gandalf at winds dot org
2010-01-30 21:25 ` rguenther at suse dot de
2010-01-31 17:02 ` rguenth at gcc dot gnu dot org
2010-01-31 17:04 ` rguenth at gcc dot gnu dot org
2010-01-31 17:07 ` rguenth at gcc dot gnu dot org
2010-01-31 17:09 ` [Bug middle-end/42898] [4.5 " rguenth at gcc dot gnu dot org
2010-01-31 20:01 ` ebotcazou at gcc dot gnu dot org
2010-01-31 21:06 ` ebotcazou at gcc dot gnu dot org
2010-01-31 21:08 ` ebotcazou at gcc dot gnu dot org
2010-02-01  1:47 ` howarth at nitro dot med dot uc dot edu
2010-02-01  1:51 ` howarth at nitro dot med dot uc dot edu
2010-02-01  1:54 ` howarth at nitro dot med dot uc dot edu
2010-02-01  3:13 ` matz at gcc dot gnu dot org
2010-02-02 13:31 ` rguenth at gcc dot gnu dot org
2010-02-05 14:40 ` jamborm at gcc dot gnu dot org
2010-02-08 13:24 ` jamborm at gcc dot gnu dot org
2010-02-08 13:32 ` jamborm at gcc dot gnu dot org
2010-02-08 22:36 ` 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).