diff options
author | Chandler Carruth <chandlerc@gmail.com> | 2015-03-26 08:32:49 +0000 |
---|---|---|
committer | Chandler Carruth <chandlerc@gmail.com> | 2015-03-26 08:32:49 +0000 |
commit | f85d98285e8eb6bcf42c2821e3b03abfc22ffac9 (patch) | |
tree | 611357433af1c908392bcd691daa41a33b1bfc9b /clang/include | |
parent | 23536d92c75dfebd65afa5ce1e588470e908b594 (diff) | |
download | bcm5719-llvm-f85d98285e8eb6bcf42c2821e3b03abfc22ffac9.tar.gz bcm5719-llvm-f85d98285e8eb6bcf42c2821e3b03abfc22ffac9.zip |
[Modules] Make "#pragma weak" undeclared identifiers be tracked
deterministically.
This fixes a latent issue where even Clang's Sema (and diagnostics) were
non-deterministic in the face of this pragma. The fix is super simple --
just use a MapVector so we track the order in which these are parsed (or
imported). Especially considering how rare they are, this seems like the
perfect tradeoff. I've also simplified the client code with judicious
use of auto and range based for loops.
I've added some pretty hilarious code to my stress test which now
survives the binary diff without issue.
llvm-svn: 233261
Diffstat (limited to 'clang/include')
-rw-r--r-- | clang/include/clang/Sema/Sema.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/clang/include/clang/Sema/Sema.h b/clang/include/clang/Sema/Sema.h index 9e07ad533f1..dde928ff914 100644 --- a/clang/include/clang/Sema/Sema.h +++ b/clang/include/clang/Sema/Sema.h @@ -592,7 +592,7 @@ public: /// WeakUndeclaredIdentifiers - Identifiers contained in /// \#pragma weak before declared. rare. may alias another /// identifier, declared or undeclared - llvm::DenseMap<IdentifierInfo*,WeakInfo> WeakUndeclaredIdentifiers; + llvm::MapVector<IdentifierInfo *, WeakInfo> WeakUndeclaredIdentifiers; /// ExtnameUndeclaredIdentifiers - Identifiers contained in /// \#pragma redefine_extname before declared. Used in Solaris system headers |