llvm-project/llvm/lib/Analysis
Duncan Sands 12da8ce3d2 Introduce new linkage types linkonce_odr, weak_odr, common_odr
and extern_weak_odr.  These are the same as the non-odr versions,
except that they indicate that the global will only be overridden
by an *equivalent* global.  In C, a function with weak linkage can
be overridden by a function which behaves completely differently.
This means that IP passes have to skip weak functions, since any
deductions made from the function definition might be wrong, since
the definition could be replaced by something completely different
at link time.   This is not allowed in C++, thanks to the ODR
(One-Definition-Rule): if a function is replaced by another at
link-time, then the new function must be the same as the original
function.  If a language knows that a function or other global can
only be overridden by an equivalent global, it can give it the
weak_odr linkage type, and the optimizers will understand that it
is alright to make deductions based on the function body.  The
code generators on the other hand map weak and weak_odr linkage
to the same thing.

llvm-svn: 66339
2009-03-07 15:45:40 +00:00
..
IPA Change WriteTypeSymbolic to not put a space out before types, also, remove 2009-02-28 21:05:51 +00:00
AliasAnalysis.cpp Generalize some alias analysis logic from atomic 2009-02-14 10:56:35 +00:00
AliasAnalysisCounter.cpp Tidy up several unbeseeming casts from pointer to intptr_t. 2008-09-04 17:05:41 +00:00
AliasAnalysisEvaluator.cpp Tidy up several unbeseeming casts from pointer to intptr_t. 2008-09-04 17:05:41 +00:00
AliasDebugger.cpp Refactor my previous change to maintain the distinction between AliasAnalysis and BasicAliasAnalysis. This involves some wider changes because it 2009-02-05 23:36:27 +00:00
AliasSetTracker.cpp Ignore the debug info intrinsics when adding instructions into alias sets. 2009-03-03 06:02:04 +00:00
Analysis.cpp Expose Function::viewCFG and Function::viewCFGOnly to bindings. 2008-03-31 16:22:09 +00:00
BasicAliasAnalysis.cpp Generalize some alias analysis logic from atomic 2009-02-14 10:56:35 +00:00
CFGPrinter.cpp Rationalize the names of passes that print information: 2008-09-23 12:47:39 +00:00
CMakeLists.txt Fix PR3415 (infinite loop in EscapeAnalysis) by 2009-01-28 11:33:59 +00:00
CaptureTracking.cpp BasicAliasAnalysis and FunctionAttrs were both 2009-01-18 12:19:30 +00:00
ConstantFolding.cpp Rename getABITypeSize to getTypePaddedSize, as 2009-01-12 20:38:59 +00:00
DbgInfoPrinter.cpp Add -print-dbginfo pass that prints LLVM IR with comments inserted to show 2008-12-16 09:09:19 +00:00
DebugInfo.cpp Introduce new linkage types linkonce_odr, weak_odr, common_odr 2009-03-07 15:45:40 +00:00
InstCount.cpp Tidy up several unbeseeming casts from pointer to intptr_t. 2008-09-04 17:05:41 +00:00
Interval.cpp Remove attribution from file headers, per discussion on llvmdev. 2007-12-29 20:36:04 +00:00
IntervalPartition.cpp Tidy up several unbeseeming casts from pointer to intptr_t. 2008-09-04 17:05:41 +00:00
LibCallAliasAnalysis.cpp Expose a public interface to this pass. 2008-06-05 23:45:18 +00:00
LibCallSemantics.cpp Add a new interface for describing the behavior of library calls. This 2008-05-07 18:21:13 +00:00
LoopInfo.cpp Remove dead comments. 2008-12-18 09:01:18 +00:00
LoopPass.cpp Sprinkle some PrettyStackEntry magic into the passmanager. With this, we now 2009-03-06 06:45:05 +00:00
LoopVR.cpp Rename ScalarEvolution's getIterationCount to getBackedgeTakenCount, 2009-02-24 18:55:53 +00:00
Makefile Removed trailing whitespace from Makefiles. 2009-01-09 16:44:42 +00:00
MemoryDependenceAnalysis.cpp Remove this as dbginfo intrinsics has been defined as 2009-03-06 06:05:01 +00:00
PostDominators.cpp Add newline at end of file. 2008-05-29 21:05:16 +00:00
ProfileInfo.cpp Tidy up several unbeseeming casts from pointer to intptr_t. 2008-09-04 17:05:41 +00:00
ProfileInfoLoader.cpp Tidy up #includes, deleting a bunch of unnecessary #includes. 2009-01-05 17:59:02 +00:00
ProfileInfoLoaderPass.cpp Tidy up several unbeseeming casts from pointer to intptr_t. 2008-09-04 17:05:41 +00:00
ScalarEvolution.cpp Rename ScalarEvolution's getIterationCount to getBackedgeTakenCount, 2009-02-24 18:55:53 +00:00
ScalarEvolutionExpander.cpp Wind SCEV back in time, to Nov 18th. This 'fixes' PR3275, PR3294, PR3295, 2009-01-13 09:18:58 +00:00
SparsePropagation.cpp "This patch adds a virtual call to AbstractLatticeFunction to derive a 2008-08-09 17:23:35 +00:00
Trace.cpp Remove attribution from file headers, per discussion on llvmdev. 2007-12-29 20:36:04 +00:00
ValueTracking.cpp Fix a ValueTracking rule: RHS means operand 1, not 0. Add a simple 2009-02-24 02:00:40 +00:00