Open Quuxplusone opened 6 years ago
Bugzilla Link | PR36693 |
Status | NEW |
Importance | P normal |
Reported by | Mike Lothian (mike@fireburn.co.uk) |
Reported on | 2018-03-12 09:41:40 -0700 |
Last modified on | 2018-03-14 10:53:59 -0700 |
Version | trunk |
Hardware | PC Linux |
CC | aaron@aaronballman.com, llvm-bugs@lists.llvm.org, rnk@google.com |
Fixed by commit(s) | |
Attachments | |
Blocks | |
Blocked by | |
See also |
These .inc files are not public header files. We probably shouldn't be generating most tablegen results into the include tree. This is a pretty common issue with LLVM's build system, though.
That aside is there a reason they're different on 32bit and 64bit?
I see, sorry, I misunderstood the report.
This looks like the bug:
void PragmaClangAttributeSupport::generateParsingHelpers(raw_ostream &OS) {
...
std::map<const Record *, std::vector<AttributeSubjectMatchRule>>
SubMatchRules;
...
for (const auto &SubMatchRule : SubMatchRules) {
OS << "Optional<attr::SubjectMatchRule> isAttributeSubjectMatchSubRuleFor_"
...
Iterating a map keyed by pointer value is not deterministic.
This was added in r300556 by Alex. Should be a quick fix.
Seems to be fixed now
(In reply to Mike Lothian from comment #4)
> Seems to be fixed now
I think it's more likely that ASLR lead to a different iteration order on your
next build. The underlying non-determinism still seems present.