This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
optimization/8697: [IA64] Lost zero-extension
- From: schwab at suse dot de
- To: gcc-gnats at gcc dot gnu dot org
- Date: 24 Nov 2002 23:40:55 -0000
- Subject: optimization/8697: [IA64] Lost zero-extension
- Reply-to: schwab at suse dot de
>Number: 8697
>Category: optimization
>Synopsis: [IA64] Lost zero-extension
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: wrong-code
>Submitter-Id: net
>Arrival-Date: Sun Nov 24 15:46:01 PST 2002
>Closed-Date:
>Last-Modified:
>Originator: schwab@suse.de
>Release: 3.2.1 20021021 (prerelease) (SuSE Linux)
>Organization:
>Environment:
System: Linux sykes 2.4.19-SMP #1 SMP Thu Nov 14 17:03:31 UTC 2002 ia64 unknown unknown GNU/Linux
Architecture: ia64
host: ia64-suse-linux-gnu
build: ia64-suse-linux-gnu
target: ia64-suse-linux-gnu
configured with: ../configure --enable-threads=posix --prefix=/usr --with-local-prefix=/usr/local --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib --enable-languages=c,c++,f77,objc,java,ada --enable-libgcj --with-gxx-include-dir=/usr/include/g++ --with-slibdir=/lib --with-system-zlib --enable-shared --enable-__cxa_atexit ia64-suse-linux
>Description:
The function output_move_const_into_data_reg is miscompiled due to a
lost zero extension during combine pass.
rotate.c.15.life has this:
(insn 33 95 34 (set (reg:SI 349)
(rotate:SI (reg/v:SI 342)
(const_int 16 [0x10]))) 189 {*rotlsi3_internal} (nil)
(expr_list:REG_DEAD (reg/v:SI 342)
(nil)))
(insn 34 33 36 (set (reg:DI 350)
(zero_extend:DI (reg:SI 349))) 32 {zero_extendsidi2} (insn_list 33 (nil))
(expr_list:REG_DEAD (reg:SI 349)
(nil)))
But combine changes that to:
(insn 34 33 36 (set (subreg:SI (reg:DI 350) 0)
(rotate:SI (reg/v:SI 342)
(const_int 16 [0x10]))) 189 {*rotlsi3_internal} (nil)
(expr_list:REG_DEAD (reg/v:SI 342)
(nil)))
There is nothing that sets the upper 32 bits of reg 350.
>How-To-Repeat:
$ gcc -O rotate.c -da
$ ./a.out
Aborted
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: text/x-csrc; name="rotate.c"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="rotate.c"
dm9pZCBhYm9ydCAodm9pZCk7CnN0cnVjdCBydHhfZGVmOwp0eXBlZGVmIHN0cnVjdCBydHhfZGVm
ICpydHg7CmVudW0gbWFjaGluZV9tb2RlCnsKICBWT0lEbW9kZSwKICBNQVhfTUFDSElORV9NT0RF
Cn07CnR5cGVkZWYgdW5pb24gcnR1bmlvbl9kZWYKewogIGxvbmcgcnR3aW50Owp9IHJ0dW5pb247
CnN0cnVjdCBydHhfZGVmCnsKICBlbnVtIG1hY2hpbmVfbW9kZSBtb2RlOwogIHJ0dW5pb24gZmxk
WzFdOwp9OwpydHggb3BlcmFuZHNbMTBdOwpydHgKZ2VuX3J0eF9DT05TVF9JTlQgKGVudW0gbWFj
aGluZV9tb2RlIG0sIGxvbmcgdikKewogIHN0YXRpYyBzdHJ1Y3QgcnR4X2RlZiByWzEwXTsKICBz
dGF0aWMgaW50IG47CiAgcnR4IHJldCA9ICZyW24rK107CiAgcmV0LT5tb2RlID0gbTsKICByZXQt
PmZsZFswXS5ydHdpbnQgPSB2OwogIHJldHVybiByZXQ7Cn0KdHlwZWRlZiBlbnVtIHsgTU9WTCwg
U1dBUCwgTkVHVywgTk9UVywgTk9UQiwgTU9WUSB9IENPTlNUX01FVEhPRDsKc3RhdGljIENPTlNU
X01FVEhPRApjb25zdF9tZXRob2QgKGNvbnN0YW50KQogICAgIHJ0eCBjb25zdGFudDsKewogIGlu
dCBpOwogIHVuc2lnbmVkIHU7CgogIGkgPSAoKChjb25zdGFudCktPmZsZFswXSkucnR3aW50KTsK
ICB1ID0gaTsKICBpZiAoKCh1bnNpZ25lZCkoKCh1ID4+IDE2KSB8ICh1IDw8IDE2KSkgKyAxMjgp
IDw9IDI1NSkpCiAgICByZXR1cm4gU1dBUDsKCiAgcmV0dXJuIE1PVkw7Cn0KY29uc3QgY2hhciAq
Cm91dHB1dF9tb3ZlX2NvbnN0X2ludG9fZGF0YV9yZWcgKG9wZXJhbmRzKQogICAgIHJ0eCAqb3Bl
cmFuZHM7CnsKICBpbnQgaTsKCiAgaSA9ICgoKG9wZXJhbmRzWzFdKS0+ZmxkWzBdKS5ydHdpbnQp
OwogIHN3aXRjaCAoY29uc3RfbWV0aG9kIChvcGVyYW5kc1sxXSkpCiAgICB7CiAgICBjYXNlIFNX
QVA6CiAgICAgIHsKICAgICAgICB1bnNpZ25lZCB1ID0gaTsKCiAgICAgICAgb3BlcmFuZHNbMV0g
PSBnZW5fcnR4X0NPTlNUX0lOVCAoVk9JRG1vZGUsIChsb25nKSAoKHUgPDwgMTYpIHwgKHUgPj4g
MTYpKSk7CiAgICAgICAgcmV0dXJuICJtb3ZlcSUubCAlMSwlMFxuXHRzd2FwICUwIjsKICAgICAg
fQoKICAgIGRlZmF1bHQ6CiAgICAgIHJldHVybiAwOwogICAgfQp9CgppbnQKbWFpbiAoKQp7CiAg
b3BlcmFuZHNbMV0gPSBnZW5fcnR4X0NPTlNUX0lOVCAoMCwgMHg0MDAwKTsKICBvdXRwdXRfbW92
ZV9jb25zdF9pbnRvX2RhdGFfcmVnIChvcGVyYW5kcyk7CiAgaWYgKG9wZXJhbmRzWzFdLT5mbGRb
MF0ucnR3aW50ICE9IDB4NDApCiAgICBhYm9ydCAoKTsKICByZXR1cm4gMDsKfQo=