Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:misc
gcc3
gcc34-i386-movsi-insv.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File gcc34-i386-movsi-insv.patch of Package gcc3
2005-05-10 Jakub Jelinek <jakub@redhat.com> * config/i386/i386.md (movsi_insv_1, movdi_insv_1_rex64): Mask CONST_INT values with 255. * gcc.dg/20050510-2.c: New test. --- gcc/config/i386/i386.md.jj 2005-05-10 00:47:12.000000000 +0200 +++ gcc/config/i386/i386.md 2005-05-10 14:01:42.000000000 +0200 @@ -1771,7 +1771,11 @@ (const_int 8)) (match_operand:SI 1 "general_operand" "Qmn"))] "!TARGET_64BIT" - "mov{b}\t{%b1, %h0|%h0, %b1}" +{ + if (GET_CODE (operands[1]) == CONST_INT) + operands[1] = GEN_INT (INTVAL (operands[1]) & 255); + return "mov{b}\t{%b1, %h0|%h0, %b1}"; +} [(set_attr "type" "imov") (set_attr "mode" "QI")]) @@ -1781,7 +1785,11 @@ (const_int 8)) (match_operand:DI 1 "nonmemory_operand" "Qn"))] "TARGET_64BIT" - "mov{b}\t{%b1, %h0|%h0, %b1}" +{ + if (GET_CODE (operands[1]) == CONST_INT) + operands[1] = GEN_INT (INTVAL (operands[1]) & 255); + return "mov{b}\t{%b1, %h0|%h0, %b1}"; +} [(set_attr "type" "imov") (set_attr "mode" "QI")]) --- gcc/testsuite/gcc.dg/20050510-2.c.jj 2005-04-07 15:51:53.775361896 +0200 +++ gcc/testsuite/gcc.dg/20050510-2.c 2005-05-10 14:37:12.000000000 +0200 @@ -0,0 +1,26 @@ +/* { dg-options run } */ +/* { dg-options "-O2" } */ + +extern void abort (void); + +__attribute__((noinline)) int +foo (unsigned char *x) +{ + if (x[0] != 1 || x[1] != 0x15) + abort (); + return 0; +} + +static inline void +bar (unsigned short x) +{ + unsigned char s[2] = { x >> 8, x & 0xff }; + foo (s); +} + +int +main (void) +{ + bar (0x115); + return 0; +}
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor