[UBUNTU 20.04] GCC Miscompilation in vectorized code
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Ubuntu on IBM z Systems |
In Progress
|
High
|
Skipper Bug Screeners | ||
gcc |
Fix Released
|
High
|
|||
gcc-5 (Ubuntu) |
Invalid
|
Undecided
|
Unassigned | ||
Xenial |
Invalid
|
Undecided
|
Unassigned | ||
Bionic |
New
|
Undecided
|
Unassigned | ||
Disco |
Invalid
|
Undecided
|
Unassigned | ||
Eoan |
Invalid
|
Undecided
|
Unassigned | ||
Focal |
Invalid
|
Undecided
|
Unassigned | ||
gcc-6 (Ubuntu) |
Invalid
|
Undecided
|
Unassigned | ||
Xenial |
Invalid
|
Undecided
|
Unassigned | ||
Bionic |
New
|
Undecided
|
Unassigned | ||
Disco |
Invalid
|
Undecided
|
Unassigned | ||
Eoan |
Invalid
|
Undecided
|
Unassigned | ||
Focal |
Invalid
|
Undecided
|
Unassigned | ||
gcc-7 (Ubuntu) |
New
|
Undecided
|
Unassigned | ||
Xenial |
Invalid
|
Undecided
|
Unassigned | ||
Bionic |
New
|
Undecided
|
Unassigned | ||
Disco |
Invalid
|
Undecided
|
Unassigned | ||
Eoan |
Invalid
|
Undecided
|
Unassigned | ||
Focal |
New
|
Undecided
|
Unassigned | ||
gcc-8 (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
Xenial |
Invalid
|
Undecided
|
Unassigned | ||
Bionic |
Fix Released
|
Undecided
|
Unassigned | ||
Disco |
Invalid
|
Undecided
|
Unassigned | ||
Eoan |
Invalid
|
Undecided
|
Unassigned | ||
Focal |
Fix Released
|
Undecided
|
Unassigned | ||
gcc-9 (Ubuntu) |
Fix Released
|
High
|
Canonical Foundations Team | ||
Xenial |
Invalid
|
Undecided
|
Unassigned | ||
Bionic |
Invalid
|
Undecided
|
Unassigned | ||
Disco |
Invalid
|
Undecided
|
Unassigned | ||
Eoan |
Invalid
|
Undecided
|
Unassigned | ||
Focal |
Fix Released
|
High
|
Canonical Foundations Team |
Bug Description
Miscompilation in autovectorized code.
---Steps to Reproduce---
See GCC BZ: https:/
The following testcase abort when being compiled with -O3 -march=z13 on IBM Z:
struct a {
int b;
char c;
};
struct a d = {1, 16};
struct a *e = &d;
int f = 0;
int main() {
struct a g = {0, 0 };
f = 0;
for (; f <= 1; f++) {
g = d;
*e = g;
}
if (d.c != 16)
__builtin_
}
The movv1qi pattern emits halfword load instructions instead of character
loads.
All GCC versions since GCC 5 are affected.
Patches for GCC 8, 9, and 10 have been committed to the gcc.gnu.org branches.
Userspace tool common name: gcc
The userspace tool has the following bit modes: 64
Userspace rpm: various Ubuntu gcc packages
Package need to updated within LP
tags: | added: architecture-s39064 bugnameltc-182958 severity-high targetmilestone-inin2004 |
Changed in ubuntu: | |
assignee: | nobody → Skipper Bug Screeners (skipper-screen-team) |
affects: | ubuntu → linux (Ubuntu) |
affects: | linux (Ubuntu) → gcc-defaults (Ubuntu) |
Changed in ubuntu-z-systems: | |
importance: | Undecided → High |
Changed in gcc-defaults (Ubuntu): | |
importance: | Undecided → High |
Changed in ubuntu-z-systems: | |
assignee: | nobody → Skipper Bug Screeners (skipper-screen-team) |
Changed in gcc-defaults (Ubuntu): | |
assignee: | Skipper Bug Screeners (skipper-screen-team) → Canonical Foundations Team (canonical-foundations) |
Changed in ubuntu-z-systems: | |
status: | New → Triaged |
Changed in gcc-8 (Ubuntu Xenial): | |
status: | New → Invalid |
Changed in gcc-9 (Ubuntu Xenial): | |
status: | New → Invalid |
Changed in gcc-9 (Ubuntu Bionic): | |
status: | New → Invalid |
Changed in gcc: | |
importance: | Unknown → High |
status: | Unknown → New |
summary: |
- GCC Miscompilation in vectorized code + [UBUNTU 20.04] GCC Miscompilation in vectorized code |
Changed in gcc: | |
status: | New → Fix Released |
Changed in gcc-8 (Ubuntu): | |
status: | New → Fix Released |
Changed in gcc-8 (Ubuntu Focal): | |
status: | New → Fix Released |
Changed in gcc-8 (Ubuntu Bionic): | |
status: | New → Fix Released |
Changed in ubuntu-z-systems: | |
status: | Triaged → In Progress |
The following testcase abort when being compiled with -O3 -march=z13 on IBM Z:
struct a {
int b;
char c;
};
struct a d = {1, 16};
struct a *e = &d;
int f = 0;
int main() {
struct a g = {0, 0 };
f = 0;
for (; f <= 1; f++) {
g = d;
*e = g;
}
if (d.c != 16) abort() ;
__builtin_
}
The movv1qi pattern emits halfword load instructions instead of character loads.