public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug rtl-optimization/63483] New: Scheduler performs Invalid move of aliased memory reference
@ 2014-10-08 8:26 ubizjak at gmail dot com
2014-10-08 8:34 ` [Bug rtl-optimization/63483] " ubizjak at gmail dot com
` (16 more replies)
0 siblings, 17 replies; 18+ messages in thread
From: ubizjak at gmail dot com @ 2014-10-08 8:26 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63483
Bug ID: 63483
Summary: Scheduler performs Invalid move of aliased memory
reference
Product: gcc
Version: 5.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: rtl-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: ubizjak at gmail dot com
CC: rguenth at gcc dot gnu.org, rth at gcc dot gnu.org
The original problem is present in [1], and can be illustrated by following
test on alpha-linux-gnu:
--cut here--
static char *a;
static char *b;
void foo (void)
{
a[1] = 1;
b[2] = 1;
}
int bar (void)
{
return a && b;
}
--cut here--
The compilation with -O2 produces:
$foo..ng:
.prologue 1
lda $1,1($31)
lda $2,a
ldq $3,0($2) <-- load a
lda $2,b
lda $7,1($3)
ldq_u $5,1($3) <-- load a
insbl $1,$7,$4
ldq $2,0($2) <-- load b
mskbl $5,$7,$5
lda $6,2($2)
bis $4,$5,$4
stq_u $4,1($3) <-- store a
insbl $1,$6,$1
ldq_u $3,2($2) <-- load b
mskbl $3,$6,$3
cpys $f31,$f31,$f31
bis $1,$3,$1
stq_u $1,2($2) <-- store b
ret $31,($26),1
.end foo
if a and b alias to the same wide memory location, then "b" RMW
sequence corrupts "a".
There is am early shortcut for MEM_READOLNY_P in true_dependence_1 in alias.c.
For the testcase above:
(insn 15 13 18 2 (set (reg/f:DI 78 [ b ])
(mem/u/f/c:DI (reg/f:DI 79) [2 b+0 S8 A64])) rmw.c:7 226 {*movdi}
(expr_list:REG_DEAD (reg/f:DI 79)
(nil)))
is free to be scheduled before
(insn 13 12 15 2 (set (mem:DI (and:DI (plus:DI (reg/f:DI 72 [ a ])
(const_int 1 [0x1]))
(const_int -8 [0xfffffffffffffff8])) [0 S8 A64])
(reg:DI 77)) rmw.c:6 226 {*movdi}
(expr_list:REG_DEAD (reg:DI 77)
(expr_list:REG_DEAD (reg/f:DI 72 [ a ])
(nil))))
rth explained situation on alpha a bit:
--quote--
It's not the loads, per se, it's the stores that get in the way.
Early alpha can't store sub-4-byte quantities. Altivec can't store anything
but 16 byte quantities. In order to perform smaller stores, we have to do a
read-modify-write sequence on a larger aligned chunk of memory. Two such RMW
sequences must conflict, lest we interleave and thus bork the operation.
I don't recall how much we ever did for this, exactly, but it's certainly
possible to know that some memory operations cannot conflict with these RMW
sequence. E.g. through size + alignment of the other memory operation. E.g.
on Alpha, a byte RMW store can't conflict with a normal DImode memory access.
--/quote--
And:
> Btw, if the mem is MEM_READONLY_P how can it be part of
> a {un}aligned_store sequence?
This flag is copied from the original memory operand of the store by
alpha_set_memflags to all memory operands in the expanded sequence.
[1] https://gcc.gnu.org/ml/gcc-patches/2014-06/msg02251.html
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug rtl-optimization/63483] Scheduler performs Invalid move of aliased memory reference
2014-10-08 8:26 [Bug rtl-optimization/63483] New: Scheduler performs Invalid move of aliased memory reference ubizjak at gmail dot com
@ 2014-10-08 8:34 ` ubizjak at gmail dot com
2014-10-08 9:05 ` ubizjak at gmail dot com
` (15 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: ubizjak at gmail dot com @ 2014-10-08 8:34 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63483
--- Comment #1 from Uroš Bizjak <ubizjak at gmail dot com> ---
$foo..ng:
.prologue 1
lda $1,1($31) # 7 *movqi/2 [length = 4]
lda $2,a # 27 *movdi/7 [length = 4]
ldq $3,0($2) # 6 *movdi/8 [length = 4]
lda $2,b # 26 *movdi/7 [length = 4]
lda $7,1($3) # 9 *adddi_internal/2 [length = 4]
ldq_u $5,1($3) # 8 *movdi/8 [length = 4]
insbl $1,$7,$4 # 11 insbl [length = 4]
ldq $2,0($2) # 15 *movdi/8 [length = 4]
mskbl $5,$7,$5 # 10 mskxl [length = 4]
lda $6,2($2) # 18 *adddi_internal/2 [length = 4]
bis $4,$5,$4 # 12 iordi3/1 [length = 4]
stq_u $4,1($3) # 13 *movdi/9 [length = 4]
insbl $1,$6,$1 # 20 insbl [length = 4]
ldq_u $3,2($2) # 17 *movdi/8 [length = 4]
mskbl $3,$6,$3 # 19 mskxl [length = 4]
cpys $f31,$f31,$f31 # 35 fnop [length = 4]
bis $1,$3,$1 # 21 iordi3/1 [length = 4]
stq_u $1,2($2) # 22 *movdi/9 [length = 4]
ret $31,($26),1 # 34 *return_internal [length = 4]
.end foo
Before sched1 pass, we have:
5: r73:DI=`a'
6: r72:DI=[r73:DI]
REG_DEAD r73:DI
7: r74:QI=0x1
8: r76:DI=[r72:DI+0x1&0xfffffffffffffff8]
9: r75:DI=r72:DI+0x1
10: r76:DI=!0xff<<r75:DI<<0x3&r76:DI
11: r77:DI=zero_extend(r74:QI)<<r75:DI<<0x3
REG_DEAD r75:DI
REG_EQUAL 0x1<<r75:DI<<0x3
12: r77:DI=r77:DI|r76:DI
REG_DEAD r76:DI
13: [r72:DI+0x1&0xfffffffffffffff8]=r77:DI
REG_DEAD r77:DI
REG_DEAD r72:DI
14: r79:DI=`b'
15: r78:DI=[r79:DI]
REG_DEAD r79:DI
17: r82:DI=[r78:DI+0x2&0xfffffffffffffff8]
18: r81:DI=r78:DI+0x2
19: r82:DI=!0xff<<r81:DI<<0x3&r82:DI
20: r83:DI=zero_extend(r74:QI)<<r81:DI<<0x3
REG_DEAD r81:DI
REG_DEAD r74:QI
REG_EQUAL 0x1<<r81:DI<<0x3
21: r83:DI=r83:DI|r82:DI
REG_DEAD r82:DI
22: [r78:DI+0x2&0xfffffffffffffff8]=r83:DI
REG_DEAD r83:DI
REG_DEAD r78:DI
Please see (insn 15) going to the top in sched1 pass:
5: r73:DI=`a'
7: r74:QI=0x1
14: r79:DI=`b'
6: r72:DI=[r73:DI]
REG_DEAD r73:DI
15: r78:DI=[r79:DI]
REG_DEAD r79:DI
9: r75:DI=r72:DI+0x1
8: r76:DI=[r72:DI+0x1&0xfffffffffffffff8]
11: r77:DI=zero_extend(r74:QI)<<r75:DI<<0x3
REG_DEAD r75:DI
REG_EQUAL 0x1<<r75:DI<<0x3
18: r81:DI=r78:DI+0x2
10: r76:DI=!0xff<<r75:DI<<0x3&r76:DI
20: r83:DI=zero_extend(r74:QI)<<r81:DI<<0x3
REG_DEAD r81:DI
REG_DEAD r74:QI
REG_EQUAL 0x1<<r81:DI<<0x3
12: r77:DI=r77:DI|r76:DI
REG_DEAD r76:DI
13: [r72:DI+0x1&0xfffffffffffffff8]=r77:DI
REG_DEAD r77:DI
REG_DEAD r72:DI
17: r82:DI=[r78:DI+0x2&0xfffffffffffffff8]
19: r82:DI=!0xff<<r81:DI<<0x3&r82:DI
21: r83:DI=r83:DI|r82:DI
REG_DEAD r82:DI
22: [r78:DI+0x2&0xfffffffffffffff8]=r83:DI
REG_DEAD r83:DI
REG_DEAD r78:DI
25: NOTE_INSN_DELETED
>From gcc-bugs-return-463528-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Wed Oct 08 08:40:50 2014
Return-Path: <gcc-bugs-return-463528-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 15914 invoked by alias); 8 Oct 2014 08:40:50 -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 15860 invoked by uid 48); 8 Oct 2014 08:40:46 -0000
From: "ubizjak at gmail dot com" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug rtl-optimization/63483] Scheduler performs Invalid move of aliased memory reference
Date: Wed, 08 Oct 2014 08:40:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: rtl-optimization
X-Bugzilla-Version: 5.0
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: ubizjak at gmail dot com
X-Bugzilla-Status: UNCONFIRMED
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: attachments.created
Message-ID: <bug-63483-4-1MKrrpWnE1@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-63483-4@http.gcc.gnu.org/bugzilla/>
References: <bug-63483-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-10/txt/msg00549.txt.bz2
Content-length: 516
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63483
--- Comment #2 from Uroš Bizjak <ubizjak at gmail dot com> ---
Created attachment 33665
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=33665&action=edit
Proposed patch
Proposed patch prevents MEM_READONLY_P memory references to be moved over
possibly aliased memory (with alignment ANDs). The patch prevents early exit
for MEM_READONLY_P references when alignemt ANDs are involved. The aliasing is
determined in the code later in the function.
>From gcc-bugs-return-463529-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Wed Oct 08 08:44:33 2014
Return-Path: <gcc-bugs-return-463529-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 20102 invoked by alias); 8 Oct 2014 08:44:33 -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 20051 invoked by uid 48); 8 Oct 2014 08:44:27 -0000
From: "ubizjak at gmail dot com" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug rtl-optimization/63483] Scheduler performs Invalid move of aliased memory reference
Date: Wed, 08 Oct 2014 08:44:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: rtl-optimization
X-Bugzilla-Version: 5.0
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: ubizjak at gmail dot com
X-Bugzilla-Status: UNCONFIRMED
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-63483-4-i0rzbmzAb1@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-63483-4@http.gcc.gnu.org/bugzilla/>
References: <bug-63483-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-10/txt/msg00550.txt.bz2
Content-length: 2471
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63483
--- Comment #3 from Uroš Bizjak <ubizjak at gmail dot com> ---
The patched compiler creates prevents scheduler to move "unchanging" reference
over possibly aliasing memory:
7: r74:QI=0x1
5: r73:DI=`a'
14: r79:DI=`b'
6: r72:DI=[r73:DI]
REG_DEAD r73:DI
9: r75:DI=r72:DI+0x1
8: r76:DI=[r72:DI+0x1&0xfffffffffffffff8]
11: r77:DI=zero_extend(r74:QI)<<r75:DI<<0x3
REG_DEAD r75:DI
REG_EQUAL 0x1<<r75:DI<<0x3
10: r76:DI=!0xff<<r75:DI<<0x3&r76:DI
12: r77:DI=r77:DI|r76:DI
REG_DEAD r76:DI
13: [r72:DI+0x1&0xfffffffffffffff8]=r77:DI
REG_DEAD r77:DI
REG_DEAD r72:DI
15: r78:DI=[r79:DI]
REG_DEAD r79:DI
18: r81:DI=r78:DI+0x2
17: r82:DI=[r78:DI+0x2&0xfffffffffffffff8]
20: r83:DI=zero_extend(r74:QI)<<r81:DI<<0x3
REG_DEAD r81:DI
REG_DEAD r74:QI
REG_EQUAL 0x1<<r81:DI<<0x3
19: r82:DI=!0xff<<r81:DI<<0x3&r82:DI
21: r83:DI=r83:DI|r82:DI
REG_DEAD r82:DI
22: [r78:DI+0x2&0xfffffffffffffff8]=r83:DI
REG_DEAD r83:DI
REG_DEAD r78:DI
25: NOTE_INSN_DELETED
which results in:
$foo..ng:
.prologue 1
lda $1,1($31) # 7 *movqi/2 [length = 4]
lda $2,a # 5 *movdi/7 [length = 4]
ldq $2,0($2) # 6 *movdi/8 [length = 4]
bis $31,$31,$31 # 34 nop [length = 4]
lda $5,1($2) # 9 *adddi_internal/2 [length = 4]
ldq_u $4,1($2) # 8 *movdi/8 [length = 4]
insbl $1,$5,$3 # 11 insbl [length = 4]
mskbl $4,$5,$4 # 10 mskxl [length = 4]
bis $3,$4,$3 # 12 iordi3/1 [length = 4]
stq_u $3,1($2) # 13 *movdi/9 [length = 4]
lda $2,b # 26 *movdi/7 [length = 4]
ldq $2,0($2) # 15 *movdi/8 [length = 4]
lda $4,2($2) # 18 *adddi_internal/2 [length = 4]
ldq_u $3,2($2) # 17 *movdi/8 [length = 4]
insbl $1,$4,$1 # 20 insbl [length = 4]
mskbl $3,$4,$3 # 19 mskxl [length = 4]
bis $1,$3,$1 # 21 iordi3/1 [length = 4]
stq_u $1,2($2) # 22 *movdi/9 [length = 4]
ret $31,($26),1 # 33 *return_internal [length = 4]
.end foo
e.g. (insn 15) stays after possibly aliasing (insn 13).
>From gcc-bugs-return-463530-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Wed Oct 08 09:03:41 2014
Return-Path: <gcc-bugs-return-463530-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 15969 invoked by alias); 8 Oct 2014 09:03:41 -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 15838 invoked by uid 48); 8 Oct 2014 09:03:37 -0000
From: "ebotcazou at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug tree-optimization/63445] [5 Regression] request: make -Wstrict-overflow avoid a class of false positives
Date: Wed, 08 Oct 2014 09:03:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: tree-optimization
X-Bugzilla-Version: 5.0
X-Bugzilla-Keywords: diagnostic
X-Bugzilla-Severity: normal
X-Bugzilla-Who: ebotcazou 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: 5.0
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields:
Message-ID: <bug-63445-4-nLkLNgb8QO@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-63445-4@http.gcc.gnu.org/bugzilla/>
References: <bug-63445-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-10/txt/msg00551.txt.bz2
Content-length: 517
https://gcc.gnu.org/bugzilla/show_bug.cgi?idc445
--- Comment #7 from Eric Botcazou <ebotcazou at gcc dot gnu.org> ---
> The range of n_7 is suboptimal and the test on _6 can be eliminated.
The previous enhancement was apparently:
2010-04-06 Richard Guenther <rguenther@suse.de>
PR tree-optimization/43627
* tree-vrp.c (extract_range_from_unary_expr): Widenings
of [1, +INF(OVF)] go to [1, +INF(OVF)] of the wider type,
not varying.
but it didn't go far enough for this case.
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug rtl-optimization/63483] Scheduler performs Invalid move of aliased memory reference
2014-10-08 8:26 [Bug rtl-optimization/63483] New: Scheduler performs Invalid move of aliased memory reference ubizjak at gmail dot com
2014-10-08 8:34 ` [Bug rtl-optimization/63483] " ubizjak at gmail dot com
@ 2014-10-08 9:05 ` ubizjak at gmail dot com
2014-10-08 10:49 ` [Bug target/63483] " rguenth at gcc dot gnu.org
` (14 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: ubizjak at gmail dot com @ 2014-10-08 9:05 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63483
--- Comment #4 from Uroš Bizjak <ubizjak at gmail dot com> ---
Patch at [1].
[1] https://gcc.gnu.org/ml/gcc-patches/2014-10/msg00625.html
>From gcc-bugs-return-463532-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Wed Oct 08 09:05:34 2014
Return-Path: <gcc-bugs-return-463532-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 19024 invoked by alias); 8 Oct 2014 09:05:34 -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 18984 invoked by uid 48); 8 Oct 2014 09:05:30 -0000
From: "ubizjak at gmail dot com" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug rtl-optimization/63483] Scheduler performs Invalid move of aliased memory reference
Date: Wed, 08 Oct 2014 09:05:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: rtl-optimization
X-Bugzilla-Version: 5.0
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: ubizjak at gmail dot com
X-Bugzilla-Status: ASSIGNED
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: ubizjak at gmail dot com
X-Bugzilla-Target-Milestone: ---
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields: bug_status cf_reconfirmed_on assigned_to everconfirmed
Message-ID: <bug-63483-4-n2UsLnKMJi@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-63483-4@http.gcc.gnu.org/bugzilla/>
References: <bug-63483-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-10/txt/msg00553.txt.bz2
Content-length: 492
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63483
Uroš Bizjak <ubizjak at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |ASSIGNED
Last reconfirmed| |2014-10-08
Assignee|unassigned at gcc dot gnu.org |ubizjak at gmail dot com
Ever confirmed|0 |1
>From gcc-bugs-return-463533-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Wed Oct 08 09:09:18 2014
Return-Path: <gcc-bugs-return-463533-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 23356 invoked by alias); 8 Oct 2014 09:09:18 -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 23324 invoked by uid 48); 8 Oct 2014 09:09:14 -0000
From: "manu at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug c/63480] -Wmissing-field-initializers should not warn about intentionally empty initializers (or that should be a separate option)
Date: Wed, 08 Oct 2014 09:09: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: unknown
X-Bugzilla-Keywords: diagnostic
X-Bugzilla-Severity: normal
X-Bugzilla-Who: manu 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 cc
Message-ID: <bug-63480-4-y0SpZOV09o@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-63480-4@http.gcc.gnu.org/bugzilla/>
References: <bug-63480-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-10/txt/msg00554.txt.bz2
Content-length: 595
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63480
Manuel López-Ibáñez <manu at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |diagnostic
CC| |manu at gcc dot gnu.org
--- Comment #1 from Manuel López-Ibáñez <manu at gcc dot gnu.org> ---
Wasn't this fixed for C++ recently? Perhaps the code could be shared... In any
case, they should behave similarly.
>From gcc-bugs-return-463534-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Wed Oct 08 09:09:47 2014
Return-Path: <gcc-bugs-return-463534-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 24101 invoked by alias); 8 Oct 2014 09:09:47 -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 24071 invoked by uid 48); 8 Oct 2014 09:09:43 -0000
From: "mpolacek at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug c/63480] -Wmissing-field-initializers should not warn about intentionally empty initializers (or that should be a separate option)
Date: Wed, 08 Oct 2014 09:09: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: unknown
X-Bugzilla-Keywords: diagnostic
X-Bugzilla-Severity: normal
X-Bugzilla-Who: mpolacek 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-63480-4-h6hh8hjlBj@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-63480-4@http.gcc.gnu.org/bugzilla/>
References: <bug-63480-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-10/txt/msg00555.txt.bz2
Content-length: 237
https://gcc.gnu.org/bugzilla/show_bug.cgi?idc480
--- Comment #2 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
I think it makes sense just not to warn on { }, much as we intentionally don't
warn for { 0 }.
I'm testing a patch.
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug target/63483] Scheduler performs Invalid move of aliased memory reference
2014-10-08 8:26 [Bug rtl-optimization/63483] New: Scheduler performs Invalid move of aliased memory reference ubizjak at gmail dot com
2014-10-08 8:34 ` [Bug rtl-optimization/63483] " ubizjak at gmail dot com
2014-10-08 9:05 ` ubizjak at gmail dot com
@ 2014-10-08 10:49 ` rguenth at gcc dot gnu.org
2014-10-08 11:43 ` ubizjak at gmail dot com
` (13 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: rguenth at gcc dot gnu.org @ 2014-10-08 10:49 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63483
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target| |alpha
Component|rtl-optimization |target
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
The bug is clearly in
"
> Btw, if the mem is MEM_READONLY_P how can it be part of
> a {un}aligned_store sequence?
This flag is copied from the original memory operand of the store by
alpha_set_memflags to all memory operands in the expanded sequence."
and thus should be fixed there. What is the "original" memory reference
here? It seems for the read-modify-write you should use the target MEM
but somehow a source MEM gets used? Or rather you should not use either
MEMs flags for _all_ MEMs in the sequence but properly distinguish between
MEMs generated for the load of the source and MEMs generated for the store
to the destination.
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug target/63483] Scheduler performs Invalid move of aliased memory reference
2014-10-08 8:26 [Bug rtl-optimization/63483] New: Scheduler performs Invalid move of aliased memory reference ubizjak at gmail dot com
` (2 preceding siblings ...)
2014-10-08 10:49 ` [Bug target/63483] " rguenth at gcc dot gnu.org
@ 2014-10-08 11:43 ` ubizjak at gmail dot com
2014-10-08 14:16 ` rguenth at gcc dot gnu.org
` (12 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: ubizjak at gmail dot com @ 2014-10-08 11:43 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63483
--- Comment #6 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to Richard Biener from comment #5)
> The bug is clearly in
>
> "
> > Btw, if the mem is MEM_READONLY_P how can it be part of
> > a {un}aligned_store sequence?
>
> This flag is copied from the original memory operand of the store by
> alpha_set_memflags to all memory operands in the expanded sequence."
>
> and thus should be fixed there. What is the "original" memory reference
> here? It seems for the read-modify-write you should use the target MEM
> but somehow a source MEM gets used? Or rather you should not use either
> MEMs flags for _all_ MEMs in the sequence but properly distinguish between
> MEMs generated for the load of the source and MEMs generated for the store
> to the destination.
No, this is wrong conclusion. I have new insight into this problem.
Please consider following test:
--cut here--
static char *a;
static int *b;
void foo (void)
{
a[1] = 1;
b[2] = 1;
}
int bar (void)
{
return a && b;
}
--cut here--
(e.g. changing "static char *b" to "static int *b". This way, the problematic
insn is generated as "native" read:
(insn 15 14 16 2 (set (reg/f:DI 78)
(mem/u/f/c:DI (lo_sum:DI (reg:DI 79)
(symbol_ref:DI ("b") [flags 0x6] <var_decl 0x2b1d67f5e090 b>))
[2 b+0 S8 A64])) rmw1.c:7 -1
(nil))
and this is again moved over
(insn 13 12 14 2 (set (mem:DI (and:DI (plus:DI (reg/f:DI 72)
(const_int 1 [0x1]))
(const_int -8 [0xfffffffffffffff8])) [0 S8 A64])
(reg:DI 77)) rmw1.c:6 -1
(nil))
(note that there is no "/u" suffix on the *store* of "a".)
With this testcase, we have following sequence before sched1 pass:
5: r73:DI=high(`a')
6: r72:DI=[r73:DI+low(`a')]
REG_DEAD r73:DI
7: r74:QI=0x1
8: r76:DI=[r72:DI+0x1&0xfffffffffffffff8]
9: r75:DI=r72:DI+0x1
10: r76:DI=!0xff<<r75:DI<<0x3&r76:DI
11: r77:DI=zero_extend(r74:QI)<<r75:DI<<0x3
REG_DEAD r75:DI
REG_DEAD r74:QI
REG_EQUAL 0x1<<r75:DI<<0x3
12: r77:DI=r77:DI|r76:DI
REG_DEAD r76:DI
13: [r72:DI+0x1&0xfffffffffffffff8]=r77:DI
REG_DEAD r77:DI
REG_DEAD r72:DI
14: r79:DI=high(`b')
15: r78:DI=[r79:DI+low(`b')]
REG_DEAD r79:DI
16: r80:SI=0x1
17: [r78:DI+0x8]=r80:SI
REG_DEAD r80:SI
REG_DEAD r78:DI
and sched1 moves (insn 15) all the way up, past (insn 13):
5: r73:DI=high(`a')
14: r79:DI=high(`b')
7: r74:QI=0x1
6: r72:DI=[r73:DI+low(`a')]
REG_DEAD r73:DI
16: r80:SI=0x1
15: r78:DI=[r79:DI+low(`b')]
REG_DEAD r79:DI
9: r75:DI=r72:DI+0x1
8: r76:DI=[r72:DI+0x1&0xfffffffffffffff8]
11: r77:DI=zero_extend(r74:QI)<<r75:DI<<0x3
REG_DEAD r75:DI
REG_DEAD r74:QI
REG_EQUAL 0x1<<r75:DI<<0x3
10: r76:DI=!0xff<<r75:DI<<0x3&r76:DI
12: r77:DI=r77:DI|r76:DI
REG_DEAD r76:DI
13: [r72:DI+0x1&0xfffffffffffffff8]=r77:DI
REG_DEAD r77:DI
REG_DEAD r72:DI
17: [r78:DI+0x8]=r80:SI
REG_DEAD r80:SI
REG_DEAD r78:DI
20: NOTE_INSN_DELETED
(this particular sequence won't end in a failure, but the insn shouldn't be
moved past possibly aliasing (insn 13) anyway.
Patched compiler results in:
5: r73:DI=high(`a')
7: r74:QI=0x1
14: r79:DI=high(`b')
6: r72:DI=[r73:DI+low(`a')]
REG_DEAD r73:DI
16: r80:SI=0x1
9: r75:DI=r72:DI+0x1
8: r76:DI=[r72:DI+0x1&0xfffffffffffffff8]
11: r77:DI=zero_extend(r74:QI)<<r75:DI<<0x3
REG_DEAD r75:DI
REG_DEAD r74:QI
REG_EQUAL 0x1<<r75:DI<<0x3
10: r76:DI=!0xff<<r75:DI<<0x3&r76:DI
12: r77:DI=r77:DI|r76:DI
REG_DEAD r76:DI
13: [r72:DI+0x1&0xfffffffffffffff8]=r77:DI
REG_DEAD r77:DI
REG_DEAD r72:DI
15: r78:DI=[r79:DI+low(`b')]
REG_DEAD r79:DI
17: [r78:DI+0x8]=r80:SI
REG_DEAD r80:SI
REG_DEAD r78:DI
As shown, the code further down in true_dependence_1 function blocks the move,
since the read is detected as aliased with the preceding store involving AND
alignment.
There is nothing that can be done in target-dependant code, since the "native"
read from "b" gets marked as "unchanging" by the generic middle-end code.
Please reconsider the "component" setting. There is nothing that can be fixed
in target-dependent code.
>From gcc-bugs-return-463550-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Wed Oct 08 11:48:13 2014
Return-Path: <gcc-bugs-return-463550-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 16668 invoked by alias); 8 Oct 2014 11:48:13 -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 16620 invoked by uid 48); 8 Oct 2014 11:48:09 -0000
From: "aivchenk at gmail dot com" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug tree-optimization/62053] [5 Regression] ICE: in remap_type_1, at tree-inline.c:540
Date: Wed, 08 Oct 2014 11:48:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: tree-optimization
X-Bugzilla-Version: 5.0
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: aivchenk at gmail dot com
X-Bugzilla-Status: ASSIGNED
X-Bugzilla-Priority: P1
X-Bugzilla-Assigned-To: hubicka at gcc dot gnu.org
X-Bugzilla-Target-Milestone: 5.0
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields:
Message-ID: <bug-62053-4-hMUTeG9PvC@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-62053-4@http.gcc.gnu.org/bugzilla/>
References: <bug-62053-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-10/txt/msg00571.txt.bz2
Content-length: 273
https://gcc.gnu.org/bugzilla/show_bug.cgi?idb053
--- Comment #5 from Alexander Ivchenko <aivchenk at gmail dot com> ---
Ping.. any updates? We cannot build Android since the beginning of Jul, and,
hence, cannot evaluate 5.0 candidate for it. I find it very unfortunate
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug target/63483] Scheduler performs Invalid move of aliased memory reference
2014-10-08 8:26 [Bug rtl-optimization/63483] New: Scheduler performs Invalid move of aliased memory reference ubizjak at gmail dot com
` (3 preceding siblings ...)
2014-10-08 11:43 ` ubizjak at gmail dot com
@ 2014-10-08 14:16 ` rguenth at gcc dot gnu.org
2014-10-08 14:20 ` rguenth at gcc dot gnu.org
` (11 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: rguenth at gcc dot gnu.org @ 2014-10-08 14:16 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63483
--- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> ---
How can I reproduce this? Even with -mcpu=ev4 I get
$foo..ng:
foo:
.frame $30,0,$26,0
$LFB0:
.cfi_startproc
.prologue 0
mov $31,$2
ldq_u $1,1($2)
zapnot $1,253,$1
stq_u $1,1($2)
call_pal 0x81
I configured with --target=alphaev68-linux-gnu
And used -O2 -mcpu=ev4 (sounds "earliest").
Note that the pointers 'a' and 'b' are likely made constant by IPA reference
and thus loads of the pointers can validly get /u, but not loads from the
pointers (well, we may even figure out their value is always zero...).
Does it "fix" the testcase if you have a function writing to a and b or
making a and b not static?
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug target/63483] Scheduler performs Invalid move of aliased memory reference
2014-10-08 8:26 [Bug rtl-optimization/63483] New: Scheduler performs Invalid move of aliased memory reference ubizjak at gmail dot com
` (4 preceding siblings ...)
2014-10-08 14:16 ` rguenth at gcc dot gnu.org
@ 2014-10-08 14:20 ` rguenth at gcc dot gnu.org
2014-10-08 14:29 ` rguenth at gcc dot gnu.org
` (10 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: rguenth at gcc dot gnu.org @ 2014-10-08 14:20 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63483
--- Comment #9 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #8)
> How can I reproduce this? Even with -mcpu=ev4 I get
>
> $foo..ng:
> foo:
> .frame $30,0,$26,0
> $LFB0:
> .cfi_startproc
> .prologue 0
> mov $31,$2
> ldq_u $1,1($2)
> zapnot $1,253,$1
> stq_u $1,1($2)
> call_pal 0x81
>
> I configured with --target=alphaev68-linux-gnu
>
> And used -O2 -mcpu=ev4 (sounds "earliest").
>
> Note that the pointers 'a' and 'b' are likely made constant by IPA reference
> and thus loads of the pointers can validly get /u, but not loads from the
> pointers (well, we may even figure out their value is always zero...).
Indeed. From my .optimized dump:
foo ()
{
<bb 2>:
MEM[(char *)0B + 1B] ={v} 0;
__builtin_trap ();
> Does it "fix" the testcase if you have a function writing to a and b or
> making a and b not static?
Then I get
$foo..ng:
.prologue 1
ldq $1,a($29) !literal
ldq $2,0($1)
lda $1,1($31)
cpys $f31,$f31,$f31
lda $4,1($2)
ldq_u $3,1($2)
insbl $1,$4,$1
mskbl $3,$4,$3
bis $1,$3,$1
stq_u $1,1($2)
lda $2,1($31)
ldq $1,b($29) !literal
ldq $1,0($1)
stl $2,8($1)
ret $31,($26),1
not sure if that's correct. Adjusted testcase:
char *a;
int *b;
void foo (void)
{
a[1] = 1;
b[2] = 1;
}
int bar (void)
{
return a && b;
}
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug target/63483] Scheduler performs Invalid move of aliased memory reference
2014-10-08 8:26 [Bug rtl-optimization/63483] New: Scheduler performs Invalid move of aliased memory reference ubizjak at gmail dot com
` (5 preceding siblings ...)
2014-10-08 14:20 ` rguenth at gcc dot gnu.org
@ 2014-10-08 14:29 ` rguenth at gcc dot gnu.org
2014-10-08 15:30 ` ubizjak at gmail dot com
` (9 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: rguenth at gcc dot gnu.org @ 2014-10-08 14:29 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63483
--- Comment #10 from Richard Biener <rguenth at gcc dot gnu.org> ---
Ok, I believe that even
char * const a;
int * const b;
void foo (void)
{
a[1] = 1;
b[2] = 1;
}
int bar (void)
{
return a && b;
}
does not reproduces the issue.
$foo..ng:
.prologue 1
ldq $1,a($29) !literal
ldq $2,0($1)
ldq $1,b($29) !literal
bis $31,$31,$31
lda $4,1($2)
ldq_u $3,1($2)
ldq $5,0($1)
lda $1,1($31)
insbl $1,$4,$1
mskbl $3,$4,$3
bis $1,$3,$1
stq_u $1,1($2)
lda $1,1($31)
stl $1,8($5)
ret $31,($26),1
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug target/63483] Scheduler performs Invalid move of aliased memory reference
2014-10-08 8:26 [Bug rtl-optimization/63483] New: Scheduler performs Invalid move of aliased memory reference ubizjak at gmail dot com
` (6 preceding siblings ...)
2014-10-08 14:29 ` rguenth at gcc dot gnu.org
@ 2014-10-08 15:30 ` ubizjak at gmail dot com
2014-10-09 12:40 ` ubizjak at gmail dot com
` (8 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: ubizjak at gmail dot com @ 2014-10-08 15:30 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63483
--- Comment #11 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to Richard Biener from comment #10)
> Ok, I believe that even
>
> char * const a;
> int * const b;
>
> void foo (void)
> {
> a[1] = 1;
> b[2] = 1;
> }
>
> int bar (void)
> {
> return a && b;
> }
>
> does not reproduces the issue.
>
> $foo..ng:
> .prologue 1
> ldq $1,a($29) !literal
> ldq $2,0($1)
> ldq $1,b($29) !literal
> bis $31,$31,$31
> lda $4,1($2)
> ldq_u $3,1($2)
> ldq $5,0($1) <- this is (insn 15)
> lda $1,1($31)
> insbl $1,$4,$1
> mskbl $3,$4,$3
> bis $1,$3,$1
> stq_u $1,1($2) <- this is (insn 13)
> lda $1,1($31)
> stl $1,8($5)
> ret $31,($26),1
$foo..ng:
.prologue 1
lda $1,a # 5 *movdi/7 [length = 4]
ldq $2,0($1) # 6 *movdi/8 [length = 4]
lda $1,b # 23 *movdi/7 [length = 4]
bis $31,$31,$31 # 31 nop [length = 4]
lda $4,1($2) # 9 *adddi_internal/2 [length = 4]
ldq_u $3,1($2) # 8 *movdi/8 [length = 4]
ldq $5,0($1) # 15 *movdi/8 [length = 4]
lda $1,1($31) # 22 *movqi/2 [length = 4]
insbl $1,$4,$1 # 11 insbl [length = 4]
mskbl $3,$4,$3 # 10 mskxl [length = 4]
bis $1,$3,$1 # 12 iordi3/1 [length = 4]
stq_u $1,1($2) # 13 *movdi/9 [length = 4]
lda $1,1($31) # 21 *movsi/2 [length = 4]
stl $1,8($5) # 17 *movsi/6 [length = 4]
ret $31,($26),1 # 30 *return_internal [length = 4]
5: $1:DI=`a'
REG_EQUIV `a'
6: $2:DI=[$1:DI]
REG_DEAD $1:DI
23: $1:DI=`b'
REG_EQUIV `b'
31: 0
9: $4:DI=$2:DI+0x1
8: $3:DI=[$2:DI+0x1&0xfffffffffffffff8]
15: $5:DI=[$1:DI]
REG_DEAD $1:DI
22: $1:QI=0x1
REG_EQUIV 0x1
11: $1:DI=zero_extend($1:QI)<<$4:DI<<0x3
REG_EQUAL 0x1<<$4:DI<<0x3
10: $3:DI=!0xff<<$4:DI<<0x3&$3:DI
REG_DEAD $4:DI
12: $1:DI=$1:DI|$3:DI
REG_DEAD $3:DI
13: [$2:DI+0x1&0xfffffffffffffff8]=$1:DI
REG_DEAD $2:DI
REG_DEAD $1:DI
21: $1:SI=0x1
REG_EQUIV 0x1
17: [$5:DI+0x8]=$1:SI
REG_DEAD $5:DI
REG_DEAD $1:SI
30: return
29: barrier
20: NOTE_INSN_DELETED
24: NOTE_INSN_DELETED
My dumps were with -mexplicit-relocs for some reason, the above are with
-mno-explicit-relocs.
>From gcc-bugs-return-463581-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Wed Oct 08 15:34:16 2014
Return-Path: <gcc-bugs-return-463581-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 17308 invoked by alias); 8 Oct 2014 15:34:16 -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 17286 invoked by uid 55); 8 Oct 2014 15:34:13 -0000
From: "fxcoudert at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug libquadmath/63487] typo in documentation
Date: Wed, 08 Oct 2014 15:34:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: libquadmath
X-Bugzilla-Version: unknown
X-Bugzilla-Keywords:
X-Bugzilla-Severity: trivial
X-Bugzilla-Who: fxcoudert at gcc dot gnu.org
X-Bugzilla-Status: UNCONFIRMED
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-63487-4-2YjYerzqny@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-63487-4@http.gcc.gnu.org/bugzilla/>
References: <bug-63487-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-10/txt/msg00602.txt.bz2
Content-length: 421
https://gcc.gnu.org/bugzilla/show_bug.cgi?idc487
--- Comment #1 from Francois-Xavier Coudert <fxcoudert at gcc dot gnu.org> ---
Author: fxcoudert
Date: Wed Oct 8 15:33:41 2014
New Revision: 216006
URL: https://gcc.gnu.org/viewcvs?rev!6006&root=gcc&view=rev
Log:
PR libquadmath/63487
* libquadmath.texi (sincosq): Fix typo.
Modified:
trunk/libquadmath/ChangeLog
trunk/libquadmath/libquadmath.texi
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug target/63483] Scheduler performs Invalid move of aliased memory reference
2014-10-08 8:26 [Bug rtl-optimization/63483] New: Scheduler performs Invalid move of aliased memory reference ubizjak at gmail dot com
` (7 preceding siblings ...)
2014-10-08 15:30 ` ubizjak at gmail dot com
@ 2014-10-09 12:40 ` ubizjak at gmail dot com
2014-10-09 12:54 ` rguenther at suse dot de
` (7 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: ubizjak at gmail dot com @ 2014-10-09 12:40 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63483
--- Comment #13 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to Richard Biener from comment #12)
> I still don't get it. What we end up doing is
>
> reg:DI 72 = /u load from 'a' (insn 6)
> reg:DI 78 = /u load from 'b' (insn 15)
> ...
> RMW sequence on (mem:DI (reg:DI 72 ...
> store to (mem:SI (reg:DI 78 ...
>
> thus completely fine (after sched1). sched2 then moves the /u load from
> 'b' until after the R of the RMW sequence, but that's fine.
This is wrong. The move should not pass the W part of the RMW sequence.
> Now I think you seem to say that this isn't about /u or whatever but
> the common issue that for example for globals
>
> char c, d;
>
> two RMW sequences to store to c and d may not overlap if 'c' and 'd' are
> not padded out to DImode.
>
> But this is an issue on all targets (ISTR a bug about this), and if
> that happens it introduces a store data race that is not allowed with
> the C++ memory model for example. Bad luck for early alphas then I'd say.
Yes, this is the problem. For the original problem, "c" and "d" live in the
same 8-byte memory location. So memory access with 8-byte granularity aliases
both values. There is a code that prevents memory reads to be moved across
memory writes with alignment ANDs, but /u reads get treated specially and
bypass this code under "can't alias anything due to constness" assumption.
> At least I can see nothing wrong with the code generated for the two
> testcases
> you provided nor is the fix you propose any good (I see nothing else but
> the (and:DI ...) addressing that might possibly serve as "barrier" here,
> but even that would not be enough for, say
>
> char c __attribute__((aligned(8)));
> char d;
>
> because then we hopefully optimize that AND away for the load from c.
True, but there will be alignment ANDs in the access of "d". This is the reason
to check both operands for ANDs and in this case pass them down to the code
that handles operands with alignment ANDs to determine their aliasing.
> Can you clarify whether I miss anything with the code generated for the
> testcase?
If we can't guarantee that the value lives outside aliased location, then reads
of this value should not pass writes with alignment ANDs (that could possibly
alias the location of read), no matter if they are /u or not.
IMO, /u reads should be handled as non-/u reads and should not pass writes with
alignment ANDs. This is what my patch does.
>From gcc-bugs-return-463668-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Thu Oct 09 12:45:57 2014
Return-Path: <gcc-bugs-return-463668-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 18413 invoked by alias); 9 Oct 2014 12:45:56 -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 18363 invoked by uid 48); 9 Oct 2014 12:45:53 -0000
From: "rguenth at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug tree-optimization/63380] [5 Regression] Wrong constant folding
Date: Thu, 09 Oct 2014 12:45:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: tree-optimization
X-Bugzilla-Version: 5.0
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: rguenth at gcc dot gnu.org
X-Bugzilla-Status: RESOLVED
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: rguenth at gcc dot gnu.org
X-Bugzilla-Target-Milestone: 5.0
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields: bug_status resolution
Message-ID: <bug-63380-4-XoUorJNboh@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-63380-4@http.gcc.gnu.org/bugzilla/>
References: <bug-63380-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-10/txt/msg00689.txt.bz2
Content-length: 428
https://gcc.gnu.org/bugzilla/show_bug.cgi?idc380
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |RESOLVED
Resolution|--- |FIXED
--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> ---
Fixed.
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug target/63483] Scheduler performs Invalid move of aliased memory reference
2014-10-08 8:26 [Bug rtl-optimization/63483] New: Scheduler performs Invalid move of aliased memory reference ubizjak at gmail dot com
` (8 preceding siblings ...)
2014-10-09 12:40 ` ubizjak at gmail dot com
@ 2014-10-09 12:54 ` rguenther at suse dot de
2014-10-09 13:11 ` ubizjak at gmail dot com
` (6 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: rguenther at suse dot de @ 2014-10-09 12:54 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63483
--- Comment #14 from rguenther at suse dot de <rguenther at suse dot de> ---
On Thu, 9 Oct 2014, ubizjak at gmail dot com wrote:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63483
>
> --- Comment #13 from Uroš Bizjak <ubizjak at gmail dot com> ---
> (In reply to Richard Biener from comment #12)
> > I still don't get it. What we end up doing is
> >
> > reg:DI 72 = /u load from 'a' (insn 6)
> > reg:DI 78 = /u load from 'b' (insn 15)
> > ...
> > RMW sequence on (mem:DI (reg:DI 72 ...
> > store to (mem:SI (reg:DI 78 ...
> >
> > thus completely fine (after sched1). sched2 then moves the /u load from
> > 'b' until after the R of the RMW sequence, but that's fine.
>
> This is wrong. The move should not pass the W part of the RMW sequence.
>
> > Now I think you seem to say that this isn't about /u or whatever but
> > the common issue that for example for globals
> >
> > char c, d;
> >
> > two RMW sequences to store to c and d may not overlap if 'c' and 'd' are
> > not padded out to DImode.
> >
> > But this is an issue on all targets (ISTR a bug about this), and if
> > that happens it introduces a store data race that is not allowed with
> > the C++ memory model for example. Bad luck for early alphas then I'd say.
>
> Yes, this is the problem. For the original problem, "c" and "d" live in the
> same 8-byte memory location. So memory access with 8-byte granularity aliases
> both values. There is a code that prevents memory reads to be moved across
> memory writes with alignment ANDs, but /u reads get treated specially and
> bypass this code under "can't alias anything due to constness" assumption.
>
> > At least I can see nothing wrong with the code generated for the two
> > testcases
> > you provided nor is the fix you propose any good (I see nothing else but
> > the (and:DI ...) addressing that might possibly serve as "barrier" here,
> > but even that would not be enough for, say
> >
> > char c __attribute__((aligned(8)));
> > char d;
> >
> > because then we hopefully optimize that AND away for the load from c.
>
> True, but there will be alignment ANDs in the access of "d". This is the reason
> to check both operands for ANDs and in this case pass them down to the code
> that handles operands with alignment ANDs to determine their aliasing.
>
> > Can you clarify whether I miss anything with the code generated for the
> > testcase?
>
> If we can't guarantee that the value lives outside aliased location, then reads
> of this value should not pass writes with alignment ANDs (that could possibly
> alias the location of read), no matter if they are /u or not.
>
> IMO, /u reads should be handled as non-/u reads and should not pass writes with
> alignment ANDs. This is what my patch does.
I see. But you don't touch write_dependence which has a similar check.
And instead of making the check for AND disable the MEM_READONLY_P
early-out wouldn't it be more correct to treat MEMs with AND addresses
as true barriers? That is,
if (GET_CODE (x_addr) == AND
|| GET_CODE (mem_addr) == AND)
return 1;
if (MEM_READONLY_P (x))
return 0;
instead? I see we're trying to be clever with AND addresses even
though they are "barriers", why's that?
Note that all this should only ever be an issue with that very old Alpha
as other archs should implement the C++ memory model properly.
Richard.
>From gcc-bugs-return-463671-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Thu Oct 09 13:10:38 2014
Return-Path: <gcc-bugs-return-463671-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 2217 invoked by alias); 9 Oct 2014 13:10:37 -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 2167 invoked by uid 48); 9 Oct 2014 13:10:34 -0000
From: "ubizjak at gmail dot com" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug target/63483] Scheduler performs Invalid move of aliased memory reference
Date: Thu, 09 Oct 2014 13:10: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: 5.0
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: ubizjak at gmail dot com
X-Bugzilla-Status: ASSIGNED
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: ubizjak at gmail dot com
X-Bugzilla-Target-Milestone: ---
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields:
Message-ID: <bug-63483-4-X4uvasUDpm@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-63483-4@http.gcc.gnu.org/bugzilla/>
References: <bug-63483-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-10/txt/msg00692.txt.bz2
Content-length: 1601
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63483
--- Comment #15 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to rguenther@suse.de from comment #14)
> I see. But you don't touch write_dependence which has a similar check.
I have in fact changed all these places (I will attach the patch momentarily),
but the attached test check one location only. After the approach is considered
OK, the others are trivial to add.
> And instead of making the check for AND disable the MEM_READONLY_P
> early-out wouldn't it be more correct to treat MEMs with AND addresses
> as true barriers? That is,
>
> if (GET_CODE (x_addr) == AND
> || GET_CODE (mem_addr) == AND)
> return 1;
>
> if (MEM_READONLY_P (x))
> return 0;
>
> instead? I see we're trying to be clever with AND addresses even
> though they are "barriers", why's that?
This was my first approach. But DImode (8-byte) reads, aligned to their natural
alignment, can't alias locations that are re-aligned to 8-bytes using alignment
ANDs. This is what the code downstream handles, so the approach, proposed above
would penalize DImode reads too much.
> Note that all this should only ever be an issue with that very old Alpha
> as other archs should implement the C++ memory model properly.
Unfortunately, I have to agree. The alternative would be a target-specific
change that would mark all memory in RMW sequence with some kind of barrier.
IMO, the generic change is preferable, since it doesn't affect other targets,
and makes aliasing more robust w.r.t. to target peculiarities.
>From gcc-bugs-return-463670-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Thu Oct 09 13:10:11 2014
Return-Path: <gcc-bugs-return-463670-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 1308 invoked by alias); 9 Oct 2014 13:10:11 -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 1179 invoked by uid 48); 9 Oct 2014 13:10:04 -0000
From: "venkataramanan.kumar at amd dot com" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug target/62308] A bug with aarch64 big-endian
Date: Thu, 09 Oct 2014 13:10: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.9.0
X-Bugzilla-Keywords: ABI
X-Bugzilla-Severity: major
X-Bugzilla-Who: venkataramanan.kumar at amd dot com
X-Bugzilla-Status: NEW
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: venkataramanan.kumar at amd dot com
X-Bugzilla-Target-Milestone: ---
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields:
Message-ID: <bug-62308-4-hOj1Sx7jEF@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-62308-4@http.gcc.gnu.org/bugzilla/>
References: <bug-62308-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-10/txt/msg00691.txt.bz2
Content-length: 1602
https://gcc.gnu.org/bugzilla/show_bug.cgi?idb308
--- Comment #7 from Venkataramanan <venkataramanan.kumar at amd dot com> ---
I tried to look at the RTL and assembly code generated after the patch comitted
in 215707.
The code generated looks good some unoptimal code but it is at -O0.
sub sp, sp, #16 // 15 *adddi3_aarch64/3 [length = 4]
mov x2, x0 // 2 *movdi_aarch64/1 [length = 4]
mov x0, x2 // 5 *movdi_aarch64/1 [length = 4]
fmov d0, x1 // 22 move_lo_quad_internal_be_v4si/2 [length = 4]
ins v0.d[1], x0 // 23 aarch64_simd_move_hi_quad_be_v4si/2
[length = 4]
str q0, [sp] // 7 *aarch64_simd_movv4si/2 [length = 4]
nop // 13 nop [length = 4]
add sp, sp, 16 // 18 *adddi3_aarch64/1 [length = 4]
ret // 20 *do_return [length = 4]
The patch r215707 tries to fix situation where paradoxial subregister access
with register X0 results results in acessing register -1 in bigendian.
The same situation happens for this bug.
insn 3 2 4 2 (set (reg:DI 76)
(reg:DI 1 x1 [ args+8 ])) test.c:3 35 {*movdi_aarch64}
(expr_list:REG_DEAD (reg:DI 1 x1 [ args+8 ])
(nil)))
(insn 4 3 5 2 (set (reg:TI 74)
(subreg:TI (reg:DI 76) 0)) test.c:3 38 {*movti_aarch64}
(expr_list:REG_DEAD (reg:DI 76)
(nil)))
Where reload gets
(set (reg:DI 0 x0 [76]) (reg:DI 1 x1 [ args+8 ]))
(set (reg:TI 0 x0 [74]) (reg:TI -1 [+-8 ])
Looks same issue to me.
Vladimir can you please confirm.
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug target/63483] Scheduler performs Invalid move of aliased memory reference
2014-10-08 8:26 [Bug rtl-optimization/63483] New: Scheduler performs Invalid move of aliased memory reference ubizjak at gmail dot com
` (9 preceding siblings ...)
2014-10-09 12:54 ` rguenther at suse dot de
@ 2014-10-09 13:11 ` ubizjak at gmail dot com
2014-10-10 7:06 ` rguenther at suse dot de
` (5 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: ubizjak at gmail dot com @ 2014-10-09 13:11 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63483
Uroš Bizjak <ubizjak at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Attachment #33665|0 |1
is obsolete| |
--- Comment #16 from Uroš Bizjak <ubizjak at gmail dot com> ---
Created attachment 33672
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=33672&action=edit
Updated patch.
>From gcc-bugs-return-463673-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Thu Oct 09 13:14:48 2014
Return-Path: <gcc-bugs-return-463673-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 4463 invoked by alias); 9 Oct 2014 13:14:48 -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 4428 invoked by uid 48); 9 Oct 2014 13:14:44 -0000
From: "ubizjak at gmail dot com" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug target/63483] Scheduler performs Invalid move of aliased memory reference
Date: Thu, 09 Oct 2014 13:14: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: 5.0
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: ubizjak at gmail dot com
X-Bugzilla-Status: ASSIGNED
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: ubizjak at gmail dot com
X-Bugzilla-Target-Milestone: ---
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields:
Message-ID: <bug-63483-4-mwlz1q8JAb@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-63483-4@http.gcc.gnu.org/bugzilla/>
References: <bug-63483-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-10/txt/msg00694.txt.bz2
Content-length: 336
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63483
--- Comment #17 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to Uroš Bizjak from comment #15)
> ... but the attached test check one location only.
I shoud say:
... but the test from the Description depends specifically on the code, touched
by the patch.
>From gcc-bugs-return-463674-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Thu Oct 09 13:26:28 2014
Return-Path: <gcc-bugs-return-463674-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 10123 invoked by alias); 9 Oct 2014 13:26:28 -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 10086 invoked by uid 48); 9 Oct 2014 13:26:25 -0000
From: "ubizjak at gmail dot com" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug rtl-optimization/57003] [4.8/4.9/5.0 Regression] gcc breaks -O2 optimization with Wine(64) - links/info/bisect of commits included
Date: Thu, 09 Oct 2014 13:26:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: rtl-optimization
X-Bugzilla-Version: unknown
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: ubizjak at gmail dot com
X-Bugzilla-Status: RESOLVED
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: jakub at gcc dot gnu.org
X-Bugzilla-Target-Milestone: 4.8.4
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields: bug_status resolution target_milestone
Message-ID: <bug-57003-4-9VUDxXs8eL@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-57003-4@http.gcc.gnu.org/bugzilla/>
References: <bug-57003-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-10/txt/msg00695.txt.bz2
Content-length: 502
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57003
Uroš Bizjak <ubizjak at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|REOPENED |RESOLVED
Resolution|--- |FIXED
Target Milestone|5.0 |4.8.4
--- Comment #32 from Uroš Bizjak <ubizjak at gmail dot com> ---
Again fixed everywhere.
>From gcc-bugs-return-463675-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Thu Oct 09 15:24:41 2014
Return-Path: <gcc-bugs-return-463675-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 17120 invoked by alias); 9 Oct 2014 15:24:41 -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 17077 invoked by uid 55); 9 Oct 2014 15:24:37 -0000
From: "dave.anglin at bell dot net" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug libfortran/63471] [5.0 Regression] unix.c:1906:10: error: implicit declaration of function 'ttyname_r'
Date: Thu, 09 Oct 2014 15:24:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: libfortran
X-Bugzilla-Version: 5.0
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: dave.anglin at bell dot net
X-Bugzilla-Status: UNCONFIRMED
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org
X-Bugzilla-Target-Milestone: 5.0
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields:
Message-ID: <bug-63471-4-aF1mXdxxZq@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-63471-4@http.gcc.gnu.org/bugzilla/>
References: <bug-63471-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-10/txt/msg00696.txt.bz2
Content-length: 1081
https://gcc.gnu.org/bugzilla/show_bug.cgi?idc471
--- Comment #6 from dave.anglin at bell dot net ---
On 10/8/2014 11:07 PM, jb at gcc dot gnu.org wrote:
> That being said, googling this issue I stumbled upon
> https://gcc.gnu.org/ml/gcc-patches/2011-03/msg00545.html where you fixed a
> similar issue for hp-ux 10, seemingly by making the driver always set
> _REENTRANT. Wouldn't a similar thing be the right thing to do for hp-ux 11 as
> well? If there are no ill effects of always enabling _REENTRANT that would help
> other software than just libgfortran, as well as eliminating the risk that
> unconditionally enabling _REENTRANT in libgfortran might break on some other
> target?
It's certainly easy to make the same change to hp-ux 11. I was
clearly wrong about the guards being removed.
I suspect HP introduced the _REENTRANT guard because they wanted to
remove the _r routines:
http://h21007.www2.hp.com/portal/download/files/unprot/stk/tru64_stk/impacts/i24.html
However, they are not gone so I think we should define _REENTRANT
if there are no ill effects.
Dave
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug target/63483] Scheduler performs Invalid move of aliased memory reference
2014-10-08 8:26 [Bug rtl-optimization/63483] New: Scheduler performs Invalid move of aliased memory reference ubizjak at gmail dot com
` (10 preceding siblings ...)
2014-10-09 13:11 ` ubizjak at gmail dot com
@ 2014-10-10 7:06 ` rguenther at suse dot de
2014-10-10 9:51 ` ubizjak at gmail dot com
` (4 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: rguenther at suse dot de @ 2014-10-10 7:06 UTC (permalink / raw)
To: gcc-bugs
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="UTF-8", Size: 3410 bytes --]
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63483
--- Comment #18 from rguenther at suse dot de <rguenther at suse dot de> ---
On Thu, 9 Oct 2014, ubizjak at gmail dot com wrote:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63483
>
> Uroš Bizjak <ubizjak at gmail dot com> changed:
>
> What |Removed |Added
> ----------------------------------------------------------------------------
> Attachment #33665|0 |1
> is obsolete| |
>
> --- Comment #16 from Uroš Bizjak <ubizjak at gmail dot com> ---
> Created attachment 33672
> --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=33672&action=edit
> Updated patch.
Looks ok with all the explanation. I wonder when is the appropriate
time to retire support for architectures without byte granular
memory access.
>From gcc-bugs-return-463725-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Fri Oct 10 07:12:01 2014
Return-Path: <gcc-bugs-return-463725-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 23201 invoked by alias); 10 Oct 2014 07:12:00 -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 23159 invoked by uid 48); 10 Oct 2014 07:11:56 -0000
From: "richard at netbsd dot org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug target/63352] problem with fmt_g0_1.f08 on i386-pc-solaris2.11
Date: Fri, 10 Oct 2014 07:12: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.9.1
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: richard at netbsd dot org
X-Bugzilla-Status: WAITING
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: attachments.created
Message-ID: <bug-63352-4-GE1ZUf9Vaa@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-63352-4@http.gcc.gnu.org/bugzilla/>
References: <bug-63352-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-10/txt/msg00746.txt.bz2
Content-length: 722
https://gcc.gnu.org/bugzilla/show_bug.cgi?idc352
--- Comment #17 from Richard PALO <richard at netbsd dot org> ---
Created attachment 33675
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id3675&actioníit
c test program for snprintf
I tried the attached test program and post the following results from my system
demonstrating that the 'f' format does indeed seem erroneous, at least for the
particular case in hand involving '1/3':
$ /opt/local/gcc49/bin/gcc -stdÉ9 cflt.c
$ ./a.out
FLT_EVAL_METHOD = 2
(e) 1/3 => +3.33333333333333312e-01
(f) 1/3 => +0.33333333333333332
(e) 1/7 => +1.42857142857142848e-01
(f) 1/7 => +0.14285714285714284
(e) 1/9 => +1.11111111111111104e-01
(f) 1/9 => +0.11111111111111110
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug target/63483] Scheduler performs Invalid move of aliased memory reference
2014-10-08 8:26 [Bug rtl-optimization/63483] New: Scheduler performs Invalid move of aliased memory reference ubizjak at gmail dot com
` (11 preceding siblings ...)
2014-10-10 7:06 ` rguenther at suse dot de
@ 2014-10-10 9:51 ` ubizjak at gmail dot com
2014-10-10 17:36 ` uros at gcc dot gnu.org
` (3 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: ubizjak at gmail dot com @ 2014-10-10 9:51 UTC (permalink / raw)
To: gcc-bugs
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="UTF-8", Size: 4906 bytes --]
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63483
--- Comment #19 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to rguenther@suse.de from comment #18)
> Looks ok with all the explanation. I wonder when is the appropriate
> time to retire support for architectures without byte granular
> memory access.
Thanks for your discussion! I will prepare a formal patch submission.
>From gcc-bugs-return-463739-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Fri Oct 10 10:30:19 2014
Return-Path: <gcc-bugs-return-463739-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 13409 invoked by alias); 10 Oct 2014 10:30:19 -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 13097 invoked by uid 48); 10 Oct 2014 10:30:13 -0000
From: "fdumont at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug libstdc++/63500] [4.9/5 Regression] bug in debug version of std::make_move_iterator?
Date: Fri, 10 Oct 2014 10:30:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: libstdc++
X-Bugzilla-Version: 5.0
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: fdumont 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-63500-4-vqBTKyQYmy@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-63500-4@http.gcc.gnu.org/bugzilla/>
References: <bug-63500-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-10/txt/msg00760.txt.bz2
Content-length: 374
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63500
--- Comment #5 from François Dumont <fdumont at gcc dot gnu.org> ---
I never understood why safe iterators operators are not simply calling
respective operator on the underlying iterator. All operators are respecting
this rule except the operator->. So I will try to use this rule and see if it
fixes this issue.
>From gcc-bugs-return-463740-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Fri Oct 10 10:47:36 2014
Return-Path: <gcc-bugs-return-463740-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 397 invoked by alias); 10 Oct 2014 10:47:36 -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 362 invoked by uid 48); 10 Oct 2014 10:47:33 -0000
From: "richard at netbsd dot org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug target/63352] problem with fmt_g0_1.f08 on i386-pc-solaris2.11
Date: Fri, 10 Oct 2014 10:47: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.9.1
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: richard at netbsd dot org
X-Bugzilla-Status: WAITING
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: attachments.isobsolete attachments.created
Message-ID: <bug-63352-4-FH0CHaa1xH@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-63352-4@http.gcc.gnu.org/bugzilla/>
References: <bug-63352-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-10/txt/msg00761.txt.bz2
Content-length: 523
https://gcc.gnu.org/bugzilla/show_bug.cgi?idc352
Richard PALO <richard at netbsd dot org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Attachment #33676|0 |1
is obsolete| |
--- Comment #19 from Richard PALO <richard at netbsd dot org> ---
Created attachment 33680
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id3680&actioníit
-std= agnostic version
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug target/63483] Scheduler performs Invalid move of aliased memory reference
2014-10-08 8:26 [Bug rtl-optimization/63483] New: Scheduler performs Invalid move of aliased memory reference ubizjak at gmail dot com
` (12 preceding siblings ...)
2014-10-10 9:51 ` ubizjak at gmail dot com
@ 2014-10-10 17:36 ` uros at gcc dot gnu.org
2014-11-05 12:02 ` uros at gcc dot gnu.org
` (2 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: uros at gcc dot gnu.org @ 2014-10-10 17:36 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63483
--- Comment #20 from uros at gcc dot gnu.org ---
Author: uros
Date: Fri Oct 10 17:36:21 2014
New Revision: 216100
URL: https://gcc.gnu.org/viewcvs?rev=216100&root=gcc&view=rev
Log:
PR rtl-optimization/63483
* alias.c (true_dependence_1): Do not exit early for MEM_READONLY_P
references when alignment ANDs are involved.
(write_dependence_p): Ditto.
(may_alias_p): Ditto.
Modified:
trunk/gcc/ChangeLog
trunk/gcc/alias.c
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug target/63483] Scheduler performs Invalid move of aliased memory reference
2014-10-08 8:26 [Bug rtl-optimization/63483] New: Scheduler performs Invalid move of aliased memory reference ubizjak at gmail dot com
` (13 preceding siblings ...)
2014-10-10 17:36 ` uros at gcc dot gnu.org
@ 2014-11-05 12:02 ` uros at gcc dot gnu.org
2014-11-05 12:16 ` ubizjak at gmail dot com
2015-02-20 12:05 ` uros at gcc dot gnu.org
16 siblings, 0 replies; 18+ messages in thread
From: uros at gcc dot gnu.org @ 2014-11-05 12:02 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63483
--- Comment #21 from uros at gcc dot gnu.org ---
Author: uros
Date: Wed Nov 5 12:02:17 2014
New Revision: 217119
URL: https://gcc.gnu.org/viewcvs?rev=217119&root=gcc&view=rev
Log:
Backport from mainline:
2014-10-20 Uros Bizjak <ubizjak@gmail.com>
* varasm.c (const_alias_set): Remove.
(init_varasm_once): Remove initialization of const_alias_set.
(build_constant_desc): Do not set alias set to const_alias_set.
Backport from mainline:
2014-10-14 Uros Bizjak <ubizjak@gmail.com>
PR rtl-optimization/63475
* alias.c (true_dependence_1): Always use get_addr to extract
true address operands from x_addr and mem_addr. Use extracted
address operands to check for references with alignment ANDs.
Use extracted address operands with find_base_term and
base_alias_check. For noncanonicalized operands call canon_rtx with
extracted address operand.
(write_dependence_1): Ditto.
(may_alias_p): Ditto. Remove unused calls to canon_rtx.
Backport from mainline:
2014-10-10 Uros Bizjak <ubizjak@gmail.com>
PR rtl-optimization/63483
* alias.c (true_dependence_1): Do not exit early for MEM_READONLY_P
references when alignment ANDs are involved.
(write_dependence_p): Ditto.
(may_alias_p): Ditto.
Modified:
branches/gcc-4_9-branch/gcc/ChangeLog
branches/gcc-4_9-branch/gcc/alias.c
branches/gcc-4_9-branch/gcc/varasm.c
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug target/63483] Scheduler performs Invalid move of aliased memory reference
2014-10-08 8:26 [Bug rtl-optimization/63483] New: Scheduler performs Invalid move of aliased memory reference ubizjak at gmail dot com
` (14 preceding siblings ...)
2014-11-05 12:02 ` uros at gcc dot gnu.org
@ 2014-11-05 12:16 ` ubizjak at gmail dot com
2015-02-20 12:05 ` uros at gcc dot gnu.org
16 siblings, 0 replies; 18+ messages in thread
From: ubizjak at gmail dot com @ 2014-11-05 12:16 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63483
Uroš Bizjak <ubizjak at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |RESOLVED
Resolution|--- |FIXED
Target Milestone|--- |4.9.3
--- Comment #22 from Uroš Bizjak <ubizjak at gmail dot com> ---
Fixed for 4.9+.
>From gcc-bugs-return-465788-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Wed Nov 05 12:17:30 2014
Return-Path: <gcc-bugs-return-465788-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 31804 invoked by alias); 5 Nov 2014 12:17:30 -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 31730 invoked by uid 48); 5 Nov 2014 12:17:22 -0000
From: "ubizjak at gmail dot com" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug rtl-optimization/63475] Postreload CSE propagates aliased memory operand
Date: Wed, 05 Nov 2014 12:17:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: rtl-optimization
X-Bugzilla-Version: 5.0
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: ubizjak at gmail dot com
X-Bugzilla-Status: RESOLVED
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: ubizjak at gmail dot com
X-Bugzilla-Target-Milestone: 4.9.3
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields: bug_status resolution target_milestone
Message-ID: <bug-63475-4-tseY3xlQ0x@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-63475-4@http.gcc.gnu.org/bugzilla/>
References: <bug-63475-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-11/txt/msg00260.txt.bz2
Content-length: 495
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63475
Uroš Bizjak <ubizjak at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |RESOLVED
Resolution|--- |FIXED
Target Milestone|5.0 |4.9.3
--- Comment #8 from Uroš Bizjak <ubizjak at gmail dot com> ---
Fixed for 4.9.3+.
>From gcc-bugs-return-465789-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Wed Nov 05 12:29:57 2014
Return-Path: <gcc-bugs-return-465789-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 10567 invoked by alias); 5 Nov 2014 12:29:56 -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 10289 invoked by uid 48); 5 Nov 2014 12:29:52 -0000
From: "rguenth at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug tree-optimization/63747] [5 regression] icf mis-compares switch gimple
Date: Wed, 05 Nov 2014 12:29:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: tree-optimization
X-Bugzilla-Version: 5.0
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: rguenth at gcc dot gnu.org
X-Bugzilla-Status: UNCONFIRMED
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org
X-Bugzilla-Target-Milestone: 5.0
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields: cf_gcctarget cf_gcchost target_milestone cf_gccbuild
Message-ID: <bug-63747-4-GKiGfCzs5l@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-63747-4@http.gcc.gnu.org/bugzilla/>
References: <bug-63747-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-11/txt/msg00261.txt.bz2
Content-length: 451
https://gcc.gnu.org/bugzilla/show_bug.cgi?idc747
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target| |arm
Host| |arm
Target Milestone|--- |5.0
Build| |arm
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug target/63483] Scheduler performs Invalid move of aliased memory reference
2014-10-08 8:26 [Bug rtl-optimization/63483] New: Scheduler performs Invalid move of aliased memory reference ubizjak at gmail dot com
` (15 preceding siblings ...)
2014-11-05 12:16 ` ubizjak at gmail dot com
@ 2015-02-20 12:05 ` uros at gcc dot gnu.org
16 siblings, 0 replies; 18+ messages in thread
From: uros at gcc dot gnu.org @ 2015-02-20 12:05 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63483
--- Comment #23 from uros at gcc dot gnu.org ---
Author: uros
Date: Fri Feb 20 12:04:21 2015
New Revision: 220854
URL: https://gcc.gnu.org/viewcvs?rev=220854&root=gcc&view=rev
Log:
Backport from mainline
2015-01-22 Wei Mi <wmi@google.com>
PR rtl-optimization/64557
* dse.c (record_store): Call get_addr for mem_addr.
(check_mem_read_rtx): Likewise.
Backport from mainline
2014-10-20 Uros Bizjak <ubizjak@gmail.com>
* varasm.c (const_alias_set): Remove.
(init_varasm_once): Remove initialization of const_alias_set.
(build_constant_desc): Do not set alias set to const_alias_set.
Backport from mainline
2014-10-14 Uros Bizjak <ubizjak@gmail.com>
PR rtl-optimization/63475
* alias.c (true_dependence_1): Always use get_addr to extract
true address operands from x_addr and mem_addr. Use extracted
address operands to check for references with alignment ANDs.
Use extracted address operands with find_base_term and
base_alias_check. For noncanonicalized operands call canon_rtx with
extracted address operand.
(write_dependence_1): Ditto.
(may_alias_p): Ditto. Remove unused calls to canon_rtx.
Backport from mainline
2014-10-10 Uros Bizjak <ubizjak@gmail.com>
PR rtl-optimization/63483
* alias.c (true_dependence_1): Do not exit early for MEM_READONLY_P
references when alignment ANDs are involved.
(write_dependence_p): Ditto.
(may_alias_p): Ditto.
Backport from mainline
2013-03-26 Richard Biener <rguenther@suse.de>
* alias.c (find_base_term): Avoid redundant and not used recursion.
(base_alias_check): Get the initial base term from the caller.
(true_dependence_1): Compute and pass base terms to base_alias_check.
(write_dependence_p): Likewise.
(may_alias_p): Likewise.
Modified:
branches/gcc-4_8-branch/gcc/ChangeLog
branches/gcc-4_8-branch/gcc/alias.c
branches/gcc-4_8-branch/gcc/dse.c
branches/gcc-4_8-branch/gcc/varasm.c
^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2015-02-20 12:05 UTC | newest]
Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-10-08 8:26 [Bug rtl-optimization/63483] New: Scheduler performs Invalid move of aliased memory reference ubizjak at gmail dot com
2014-10-08 8:34 ` [Bug rtl-optimization/63483] " ubizjak at gmail dot com
2014-10-08 9:05 ` ubizjak at gmail dot com
2014-10-08 10:49 ` [Bug target/63483] " rguenth at gcc dot gnu.org
2014-10-08 11:43 ` ubizjak at gmail dot com
2014-10-08 14:16 ` rguenth at gcc dot gnu.org
2014-10-08 14:20 ` rguenth at gcc dot gnu.org
2014-10-08 14:29 ` rguenth at gcc dot gnu.org
2014-10-08 15:30 ` ubizjak at gmail dot com
2014-10-09 12:40 ` ubizjak at gmail dot com
2014-10-09 12:54 ` rguenther at suse dot de
2014-10-09 13:11 ` ubizjak at gmail dot com
2014-10-10 7:06 ` rguenther at suse dot de
2014-10-10 9:51 ` ubizjak at gmail dot com
2014-10-10 17:36 ` uros at gcc dot gnu.org
2014-11-05 12:02 ` uros at gcc dot gnu.org
2014-11-05 12:16 ` ubizjak at gmail dot com
2015-02-20 12:05 ` uros at gcc dot gnu.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).