[Bug 264288] llvm miscompiles the extension ({ ... })
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 264288] llvm miscompiles the extension ({ ... })"
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 264288] llvm miscompiles the extension ({ ... })"
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 264288] llvm miscompiles the extension ({ ... })"
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 264288] llvm miscompiles the extension ({ ... })"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 27 May 2022 14:32:23 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=264288
Bug ID: 264288
Summary: llvm miscompiles the extension ({ ... })
Product: Base System
Version: 13.0-RELEASE
Hardware: Any
OS: Any
Status: New
Severity: Affects Some People
Priority: ---
Component: bin
Assignee: bugs@FreeBSD.org
Reporter: andrew.cagney@gmail.com
Given:
typedef const struct where {
const char *func;
const char *file;
long line;
} *where_t;
and:
struct connection_filter {
/* filters */
enum connection_kind kind;
const char *name;
const struct id *this_id_eq; /* strict; not same_id() */
const struct id *that_id_eq; /* strict; not same_id() */
/* current result (can be safely deleted) */
struct connection *c;
/* internal: handle on next entry */
struct list_entry *internal;
/* internal: total matches so far */
unsigned count;
/* .where MUST BE LAST (See GCC bug 102288) */
where_t where;
};
this:
+ struct connection_filter cq = {
+ .where = ({ \
+ static const struct where here = { \
+ .func = __func__, \
+ .file = __FILE__, \
+ .line = __LINE__, \
+ }; \
+ &here; \
+ }),
+ };
+ dbg("FOR_EACH_CONNECTION_... in %s %s %ld",
+ cq.where->func, cq.where->file, cq.where->line);
is mis-compiled. It prints NULL, NULL, 0 when it should print __func__,
__FILE__, __LINE__.
Note:
- .where is last, yes that's a reall gcc bug
- only the field .where is initialized, if a second field is initialized things
seem to compile correctly
- I could include the assembler but I'm not sure of the point - the compiler
lost track of values in a static structure
--
You are receiving this mail because:
You are the assignee for the bug.