public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
From: "heinrich dot brand at fujitsu-siemens dot com" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug optimization/12147] New: Wrong code with -O2 in context of reload Date: Wed, 03 Sep 2003 07:44:00 -0000 [thread overview] Message-ID: <20030903074430.12147.heinrich.brand@fujitsu-siemens.com> (raw) PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org. http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12147 Summary: Wrong code with -O2 in context of reload Product: gcc Version: 3.3.1 Status: UNCONFIRMED Severity: normal Priority: P2 Component: optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: heinrich dot brand at fujitsu-siemens dot com CC: gcc-bugs at gcc dot gnu dot org GCC build triplet: s390-linux-gnu GCC host triplet: s390-linux-gnu GCC target triplet: s390-linux-gnu Please see usage of r11 in x.c.24.greg generated with the code below: (insn 4069 4063 4068 0 (nil) (set (reg:SI 11 %r11) (const_int 253 [0xfd])) 54 {*movsi_lhi} (nil) (nil)) (insn 4068 4069 1767 0 (nil) (set (reg:SI 11 %r11) (const_int 5572 [0x15c4])) 54 {*movsi_lhi} (nil) (nil)) (insn 1767 4068 4067 0 0x40209980 (parallel [ (set (reg:SI 11 %r11) (xor:SI (reg:SI 11 %r11) (mem:SI (plus:SI (reg/f:SI 15 %r15) (reg:SI 11 %r11)) [178 S8 A8]))) (clobber (reg:CC 33 %cc)) ]) 216 {xorsi3} (insn_list 1759 (insn_list:REG_DEP_OUTPUT 47 (insn_list: REG_DEP_OUTPUT 1621 (insn_list 1765 (insn_list:REG_DEP_ANTI 52 (nil)))))) (expr_list:REG_NO_CONFLICT (mem:DI (plus:SI (reg/f:SI 15 %r15) (const_int 5568 [0x15c0])) [178 S8 A8]) (nil))) ############################################################################# test: #define asop &= #define op & #define conv signed char #include <stdio.h> struct C77 { unsigned long long f1 : 1; unsigned long long a1 : 6; /* Bitfeld innerhalb eines Bytes */ unsigned long long f2 : 1; unsigned long long a2 : 7; /* linksbuendig */ unsigned long long f3 : 2; unsigned long long a3 : 7; /* rechtsbuendig */ unsigned long long f4 : 8; unsigned long long f5 : 1; unsigned long long b1 : 14;/* Bitfeld innerhalb eines Halbworts */ unsigned long long f6 : 1; unsigned long long b2 : 15;/* linksbuendig */ unsigned long long f7 : 1; unsigned long long f8 : 1; unsigned long long b3 : 15;/* rechtsbuendig */ unsigned long long f9 : 16; unsigned long long fa : 1; unsigned long long c1 : 30;/* Bitfeld innerhalb eines Worts */ unsigned long long fb : 1; unsigned long long c2 : 31;/* linksbuendig */ unsigned long long fc : 2; unsigned long long c3 : 31;/* rechtsbuendig */ unsigned long long fd : 1; unsigned long long d1 : 62;/* Bitfeld innerhalb eines Doppelworts */ unsigned long long fe : 1; unsigned long long d2 : 63;/* linksbuendig */ unsigned long long ff : 1; unsigned long long fg : 1; unsigned long long d3 : 63;/* rechtsbuendig */ }; #define XA 0xca9653c6396a5c63LL #define XB 0xffffffffffffffffLL #define XC 0x2424242424242424LL #define XD 0x0c51LL #define XE 0x1414141414141414LL static int f1(), f2(), f3(), f5(), f6(); void tprint(struct C77 y[]); int main() { register int i; long dummy[824]; struct C77 w[4]; long long z[4][20]; static int q; q = 0; z[0][0] = XA; z[1][0] = XB; z[2][0] = XC; z[3][0] = XD; #if 1 for(i=3;i<4;i++){i = 3; } #endif memset(w, (char) XE, 4*sizeof(struct C77)); #if 1 /*alle z[][] schalten */ #if 1 z[0][1] = (conv) (w[0].a1 asop XA); z[0][2] = (conv) (w[0].a1 asop XA); z[0][3] = (conv) (w[0].a1 asop XA); z[0][4] = (conv) (w[0].b1 asop XA); z[0][5] = (conv) (w[0].b1 asop XA); #if 1 z[0][6] = (conv) (w[0].b3 asop XA); /*SUCCESSFUL,FAILED*/ #else z[0][6] = (conv) (w[0].b2 asop XA); /*SUCCESSFUL,SUCCESSFUL*/ #endif z[0][7] = (conv) (w[0].c1 asop XA); z[0][8] = (conv) (w[0].c2 asop XA); z[0][9] = (conv) (w[0].c3 asop XA); z[0][10] = (conv) (w[0].d1 asop XA); z[0][11] = (conv) (w[0].d2 asop XA); z[0][12] = (conv) (w[0].d3 asop XA); #endif #if 1 z[1][1] = (conv) (w[1].a1 asop XB); z[1][2] = (conv) (w[1].a2 asop XB); z[1][3] = (conv) (w[1].a3 asop XB); z[1][4] = (conv) (w[1].b1 asop XB); z[1][5] = (conv) (w[1].b2 asop XB); z[1][6] = (conv) (w[1].b3 asop XB); z[1][7] = (conv) (w[1].c1 asop XB); z[1][8] = (conv) (w[1].c2 asop XB); z[1][9] = (conv) (w[1].c3 asop XB); z[1][10] = (conv) (w[1].d1 asop XB); z[1][11] = (conv) (w[1].d2 asop XB); z[1][12] = (conv) (w[1].d3 asop XB); #endif z[2][1] = (conv) (w[2].a1 asop XC); z[2][2] = (conv) (w[2].a2 asop XC); z[2][3] = (conv) (w[2].a3 asop XC); z[2][4] = (conv) (w[2].b1 asop XC); z[2][5] = (conv) (w[2].b2 asop XC); z[2][6] = (conv) (w[2].b3 asop XC); z[2][7] = (conv) (w[2].c1 asop XC); z[2][8] = (conv) (w[2].c2 asop XC); z[2][9] = (conv) (w[2].c3 asop XC); z[2][10] = (conv) (w[2].d1 asop XC); z[2][11] = (conv) (w[2].d2 asop XC); z[2][12] = (conv) (w[2].d3 asop XC); z[3][1] = (conv) (w[3].a1 asop XD); z[3][2] = (conv) (w[3].a2 asop XD); z[3][3] = (conv) (w[3].a3 asop XD); z[3][4] = (conv) (w[3].b1 asop XD); z[3][5] = (conv) (w[3].b2 asop XD); z[3][6] = (conv) (w[3].b3 asop XD); z[3][7] = (conv) (w[3].c1 asop XD); z[3][8] = (conv) (w[3].c2 asop XD); z[3][9] = (conv) (w[3].c3 asop XD); z[3][10] = (conv) (w[3].d1 asop XD); z[3][11] = (conv) (w[3].d2 asop XD); #else #endif {unsigned long long r,res; unsigned long long ersatz[10]; char zw,zwntf("r= %llx\n",r); res=r; printf("\n"); r = r ^ XDD; printf("w[3].d3: %llx zwi: %x\n",w[3].d3,zwi); /*if( w[3].d3 == r)printf("SUCCESSFUL\n");*/ if((conv) w[3].d3 == (conv)r) printf("SUCCESSFUL\n"); else printf("FAILED\n"); printf("(conv) w[3].d3: %x (conv) r: %x\n",(conv)w[3].d3,(conv) r); exit(res&1); } }
next reply other threads:[~2003-09-03 7:44 UTC|newest] Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top 2003-09-03 7:44 heinrich dot brand at fujitsu-siemens dot com [this message] 2004-01-21 17:23 ` [Bug optimization/12147] " dhazeghi at yahoo dot com 2004-01-21 17:49 ` uweigand at gcc dot gnu dot org 2004-01-21 17:57 ` dhazeghi at yahoo dot com 2004-01-22 16:51 ` uweigand at gcc dot gnu dot org 2004-01-23 2:18 ` uweigand at gcc dot gnu dot org 2004-01-23 2:24 ` pinskia at gcc dot gnu dot org 2004-01-30 23:10 ` cvs-commit at gcc dot gnu dot org 2004-01-30 23:13 ` cvs-commit at gcc dot gnu dot org 2004-01-30 23:23 ` uweigand at gcc dot gnu dot org 2004-01-30 23:26 ` pinskia at gcc dot gnu dot org 2004-02-04 13:04 ` cvs-commit at gcc dot gnu dot org 2004-03-05 20:17 ` cvs-commit at gcc dot gnu dot org 2004-03-05 22:00 ` uweigand at gcc dot gnu dot org
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20030903074430.12147.heinrich.brand@fujitsu-siemens.com \ --to=gcc-bugzilla@gcc.gnu.org \ --cc=gcc-bugs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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).