This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/77281] New: [ARM] Wrong code generated for move of constant vector with mix of signed and unsigned zeros
- From: "mwahab at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 17 Aug 2016 14:40:35 +0000
- Subject: [Bug target/77281] New: [ARM] Wrong code generated for move of constant vector with mix of signed and unsigned zeros
- Authentication-results: sourceware.org; auth=none
- Auto-submitted: auto-generated
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77281
Bug ID: 77281
Summary: [ARM] Wrong code generated for move of constant vector
with mix of signed and unsigned zeros
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: mwahab at gcc dot gnu.org
Target Milestone: ---
Test gcc.c-torture/execute/ieee/pr72824-2.c fails for arm targets because the
code generated to move a vector of signed and unsigned zeros treats it as a
vector of unsigned zeros.
That is, an assignment x = { 0.f, -0.f, 0.f, -0.f } is treated as the
assignment x = { 0.f, 0.f, 0.f, 0.f }.
This is due to config/arm/arm.c/neon_valid_immediate using real_equal to
compare the vector elements.
Seen on trunk and gcc-6.