https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82747
Bug ID: 82747
Summary: -Wpacked-not-aligned does not work on targets with
STRICT_ALIGNMENT==1
Product: gcc
Version: 8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: nsz at gcc dot gnu.org
Target Milestone: ---
new packed-not-aligned warning introduced for bug 53037 disappears
when STRICT_ALIGNMENT==1:
+FAIL: g++.dg/pr53037-2.C -std=gnu++11 (test for warnings, line 16)
+FAIL: g++.dg/pr53037-2.C -std=gnu++11 (test for warnings, line 29)
+FAIL: g++.dg/pr53037-2.C -std=gnu++11 (test for warnings, line 6)
+FAIL: g++.dg/pr53037-2.C -std=gnu++14 (test for warnings, line 16)
+FAIL: g++.dg/pr53037-2.C -std=gnu++14 (test for warnings, line 29)
+FAIL: g++.dg/pr53037-2.C -std=gnu++14 (test for warnings, line 6)
+FAIL: g++.dg/pr53037-2.C -std=gnu++98 (test for warnings, line 16)
+FAIL: g++.dg/pr53037-2.C -std=gnu++98 (test for warnings, line 29)
+FAIL: g++.dg/pr53037-2.C -std=gnu++98 (test for warnings, line 6)
+FAIL: g++.dg/pr53037-3.C -std=gnu++11 (test for warnings, line 16)
+FAIL: g++.dg/pr53037-3.C -std=gnu++11 (test for warnings, line 29)
+FAIL: g++.dg/pr53037-3.C -std=gnu++11 (test for warnings, line 6)
+FAIL: g++.dg/pr53037-3.C -std=gnu++14 (test for warnings, line 16)
+FAIL: g++.dg/pr53037-3.C -std=gnu++14 (test for warnings, line 29)
+FAIL: g++.dg/pr53037-3.C -std=gnu++14 (test for warnings, line 6)
+FAIL: g++.dg/pr53037-3.C -std=gnu++98 (test for warnings, line 16)
+FAIL: g++.dg/pr53037-3.C -std=gnu++98 (test for warnings, line 29)
+FAIL: g++.dg/pr53037-3.C -std=gnu++98 (test for warnings, line 6)
+FAIL: gcc.dg/pr53037-2.c (test for warnings, line 16)
+FAIL: gcc.dg/pr53037-2.c (test for warnings, line 32)
+FAIL: gcc.dg/pr53037-2.c (test for warnings, line 8)
+FAIL: gcc.dg/pr53037-3.c (test for warnings, line 16)
+FAIL: gcc.dg/pr53037-3.c (test for warnings, line 32)
+FAIL: gcc.dg/pr53037-3.c (test for warnings, line 8)
now on aarch64, -mstrict-align flag changes whether there is
a warning for
struct __attribute__ ((aligned (8))) S8 { char a[8]; };
struct __attribute__ ((packed)) S1 { struct S8 s8; };
even though the flag does not change the semantics of these
type declarations so the warning should be independent of it.
so i think the wrong constraint is checked for issuing the
warning.
same for all targets where STRICT_ALIGNMENT is defined
to 1 (arm, sparc, sh, mips, hppa,...) or may not be 0
under some conditions.