Hello, Everyone
Please find patch for llvm-gcc4 attached. It fixes linkage setup at
least for mingw32 platform as target. However, I'm worrying it's no so
correct :)
--
With best regards, Anton Korobeynikov.
Faculty of Mathematics & Mechanics, Saint Petersburg State University.
diff -r 1b4eb5588133 gcc/llvm-convert.cpp
--- a/gcc/llvm-convert.cpp Fri Oct 20 18:07:37 2006 +0000
+++ b/gcc/llvm-convert.cpp Mon Oct 23 01:28:02 2006 +0400
@@ -311,16 +311,18 @@ void TreeToLLVM::StartFunctionBody() {
// Compute the linkage that the function should get.
if (!TREE_PUBLIC(FnDecl) /*|| lang_hooks.llvm_is_in_anon(subr)*/) {
Fn->setLinkage(Function::InternalLinkage);
+ } else if (DECL_DECLARED_INLINE_P(FnDecl)) {
+ if (DECL_EXTERNAL(FnDecl)) {
+ Fn->setLinkage(Function::LinkOnceLinkage);
+ } else {
+ Fn->setLinkage(Function::WeakLinkage);
+ }
+ } else if (DECL_WEAK(FnDecl) || DECL_ONE_ONLY(FnDecl)) {
+ Fn->setLinkage(Function::WeakLinkage);
} else if (DECL_COMDAT(FnDecl)) {
Fn->setLinkage(Function::LinkOnceLinkage);
- } else if (DECL_DECLARED_INLINE_P(FnDecl)) {
- if (DECL_EXTERNAL(FnDecl) || DECL_ONE_ONLY(FnDecl))
- Fn->setLinkage(Function::LinkOnceLinkage);
- else
- Fn->setLinkage(Function::WeakLinkage);
- } else if (DECL_WEAK(FnDecl) || DECL_ONE_ONLY(FnDecl)) {
- Fn->setLinkage(Function::WeakLinkage);
- }
+ }
+
#ifdef TARGET_ADJUST_LLVM_LINKAGE
TARGET_ADJUST_LLVM_LINKAGE(Fn,FnDecl);
_______________________________________________
llvm-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits