GCC Miscompilation of vector shift
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Ubuntu on IBM z Systems |
Fix Released
|
High
|
Matthias Klose | ||
gcc-5 (Ubuntu) |
Invalid
|
Undecided
|
Unassigned | ||
gcc-6 (Ubuntu) |
Won't Fix
|
Wishlist
|
Unassigned | ||
gcc-7 (Ubuntu) |
Fix Released
|
High
|
Unassigned | ||
Bionic |
Fix Released
|
Undecided
|
Unassigned | ||
Disco |
Won't Fix
|
Undecided
|
Unassigned | ||
gcc-8 (Ubuntu) |
Fix Released
|
High
|
Skipper Bug Screeners | ||
Bionic |
Fix Released
|
Undecided
|
Unassigned | ||
Disco |
Won't Fix
|
Undecided
|
Unassigned |
Bug Description
Vector shift miscompilation
---Steps to Reproduce---
t.c:
__vector int
foo (__vector int a, int s)
{
return a << (s + 3);
}
gcc -O3 -march=z13 t.c -S -mzvector
foo:
veslf %v24,%v24,0(%r2) <---- +3 is omitted
br %r14
Contact Information = <email address hidden>
Userspace tool common name: GCC
The userspace tool has the following bit modes: 64
Backported fix has been applied to GCC 8 branch as r273493:
https:/
S/390: Fix vector shift count operand
We currently use subst definitions to handle the different variants of shift
count operands. Unfortunately, in the vector shift pattern the shift count
operand is used directly. Without it being adjusted for the 'subst' variants the
displacement value is omitted resulting in a wrong shift count being applied.
This patch needs to be applied to older branches as well.
gcc/ChangeLog:
2019-07-15 Andreas Krebbel <email address hidden>
Backport from mainline
2019-07-01 Andreas Krebbel <email address hidden>
* config/
gcc/testsuite/
2019-07-15 Andreas Krebbel <email address hidden>
Backport from mainline
2019-07-01 Andreas Krebbel <email address hidden>
* gcc.target/
Added:
branches/
Modified:
branches/
branches/
branches/
tags: | added: architecture-s39064 bugnameltc-179280 severity-high targetmilestone-inin--- |
Changed in ubuntu: | |
assignee: | nobody → Skipper Bug Screeners (skipper-screen-team) |
affects: | ubuntu → linux (Ubuntu) |
affects: | linux (Ubuntu) → gcc-8 (Ubuntu) |
Changed in ubuntu-z-systems: | |
status: | New → Triaged |
importance: | Undecided → High |
assignee: | nobody → Matthias Klose (doko) |
tags: | added: id-5d37a11c04114c8bb6452ed4 |
Changed in gcc-6 (Ubuntu): | |
status: | Confirmed → Won't Fix |
Changed in ubuntu-z-systems: | |
status: | Triaged → In Progress |
tags: |
added: targetmilestone-inin1804 removed: targetmilestone-inin--- |
Changed in gcc-8 (Ubuntu Bionic): | |
status: | Triaged → Fix Committed |
Changed in ubuntu-z-systems: | |
status: | In Progress → Fix Committed |
Changed in gcc-8 (Ubuntu Bionic): | |
status: | Fix Committed → Fix Released |
Changed in ubuntu-z-systems: | |
status: | Fix Committed → Fix Released |
that's on the gcc-7 branch as well. Is it needed on older branches as well?