Anton Korobeynikov
82dd61114d
Properly handle linking of strong alias with weak function, this fixes PR2883
...
llvm-svn: 57594
2008-10-15 20:10:08 +00:00
Duncan Sands
08d91178e9
Rename isWeakForLinker to mayBeOverridden. Use it
...
instead of hasWeakLinkage in a bunch of optimization
passes.
llvm-svn: 56782
2008-09-29 11:25:42 +00:00
Oscar Fuentes
a229b3c9a7
Initial support for the CMake build system.
...
llvm-svn: 56419
2008-09-22 01:08:49 +00:00
Anton Korobeynikov
1a1140429e
Make safer variant of alias resolution routine to be default
...
llvm-svn: 56005
2008-09-09 20:05:04 +00:00
Anton Korobeynikov
ac2c655808
Fix incorrect linker behaviour: we shouldn't resolve weak aliases.
...
llvm-svn: 55997
2008-09-09 18:23:48 +00:00
Chris Lattner
0ead7a50b2
Reimplement LinkFunctionProtos in terms of GetLinkageResult. This fixes
...
the second half of link-global-to-func.ll and causes some minor changes in
messages.
There are two TODOs here. First, this causes a regression in
2008-07-06-AliasWeakDest.ll, which is now failing (so I xfailed it). Anton,
I would really appreciate it if you could take a look at this. It should be
a matter of adding proper alias support to GetLinkageResult, and was probably
already a latent bug that would manifest with globals.
The second todo is to reimplement LinkAlias in the same pattern as
function and global linking. This should be pretty straight-forward for
someone who knows aliases, but isn't a requirement for correctness.
llvm-svn: 53548
2008-07-14 07:23:24 +00:00
Chris Lattner
c08e7a00c3
don't do any linkage, not even type resolution, of symbols that have
...
internal linkage.
llvm-svn: 53547
2008-07-14 06:52:19 +00:00
Chris Lattner
34fc5a0eaa
implement linking of globals to functions, in one direction
...
(replacing a function with a global). This is needed when building
llvm itself with LTO on darwin, because of the EXPLICIT_SYMBOL hack
in lib/system/DynamicLibrary.cpp.
Implementation of linking the other way will need to wait for a
cleanup of LinkFunctionProtos.
llvm-svn: 53546
2008-07-14 06:49:45 +00:00
Chris Lattner
177a3008e1
wrap long lines, remove some code from a non-assert build.
...
llvm-svn: 53545
2008-07-14 05:52:33 +00:00
Chris Lattner
683ed3d94e
The source and dest of an alias are *not* required to have the same type,
...
though that would be nice and make sense :). Patch by Nathan Keynes!
llvm-svn: 53387
2008-07-10 01:09:33 +00:00
Dan Gohman
38740a98b2
Make DenseMap's insert return a pair, to more closely resemble std::map.
...
llvm-svn: 53177
2008-07-07 17:46:23 +00:00
Anton Korobeynikov
a970df57bc
Add convenient helper for checking whether global is weak in linker sense
...
having weak or linkonce or common or extweak LLVM linkage.
llvm-svn: 53158
2008-07-05 23:48:30 +00:00
Anton Korobeynikov
9cd0b50f16
Override weak stuff during linking of aliases. This fixes PR2463.
...
llvm-svn: 53156
2008-07-05 23:33:22 +00:00
Anton Korobeynikov
1bb56dedf5
Properly link alias and function decls. This fixes PR2146
...
llvm-svn: 53154
2008-07-05 23:03:21 +00:00
Chris Lattner
b32a9ef00f
when linking globals, make sure to preserve the address space of the global.
...
llvm-svn: 52810
2008-06-27 03:10:24 +00:00
Chris Lattner
d53bd2da98
Fix an error handling redefinition of linkonce functions where the
...
types differ. Patch by Nathan Keynes!
llvm-svn: 52527
2008-06-20 05:29:39 +00:00
Chris Lattner
56cdea6b3e
Add a missing ~ (dtor became ctor) which caused crashes on a bunch of stuff.
...
llvm-svn: 52374
2008-06-16 23:06:51 +00:00
Chris Lattner
9be15893c5
stop making PATypeHolder's so crazily.
...
llvm-svn: 52364
2008-06-16 21:17:12 +00:00
Chris Lattner
eee6f995dd
use a real associative container for type association instead of using
...
a vector with a linear search. This speeds up the linking testcase
in PR1860 from 0.965s to 0.385s on my system.
llvm-svn: 52357
2008-06-16 21:00:18 +00:00
Chris Lattner
fe677e9570
bail out sooner if we have two concrete but different types.
...
llvm-svn: 52351
2008-06-16 20:03:01 +00:00
Chris Lattner
85b66d18b9
simplify some code.
...
llvm-svn: 52350
2008-06-16 19:55:40 +00:00
Chris Lattner
8cb74995cc
Apply a patch from Nathan Keynes, which speeds up llvm-link on
...
the testcases in PR1860 from taking more than 1 hour (when I killed it)
to taking 1s.
llvm-svn: 52347
2008-06-16 19:48:08 +00:00
Chris Lattner
9995302b02
handle vectors. Any integers that got here would necessarily be different already.
...
llvm-svn: 52341
2008-06-16 18:27:53 +00:00
Chris Lattner
8aa89e4181
Simplify ResolveTypes by pulling the null case out into the one
...
client that cares and simplifying its control flow.
Remove the DestST argument to ResolveTypes and RecursiveResolveTypes*
which are dead now.
llvm-svn: 52340
2008-06-16 18:19:05 +00:00
Chris Lattner
e9bb8552af
simplify RecursiveResolveTypes and ResolveTypes by pulling the naming out of
...
ResolveTypes into the one place that needs it.
llvm-svn: 52338
2008-06-16 18:11:40 +00:00
Chris Lattner
77e8ac4d03
use 'continue' to make the function linker simpler. When linking a strong
...
function into a weak function, zap the weak function body so that the
strong one overrides it. This fixes PR2410
llvm-svn: 52135
2008-06-09 07:47:34 +00:00
Chris Lattner
228a5f1867
minor changes to short circuit the 'no linkage' case earlier for
...
function bodies. We now don't try to unify types or handling type
mismatches if when linking an internal foo to an external foo.
llvm-svn: 52134
2008-06-09 07:36:11 +00:00
Chris Lattner
ec7441b365
simplify function visibility handling.
...
llvm-svn: 52133
2008-06-09 07:25:28 +00:00
Duncan Sands
dd7daee850
Factor code to copy global value attributes like
...
the section or the visibility from one global
value to another: copyAttributesFrom. This is
particularly useful for duplicating functions:
previously this was done by explicitly copying
each attribute in turn at each place where a
new function was created out of an old one, with
the result that obscure attributes were regularly
forgotten (like the collector or the section).
Hopefully now everything is uniform and nothing
is forgotten.
llvm-svn: 51567
2008-05-26 19:58:59 +00:00
Gabor Greif
697e94cc22
Fix a bunch of 80col violations that arose from the Create API change. Tweak makefile targets to find these better.
...
llvm-svn: 51143
2008-05-15 10:04:30 +00:00
Dale Johannesen
ce4396bc92
Add CommonLinkage; currently tentative definitions
...
are represented as "weak", but there are subtle differences
in some cases on Darwin, so we need both. The intent
is that "common" will behave identically to "weak" unless
somebody changes their target to do something else.
No functional change as yet.
llvm-svn: 51118
2008-05-14 20:12:51 +00:00
Anton Korobeynikov
acbdaa2406
Fix linking of internal aliases
...
llvm-svn: 50950
2008-05-10 14:41:43 +00:00
Anton Korobeynikov
fc2edad4ae
Turn StripPointerCast() into a method
...
llvm-svn: 50836
2008-05-07 22:54:15 +00:00
Anton Korobeynikov
09cfb1cf2d
If weak GlobalVariable was bitcast'ed to different type during linking
...
we will need to strip all casts for intializer lookup.
llvm-svn: 50776
2008-05-06 22:52:54 +00:00
Owen Anderson
7629b71dd4
Revert r49614. As Dan pointed out, some of these aren't correct.
...
llvm-svn: 49657
2008-04-14 17:38:21 +00:00
Owen Anderson
1f6fbc4bc3
Replace calls of the form V1->setName(V2->getName()) with V1->takeName(V2),
...
which is significantly more efficient.
llvm-svn: 49614
2008-04-13 19:15:17 +00:00
Gabor Greif
e9ecc68d8f
API changes for class Use size reduction, wave 1.
...
Specifically, introduction of XXX::Create methods
for Users that have a potentially variable number of
Uses.
llvm-svn: 49277
2008-04-06 20:25:17 +00:00
Chris Lattner
6f2ffdb73f
Change the MemoryBuffer::getFile* methods to take just a pointer to the
...
start of a filename, not a filename+length. All clients can produce a
null terminated name, and the system api's require null terminated
strings anyway.
llvm-svn: 49041
2008-04-01 18:04:03 +00:00
Anton Korobeynikov
e6d90f5a95
Ultimately resolve aliases during linking, if possible
...
llvm-svn: 48259
2008-03-11 22:51:09 +00:00
Anton Korobeynikov
2591afca0a
Fix thinko: alias always defines new symbol. Even is aliasee itself is undefined.
...
llvm-svn: 48203
2008-03-11 00:24:53 +00:00
Anton Korobeynikov
510fc32d15
Add sanity checks
...
llvm-svn: 48184
2008-03-10 22:36:53 +00:00
Anton Korobeynikov
d5160da577
Typo: 'function' => 'alias'
...
llvm-svn: 48183
2008-03-10 22:36:35 +00:00
Anton Korobeynikov
66a6271c07
Syntactic sugar'ify stuff :)
...
llvm-svn: 48182
2008-03-10 22:36:08 +00:00
Anton Korobeynikov
715ef43c2e
Always run 'make check' :) Fix fallout from prev. commit: query for possible
...
alias destination only if we don't have anything to link to
llvm-svn: 48181
2008-03-10 22:35:31 +00:00
Anton Korobeynikov
eeb5ca6f5f
Make error messages to have common style
...
llvm-svn: 48180
2008-03-10 22:34:46 +00:00
Anton Korobeynikov
e79f4c77f0
Properly link globals with aliases
...
llvm-svn: 48179
2008-03-10 22:34:28 +00:00
Anton Korobeynikov
f6439246cc
Remove the LinkGlobal weirderness in common linking phase.
...
llvm-svn: 48177
2008-03-10 22:33:53 +00:00
Anton Korobeynikov
1f93c50ace
Typo
...
llvm-svn: 48176
2008-03-10 22:33:22 +00:00
Ted Kremenek
d48ed17d18
Fix some compilation errors on msvc:
...
- "Redefinition of I" (iterator masks previous definition)
- include missing header file
Patch by Argiris Kirtzidis!
llvm-svn: 48115
2008-03-09 18:32:50 +00:00
Anton Korobeynikov
e8a3e74b6c
Clarify some important bits
...
llvm-svn: 48010
2008-03-07 18:34:50 +00:00
Anton Korobeynikov
0074ea3ae7
Small cleanup: propagate thread-localness via generic routine.
...
No functionality change.
llvm-svn: 48009
2008-03-07 18:32:18 +00:00
Anton Korobeynikov
2609888f29
Missed patch from my last commit
...
llvm-svn: 47977
2008-03-05 23:21:39 +00:00
Anton Korobeynikov
e43711d392
Resolve aliases to aliasees, where possible
...
llvm-svn: 47975
2008-03-05 23:08:47 +00:00
Anton Korobeynikov
24f65c3ab7
Handle functions as targets during linking of aliases as well
...
llvm-svn: 47974
2008-03-05 23:08:16 +00:00
Anton Korobeynikov
dac5fa94ef
Try hard to link aliases. Checks can be too strict by now.
...
llvm-svn: 47968
2008-03-05 22:22:46 +00:00
Anton Korobeynikov
2e13597f9d
Remember the source->dest mapping when copying aliases. This fixes PR2054
...
llvm-svn: 47945
2008-03-05 15:27:21 +00:00
Anton Korobeynikov
12cee7195f
Clarify the state-of-the-art
...
llvm-svn: 47944
2008-03-05 15:11:00 +00:00
Anton Korobeynikov
28179f764c
Properly populate lists of defined/undefined symbols in presence of aliases
...
llvm-svn: 47900
2008-03-04 20:16:11 +00:00
Lauro Ramos Venancio
14241b29b2
Emit an error when a library is not found. It is the GNU ld behavior and it is expected by the configure scripts.
...
llvm-svn: 47674
2008-02-27 17:20:32 +00:00
Anton Korobeynikov
bddf51bc9b
And final pack of warnings silencing
...
llvm-svn: 47372
2008-02-20 11:27:04 +00:00
Chris Lattner
90c2df5bd0
random cleanups.
...
llvm-svn: 47334
2008-02-19 18:49:08 +00:00
Chris Lattner
f3ebc3f3d2
Remove attribution from file headers, per discussion on llvmdev.
...
llvm-svn: 45418
2007-12-29 20:36:04 +00:00
Chris Lattner
a087a8d2ce
remove attribution from lib Makefiles.
...
llvm-svn: 45415
2007-12-29 20:09:26 +00:00
Anton Korobeynikov
4f00f531ad
Ignore functions with internal linkages during linking. This snipped mimics the
...
behaviour of LinkGlobals() function.
llvm-svn: 45375
2007-12-27 23:21:57 +00:00
Gordon Henriksen
520e64c0c2
Fixing several transforms which would drop the collector attribute
...
when copying functions.
llvm-svn: 45356
2007-12-25 22:16:06 +00:00
Duncan Sands
ad0ea2d430
Fix PR1146: parameter attributes are longer part of
...
the function type, instead they belong to functions
and function calls. This is an updated and slightly
corrected version of Reid Spencer's original patch.
The only known problem is that auto-upgrading of
bitcode files doesn't seem to work properly (see
test/Bitcode/AutoUpgradeIntrinsics.ll). Hopefully
a bitcode guru (who might that be? :) ) will fix it.
llvm-svn: 44359
2007-11-27 13:23:08 +00:00
Dan Gohman
5e79a6108f
Use correct parentheses with the '&& "..."' idiom in an assert.
...
llvm-svn: 42750
2007-10-08 15:13:30 +00:00
Chris Lattner
1cc79985cd
Fix PR1611 - Visibility should be ignored for a declaration
...
when a definition's visibility is different. Likewise, the
visibility of two declarations mismatching is not an error.
llvm-svn: 41174
2007-08-19 22:22:54 +00:00
Reid Spencer
19c21c593f
Improve error handling in the linker by:
...
1. Eliminate redundant error messages. LinkInFile and LinkInArchive
already call the error() method in each case so there's no use
telling the user again that an item couldn't be linked in.
2. Improve the formatting of error messages (separating content).
3. Change the wording for the warning about unrecognized files. Make
it clear that the file is being ignored.
llvm-svn: 41121
2007-08-16 07:47:30 +00:00
Reid Spencer
e97fee7188
Ensure that error messages a propagated from calls to LinkInModule so they get
...
reported to the end user.
llvm-svn: 41117
2007-08-16 07:23:37 +00:00
Reid Spencer
8609c06956
Allow the filename "-" to be a place holder for stdin. This allows directing
...
stdin through llvm-ld and llvm-link.
llvm-svn: 40938
2007-08-08 19:52:29 +00:00
Reid Spencer
71ce927d7b
Report an error if one occurs in releaseModule.
...
llvm-svn: 40405
2007-07-22 21:39:37 +00:00
Gabor Greif
3d3fc3296e
eliminate residual cruft related to recognizing bytecode
...
files.
bitcode files are the only LLVM format left.
llvm-svn: 37945
2007-07-06 13:38:17 +00:00
Gabor Greif
e16561cd5d
Here is the bulk of the sanitizing.
...
Almost all occurrences of "bytecode" in the sources have been eliminated.
llvm-svn: 37913
2007-07-05 17:07:56 +00:00
Lauro Ramos Venancio
b2c3a67015
Fix a bug in my previous patch.
...
llvm-svn: 37778
2007-06-28 20:06:38 +00:00
Lauro Ramos Venancio
b00c9c0d50
When linking two modules, we should copy the alias.
...
llvm-svn: 37776
2007-06-28 19:02:54 +00:00
Lauro Ramos Venancio
85703e3796
Propagate alignment, section name and visibility when linking "appending
...
global values".
Fix noinline linkage.
llvm-svn: 37482
2007-06-06 22:01:12 +00:00
Chris Lattner
41528e6e42
switch this to bitcode instead of bytecode
...
llvm-svn: 36867
2007-05-06 09:29:13 +00:00
Chris Lattner
a0e5f01e23
add bitcode support
...
llvm-svn: 36855
2007-05-06 06:02:13 +00:00
Reid Spencer
8d4ff90680
If an archive is not recognized as an LLVM bytecode archive then declare
...
that it is native so that the linker will pass it on downstream. This avoids
a problem where the native link line fails because there is both a .so and
a .a file. The .a file gets processed as bytecode and then dropped from the
command line.
llvm-svn: 36584
2007-04-30 00:29:39 +00:00
Reid Spencer
d857ef651b
Dependent libraries could be native too.
...
llvm-svn: 36582
2007-04-30 00:00:10 +00:00
Anton Korobeynikov
31fc4f9526
Implement visibility checking during linking. Also implement protected
...
visibility support for bitcode.
llvm-svn: 36577
2007-04-29 20:56:48 +00:00
Lauro Ramos Venancio
749e4668e7
Implement the "thread_local" keyword.
...
llvm-svn: 35950
2007-04-12 18:32:50 +00:00
Reid Spencer
a472f66dd0
For PR1146:
...
Put the parameter attributes in their own ParamAttr name space. Adjust the
rest of llvm as a result.
llvm-svn: 35877
2007-04-11 02:44:20 +00:00
Reid Spencer
d1b53f538d
For PR1302:
...
Use local variable names that match the function parameter name that it
is passed to so the code is more clear, to wit: is_bytecode -> is_native
llvm-svn: 35656
2007-04-04 06:44:18 +00:00
Reid Spencer
a2c415526c
For PR1302:
...
Implement file tests for both LinkInLibrary and LinkInFile to determine if
the file is native. Don't generate warnings if the file is native.
llvm-svn: 35653
2007-04-04 06:33:17 +00:00
Reid Spencer
d84d35ba70
For PR1195:
...
Rename PackedType -> VectorType, ConstantPacked -> ConstantVector, and
PackedTyID -> VectorTyID. No functional changes.
llvm-svn: 34293
2007-02-15 02:26:10 +00:00
Chris Lattner
2a8d2e0e52
simplify this code by using value::takename
...
llvm-svn: 34172
2007-02-11 00:39:38 +00:00
Chris Lattner
a0e49f2ead
push bytecode decompressor out through APIs. Now the bytecode reader
...
api's look like this:
ModuleProvider *getBytecodeModuleProvider(
const std::string &Filename, ///< Name of file to be read
BCDecompressor_t *BCDC = Compressor::decompressToNewBuffer,
std::string* ErrMsg = 0, ///< Optional error message holder
BytecodeHandler* H = 0 ///< Optional handler for reader events
);
This is ugly, but allows a client to say:
getBytecodeModuleProvider("foo", 0);
If they do this, there is no dependency on the compression libraries, saving
codesize.
llvm-svn: 34012
2007-02-07 21:41:02 +00:00
Reid Spencer
1241d6d5ab
For PR411:
...
Adjust to changes in Module interface:
getMainFunction() -> getFunction("main")
getNamedFunction(X) -> getFunction(X)
llvm-svn: 33922
2007-02-05 21:19:13 +00:00
Reid Spencer
3aaaa0b2bd
For PR411:
...
This patch replaces the SymbolTable class with ValueSymbolTable which does
not support types planes. This means that all symbol names in LLVM must now
be unique. The patch addresses the necessary changes to deal with this and
removes code no longer needed as a result. This completes the bulk of the
changes for this PR. Some cleanup patches will follow.
llvm-svn: 33918
2007-02-05 20:47:22 +00:00
Reid Spencer
d3ba7d9b42
Fix some comments and other minor sundry things.
...
llvm-svn: 33873
2007-02-04 04:43:17 +00:00
Reid Spencer
2dc3653531
Ensure that visibility and section are properly propagated.
...
llvm-svn: 33872
2007-02-04 04:30:33 +00:00
Reid Spencer
90246aa71e
Back out last revision which was committed by accident.
...
llvm-svn: 33871
2007-02-04 04:29:21 +00:00
Reid Spencer
2ea1bb2b8a
Make sure that section and visibility are properly propagated.
...
llvm-svn: 33870
2007-02-04 04:28:18 +00:00
Andrew Lenharth
dd924e4e95
preserve sections of globals
...
llvm-svn: 33756
2007-02-01 17:12:54 +00:00
Reid Spencer
5301e7c605
For PR1136: Rename GlobalVariable::isExternal as isDeclaration to avoid
...
confusion with external linkage types.
llvm-svn: 33663
2007-01-30 20:08:39 +00:00
Chris Lattner
78bddc388c
Read from the right place.
...
llvm-svn: 33611
2007-01-29 02:18:13 +00:00
Chris Lattner
7f3bd82ab9
Fix PR1139
...
llvm-svn: 33610
2007-01-29 00:21:34 +00:00
Reid Spencer
3ac38e99b9
For PR761:
...
The Module::setEndianness and Module::setPointerSize methods have been
removed. Instead you can get/set the DataLayout. Adjust thise accordingly.
llvm-svn: 33530
2007-01-26 08:11:39 +00:00