public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
* [Bug 45771] (c) New: Source operands for conditional moves @ 2010-09-24 0:46 rmansfield at qnx dot com 2010-09-24 0:47 ` [Bug 45771] (target) " rmansfield at qnx dot com ` (3 more replies) 0 siblings, 4 replies; 5+ messages in thread From: rmansfield at qnx dot com @ 2010-09-24 0:46 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45771 Summary: Source operands for conditional moves Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassigned@gcc.gnu.org ReportedBy: rmansfield@qnx.com Host: x86_64-linux-gnu Target: x86_64-linux-gnu Build: x86_64-linux-gnu $ ./xgcc -v Using built-in specs. COLLECT_GCC=./xgcc Target: x86_64-linux-gnu Configured with: ../configure --target=x86_64-linux-gnu Thread model: posix gcc version 4.6.0 20100923 (experimental) [trunk revision 164569] (GCC) #define NULL 0 typedef struct List List; struct List { List *next; int stuff; }; extern List Ignore; extern List *pending, **tail; extern void process(List *); void proc_all() { List *irp; for( ;; ) { irp = pending; pending = NULL; if(irp == &Ignore) { irp = irp->next; } if(irp == NULL) break; pending = irp->next; process(irp); } } -O2 generates movq pending(%rip), %rdi movq $0, pending(%rip) cmpq $Ignore, %rdi cmove (%rdi), %rdi testq %rdi, %rdi Since cmove always references the source operand regardless of the result of the condition, and (%idi) can be null which will cause the program to crash. The pseudo code for cmove: cmove(condition, SRC, DEST) { TEMP = SRC if (condition) DST = TEMP } -- Configure bugmail: http://gcc.gnu.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug. ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug 45771] (target) Source operands for conditional moves 2010-09-24 0:46 [Bug 45771] (c) New: Source operands for conditional moves rmansfield at qnx dot com @ 2010-09-24 0:47 ` rmansfield at qnx dot com 2010-09-24 3:15 ` pinskia at gcc dot gnu.org ` (2 subsequent siblings) 3 siblings, 0 replies; 5+ messages in thread From: rmansfield at qnx dot com @ 2010-09-24 0:47 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45771 Ryan Mansfield <rmansfield at qnx dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Component|c |target --- Comment #1 from Ryan Mansfield <rmansfield at qnx dot com> 2010-09-24 00:47:48 UTC --- Change component. -- Configure bugmail: http://gcc.gnu.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug. ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug 45771] (target) Source operands for conditional moves 2010-09-24 0:46 [Bug 45771] (c) New: Source operands for conditional moves rmansfield at qnx dot com 2010-09-24 0:47 ` [Bug 45771] (target) " rmansfield at qnx dot com @ 2010-09-24 3:15 ` pinskia at gcc dot gnu.org 2010-09-24 4:19 ` rmansfield at qnx dot com 2012-01-21 20:26 ` [Bug target/45771] " pinskia at gcc dot gnu.org 3 siblings, 0 replies; 5+ messages in thread From: pinskia at gcc dot gnu.org @ 2010-09-24 3:15 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45771 Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Component|middle-end |target --- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> 2010-09-24 02:58:05 UTC --- >Since cmove Really??? That seems weird. -- Configure bugmail: http://gcc.gnu.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug. ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug 45771] (target) Source operands for conditional moves 2010-09-24 0:46 [Bug 45771] (c) New: Source operands for conditional moves rmansfield at qnx dot com 2010-09-24 0:47 ` [Bug 45771] (target) " rmansfield at qnx dot com 2010-09-24 3:15 ` pinskia at gcc dot gnu.org @ 2010-09-24 4:19 ` rmansfield at qnx dot com 2012-01-21 20:26 ` [Bug target/45771] " pinskia at gcc dot gnu.org 3 siblings, 0 replies; 5+ messages in thread From: rmansfield at qnx dot com @ 2010-09-24 4:19 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45771 --- Comment #3 from Ryan Mansfield <rmansfield at qnx dot com> 2010-09-24 03:15:16 UTC --- (In reply to comment #2) > >Since cmove > > Really??? That seems weird. www.intel.com/assets/pdf/manual/253666.pdf Vol. 2A 3-155 (page 199-200) Though I believe the unconditional read only happens if the source operand is a memory operand. -- Configure bugmail: http://gcc.gnu.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug. ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug target/45771] Source operands for conditional moves 2010-09-24 0:46 [Bug 45771] (c) New: Source operands for conditional moves rmansfield at qnx dot com ` (2 preceding siblings ...) 2010-09-24 4:19 ` rmansfield at qnx dot com @ 2012-01-21 20:26 ` pinskia at gcc dot gnu.org 3 siblings, 0 replies; 5+ messages in thread From: pinskia at gcc dot gnu.org @ 2012-01-21 20:26 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45771 Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |FIXED Target Milestone|--- |4.7.0 --- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> 2012-01-21 20:17:38 UTC --- Fixed by: http://gcc.gnu.org/ml/gcc-patches/2011-09/msg01567.html ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2012-01-21 20:18 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2010-09-24 0:46 [Bug 45771] (c) New: Source operands for conditional moves rmansfield at qnx dot com 2010-09-24 0:47 ` [Bug 45771] (target) " rmansfield at qnx dot com 2010-09-24 3:15 ` pinskia at gcc dot gnu.org 2010-09-24 4:19 ` rmansfield at qnx dot com 2012-01-21 20:26 ` [Bug target/45771] " pinskia 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).