[llvm-commits] [PATCH] fvisibility=hidden makes all objc meta symbols private extern
Devang Patel
dpatel at apple.com
Tue Jan 30 13:36:47 PST 2007
DECL_VISIBILITY is valid only if TREE_PUBLIC is set. This patch uses
the same approach used by varasm.c
I applied this patch.
-
Devang
Index: llvm-backend.cpp
===================================================================
--- llvm-backend.cpp (revision 122793)
+++ llvm-backend.cpp (working copy)
@@ -536,7 +536,7 @@ void emit_global_to_llvm(tree decl) {
#endif /* TARGET_ADJUST_LLVM_LINKAGE */
// Handle visibility style
- if (DECL_VISIBILITY(decl) == VISIBILITY_HIDDEN)
+ if (TREE_PUBLIC(decl) && DECL_VISIBILITY(decl) == VISIBILITY_HIDDEN)
GV->setVisibility(GlobalValue::HiddenVisibility);
// Set the section for the global.
@@ -700,7 +700,7 @@ void make_decl_llvm(tree decl) {
#endif /* TARGET_ADJUST_LLVM_LINKAGE */
// Handle visibility style
- if (DECL_VISIBILITY(decl) == VISIBILITY_HIDDEN)
+ if (TREE_PUBLIC(decl) && DECL_VISIBILITY(decl) ==
VISIBILITY_HIDDEN)
FnEntry->setVisibility(Function::HiddenVisibility);
assert(FnEntry->getName() == Name &&"Preexisting fn with the
same name!");
@@ -729,7 +729,7 @@ void make_decl_llvm(tree decl) {
#endif /* TARGET_ADJUST_LLVM_LINKAGE */
// Handle visibility style
- if (DECL_VISIBILITY(decl) == VISIBILITY_HIDDEN)
+ if (TREE_PUBLIC(decl) && DECL_VISIBILITY(decl) ==
VISIBILITY_HIDDEN)
GV->setVisibility(Function::HiddenVisibility);
} else {
// If the global has a name, prevent multiple vars with the
same name from
@@ -749,7 +749,7 @@ void make_decl_llvm(tree decl) {
#endif /* TARGET_ADJUST_LLVM_LINKAGE */
// Handle visibility style
- if (DECL_VISIBILITY(decl) == VISIBILITY_HIDDEN)
+ if (TREE_PUBLIC(decl) && DECL_VISIBILITY(decl) ==
VISIBILITY_HIDDEN)
GV->setVisibility(Function::HiddenVisibility);
} else {
GV = GVE; // Global already created, reuse it.
Index: llvm-convert.cpp
===================================================================
--- llvm-convert.cpp (revision 122793)
+++ llvm-convert.cpp (working copy)
@@ -295,7 +295,7 @@ void TreeToLLVM::StartFunctionBody() {
"Calling convention disagreement between prototype and
impl!");
// The visibility can be changed from the last time we've seen
this
// function. Set to current.
- if (DECL_VISIBILITY(FnDecl) == VISIBILITY_HIDDEN)
+ if (TREE_PUBLIC(FnDecl) && DECL_VISIBILITY(FnDecl) ==
VISIBILITY_HIDDEN)
Fn->setVisibility(Function::HiddenVisibility);
else if (DECL_VISIBILITY(FnDecl) == VISIBILITY_DEFAULT)
Fn->setVisibility(Function::DefaultVisibility);
@@ -350,7 +350,7 @@ void TreeToLLVM::StartFunctionBody() {
#endif /* TARGET_ADJUST_LLVM_LINKAGE */
// Handle visibility style
- if (DECL_VISIBILITY(FnDecl) == VISIBILITY_HIDDEN)
+ if (TREE_PUBLIC(FnDecl) && DECL_VISIBILITY(FnDecl) ==
VISIBILITY_HIDDEN)
Fn->setVisibility(Function::HiddenVisibility);
// Handle functions in specified sections.
More information about the llvm-commits
mailing list