diff options
author | Anton Korobeynikov <asl@math.spbu.ru> | 2007-04-29 18:35:00 +0000 |
---|---|---|
committer | Anton Korobeynikov <asl@math.spbu.ru> | 2007-04-29 18:35:00 +0000 |
commit | 6f9896fcc81a1128b5f436d1763cc6213745adf1 (patch) | |
tree | 89f99df6a320347cd98adf490edeea24432c86f6 /lib/Bytecode | |
parent | c6c98af9e5814e8066c82f20ca11cf646a5fc289 (diff) | |
download | llvm-6f9896fcc81a1128b5f436d1763cc6213745adf1.tar.gz llvm-6f9896fcc81a1128b5f436d1763cc6213745adf1.tar.bz2 llvm-6f9896fcc81a1128b5f436d1763cc6213745adf1.tar.xz |
Implement protected visibility. This partly implements PR1363. Linker
should be taught to deal with protected symbols.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36565 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Bytecode')
-rw-r--r-- | lib/Bytecode/Reader/Reader.cpp | 2 | ||||
-rw-r--r-- | lib/Bytecode/Writer/Writer.cpp | 5 |
2 files changed, 5 insertions, 2 deletions
diff --git a/lib/Bytecode/Reader/Reader.cpp b/lib/Bytecode/Reader/Reader.cpp index 99aac056ff..e75f0fcd61 100644 --- a/lib/Bytecode/Reader/Reader.cpp +++ b/lib/Bytecode/Reader/Reader.cpp @@ -1532,6 +1532,7 @@ void BytecodeReader::ParseFunctionBody(Function* F) { switch (VisibilityID) { case 0: Visibility = GlobalValue::DefaultVisibility; break; case 1: Visibility = GlobalValue::HiddenVisibility; break; + case 2: Visibility = GlobalValue::ProtectedVisibility; break; default: error("Unknown visibility type: " + utostr(VisibilityID)); Visibility = GlobalValue::DefaultVisibility; @@ -1767,6 +1768,7 @@ void BytecodeReader::ParseModuleGlobalInfo() { switch (VisibilityID) { case 0: Visibility = GlobalValue::DefaultVisibility; break; case 1: Visibility = GlobalValue::HiddenVisibility; break; + case 2: Visibility = GlobalValue::ProtectedVisibility; break; default: error("Unknown visibility type: " + utostr(VisibilityID)); Visibility = GlobalValue::DefaultVisibility; diff --git a/lib/Bytecode/Writer/Writer.cpp b/lib/Bytecode/Writer/Writer.cpp index f1c6f6c561..b4a2691600 100644 --- a/lib/Bytecode/Writer/Writer.cpp +++ b/lib/Bytecode/Writer/Writer.cpp @@ -957,8 +957,9 @@ static unsigned getEncodedLinkage(const GlobalValue *GV) { static unsigned getEncodedVisibility(const GlobalValue *GV) { switch (GV->getVisibility()) { default: assert(0 && "Invalid visibility!"); - case GlobalValue::DefaultVisibility: return 0; - case GlobalValue::HiddenVisibility: return 1; + case GlobalValue::DefaultVisibility: return 0; + case GlobalValue::HiddenVisibility: return 1; + case GlobalValue::ProtectedVisibility: return 2; } } |