This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

optimization/8697: [IA64] Lost zero-extension


>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=


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]