Mercurial > projects > ldc
annotate gen/linkage.h @ 1404:11b122f92136
Now that templates instantiations are no longer emitted for all modules that
even blink at them they seem to break due to being linkonce (if compiled with
any optimization level > 0), so let's give them weak linkage instead.
The difference is that unreferenced linkonce symbols can be deleted, while
weak symbols need to be preserved.
author | Frits van Bommel <fvbommel wxs.nl> |
---|---|
date | Thu, 21 May 2009 15:23:28 +0200 |
parents | 3647bef175d7 |
children | a865b81fc961 |
rev | line source |
---|---|
1064
f0b6549055ab
Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents:
diff
changeset
|
1 #ifndef LDC_GEN_LINKAGE_H |
f0b6549055ab
Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents:
diff
changeset
|
2 #define LDC_GEN_LINKAGE_H |
f0b6549055ab
Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents:
diff
changeset
|
3 |
f0b6549055ab
Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents:
diff
changeset
|
4 // Make it easier to test new linkage types |
f0b6549055ab
Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents:
diff
changeset
|
5 |
1404
11b122f92136
Now that templates instantiations are no longer emitted for all modules that
Frits van Bommel <fvbommel wxs.nl>
parents:
1347
diff
changeset
|
6 # define TEMPLATE_LINKAGE_TYPE llvm::GlobalValue::WeakODRLinkage |
1064
f0b6549055ab
Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents:
diff
changeset
|
7 # define TYPEINFO_LINKAGE_TYPE llvm::GlobalValue::LinkOnceODRLinkage |
f0b6549055ab
Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents:
diff
changeset
|
8 // The One-Definition-Rule shouldn't matter for debug info, right? |
f0b6549055ab
Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents:
diff
changeset
|
9 # define DEBUGINFO_LINKONCE_LINKAGE_TYPE \ |
1404
11b122f92136
Now that templates instantiations are no longer emitted for all modules that
Frits van Bommel <fvbommel wxs.nl>
parents:
1347
diff
changeset
|
10 llvm::GlobalValue::WeakAnyLinkage |
1064
f0b6549055ab
Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents:
diff
changeset
|
11 |
f0b6549055ab
Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents:
diff
changeset
|
12 |
f0b6549055ab
Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents:
diff
changeset
|
13 #endif |