History log of /external/llvm/lib/IR/
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
2c3e0051c31c3f5b2328b447eadf1cf9c4427442 06-May-2015 Pirama Arumuga Nainar <pirama@google.com> Update aosp/master LLVM for rebase to r235153

Change-Id: I9bf53792f9fc30570e81a8d80d296c681d005ea7
(cherry picked from commit 0c7f116bb6950ef819323d855415b2f2b0aad987)
ndroid.mk
smWriter.cpp
ttributeImpl.h
ttributes.cpp
utoUpgrade.cpp
asicBlock.cpp
MakeLists.txt
onstantFold.cpp
onstants.cpp
ore.cpp
IBuilder.cpp
ebugInfo.cpp
ebugInfoMetadata.cpp
ebugLoc.cpp
iagnosticInfo.cpp
unction.cpp
COV.cpp
RBuilder.cpp
RPrintingPasses.cpp
nlineAsm.cpp
nstruction.cpp
nstructions.cpp
LVMContextImpl.h
egacyPassManager.cpp
etadata.cpp
seListOrder.cpp
alue.cpp
erifier.cpp
4c5e43da7792f75567b693105cc53e3f1992ad98 08-Apr-2015 Pirama Arumuga Nainar <pirama@google.com> Update aosp/master llvm for rebase to r233350

Change-Id: I07d935f8793ee8ec6b7da003f6483046594bca49
smWriter.cpp
smWriter.h
utoUpgrade.cpp
asicBlock.cpp
onstantFold.cpp
onstantRange.cpp
onstants.cpp
ore.cpp
IBuilder.cpp
ataLayout.cpp
ebugInfo.cpp
iagnosticInfo.cpp
COV.cpp
lobals.cpp
nlineAsm.cpp
nstruction.cpp
nstructions.cpp
LVMContextImpl.h
egacyPassManager.cpp
angler.cpp
odule.cpp
ypeFinder.cpp
alue.cpp
erifier.cpp
ebe69fe11e48d322045d5949c83283927a0d790b 23-Mar-2015 Stephen Hines <srhines@google.com> Update aosp/master LLVM for rebase to r230699.

Change-Id: I2b5be30509658cb8266be782de0ab24f9099f9b9
ndroid.mk
smWriter.cpp
smWriter.h
ttributeImpl.h
ttributes.cpp
utoUpgrade.cpp
asicBlock.cpp
MakeLists.txt
onstantFold.cpp
onstants.cpp
onstantsContext.h
ore.cpp
IBuilder.cpp
ataLayout.cpp
ebugInfo.cpp
ebugInfoMetadata.cpp
ebugLoc.cpp
iagnosticInfo.cpp
ominators.cpp
unction.cpp
COV.cpp
lobals.cpp
RBuilder.cpp
RPrintingPasses.cpp
nlineAsm.cpp
nstruction.cpp
nstructions.cpp
ntrinsicInst.cpp
LVMContext.cpp
LVMContextImpl.cpp
LVMContextImpl.h
eakDetector.cpp
eaksContext.h
egacyPassManager.cpp
DBuilder.cpp
etadata.cpp
etadataImpl.h
etadataTracking.cpp
odule.cpp
ass.cpp
assManager.cpp
tatepoint.cpp
ype.cpp
ypeFinder.cpp
alue.cpp
alueSymbolTable.cpp
erifier.cpp
37ed9c199ca639565f6ce88105f9e39e898d82d0 01-Dec-2014 Stephen Hines <srhines@google.com> Update aosp/master LLVM for rebase to r222494.

Change-Id: Ic787f5e0124df789bd26f3f24680f45e678eef2d
ndroid.mk
smWriter.cpp
smWriter.h
ttributeImpl.h
ttributes.cpp
utoUpgrade.cpp
asicBlock.cpp
MakeLists.txt
onstantFold.cpp
onstantFold.h
onstants.cpp
onstantsContext.h
ore.cpp
IBuilder.cpp
ataLayout.cpp
ebugInfo.cpp
ebugLoc.cpp
iagnosticInfo.cpp
iagnosticPrinter.cpp
unction.cpp
COV.cpp
lobals.cpp
RBuilder.cpp
nlineAsm.cpp
nstruction.cpp
nstructions.cpp
LVMContext.cpp
LVMContextImpl.cpp
LVMContextImpl.h
eaksContext.h
egacyPassManager.cpp
DBuilder.cpp
angler.cpp
etadata.cpp
odule.cpp
assManager.cpp
assRegistry.cpp
ymbolTableListTraitsImpl.h
ype.cpp
ypeFinder.cpp
se.cpp
seListOrder.cpp
ser.cpp
alue.cpp
alueSymbolTable.cpp
erifier.cpp
c6a4f5e819217e1e12c458aed8e7b122e23a3a58 21-Jul-2014 Stephen Hines <srhines@google.com> Update LLVM for rebase to r212749.

Includes a cherry-pick of:
r212948 - fixes a small issue with atomic calls

Change-Id: Ib97bd980b59f18142a69506400911a6009d9df18
ndroid.mk
smWriter.cpp
smWriter.h
ttributes.cpp
utoUpgrade.cpp
MakeLists.txt
omdat.cpp
onstantFold.cpp
onstants.cpp
ore.cpp
IBuilder.cpp
ebugInfo.cpp
ebugLoc.cpp
iagnosticInfo.cpp
unction.cpp
COV.cpp
lobals.cpp
nstruction.cpp
nstructions.cpp
etadata.cpp
odule.cpp
ass.cpp
assRegistry.cpp
alue.cpp
erifier.cpp
075c621d834af7ffc32d2067fadb147cc1758b99 02-Jun-2014 Chris Wailes <chriswailes@google.com> Adds the ability to run the llvm test suite in-tree.

This was accomplished by building additional tools and hand-generating
several files that are auto-generated by the configuration system when
LLVM is built out-of-tree. The LTO, Interpreter, and DebugInfo libraries
are now being compiled, and several source files were added to existing
compilation targets.

To run these tests you must first run build/envsetup.sh and have used
lunch to select a target. You can then launch the test script by running:

cd $ANDROID_BUILD_TOP/external/llvm && ./android_test.sh

Bug: 15433215

Change-Id: I43d87de0a4620cdd46c8d0f825dd4428e8409702
ndroid.mk
dce4a407a24b04eebc6a376f8e62b41aaa7b071f 29-May-2014 Stephen Hines <srhines@google.com> Update LLVM for 3.5 rebase (r209712).

Change-Id: I149556c940fb7dc92d075273c87ff584f400941f
ndroid.mk
smWriter.cpp
ttributes.cpp
utoUpgrade.cpp
asicBlock.cpp
MakeLists.txt
onstantFold.cpp
onstants.cpp
onstantsContext.h
ore.cpp
IBuilder.cpp
ataLayout.cpp
ebugInfo.cpp
ebugLoc.cpp
iagnosticInfo.cpp
unction.cpp
COV.cpp
lobals.cpp
RPrintingPasses.cpp
nlineAsm.cpp
nstruction.cpp
nstructions.cpp
ntrinsicInst.cpp
LVMContext.cpp
LVMContextImpl.cpp
LVMContextImpl.h
eaksContext.h
egacyPassManager.cpp
DBuilder.cpp
angler.cpp
etadata.cpp
odule.cpp
ass.cpp
assManager.cpp
assRegistry.cpp
ymbolTableListTraitsImpl.h
ype.cpp
se.cpp
alue.cpp
alueSymbolTable.cpp
erifier.cpp
odule.modulemap
36b56886974eae4f9c5ebc96befd3e7bfe5de338 24-Apr-2014 Stephen Hines <srhines@google.com> Update to LLVM 3.5a.

Change-Id: Ifadecab779f128e62e430c2b4f6ddd84953ed617
ndroid.mk
smWriter.cpp
smWriter.h
ttributeImpl.h
ttributes.cpp
utoUpgrade.cpp
asicBlock.cpp
MakeLists.txt
onstantFold.cpp
onstantRange.cpp
onstants.cpp
onstantsContext.h
ore.cpp
IBuilder.cpp
ataLayout.cpp
ebugInfo.cpp
ebugLoc.cpp
iagnosticInfo.cpp
iagnosticPrinter.cpp
ominators.cpp
unction.cpp
COV.cpp
VMaterializer.cpp
lobals.cpp
RPrintingPasses.cpp
nlineAsm.cpp
nstruction.cpp
nstructions.cpp
ntrinsicInst.cpp
LVMContext.cpp
LVMContextImpl.cpp
LVMContextImpl.h
eakDetector.cpp
egacyPassManager.cpp
angler.cpp
etadata.cpp
odule.cpp
ass.cpp
assManager.cpp
assRegistry.cpp
rintModulePass.cpp
ype.cpp
se.cpp
alue.cpp
erifier.cpp
373aa5c665fe6df6b9c5586d397dc3617f25aab5 07-Feb-2014 Stephen Hines <srhines@google.com> Update LLVM for merge to 3.4.

Update config.h files.

Add RS SubtargetFeature for +long64 on ARM devices.

Adjust Android.mk for added/removed files:

+ Delinearization.cpp
- PathNumbering.cpp
- PathProfileInfo.cpp
- PathProfileVerifier.cpp
- ProfileDataLoader.cpp
- ProfileDataLoaderPass.cpp
- ProfileEstimatorPass.cpp
- ProfileInfo.cpp
- ProfileInfoLoader.cpp
- ProfileInfoLoaderPass.cpp
- ProfileVerifierPass.cpp

+ LiveRegUnits.cpp
- ShrinkWrapping.cpp
+ StackMaps.cpp
- StrongPHIElimination.cpp

+ DIEHash.cpp

+ LegacyPassManager.cpp

+ ELF.cpp

+ Unicode.cpp

- MipsOptimizeMathLibCalls.cpp

- MipsELFStreamer.cpp
+ MipsTargetStreamer.cpp

- EdgeProfiling.cpp
+ DataFlowSanitizer.cpp
+ DebugIR.cpp
- OptimalEdgeProfiling.cpp
- PathProfiling.cpp
- ProfilingUtils.cpp

- BasicBlockPlacement.cpp
+ LoopRerollPass.cpp
+ PartiallyInlineLibCalls.cpp
+ SampleProfile.cpp

+ GlobalStatus.cpp

Change-Id: I17dcf0bf53a1720acd8226ae3e30d84993562a91
ndroid.mk
ce9904c6ea8fd669978a8eefb854b330eb9828ff 12-Feb-2014 Stephen Hines <srhines@google.com> Merge remote-tracking branch 'upstream/release_34' into merge-20140211

Conflicts:
lib/Linker/LinkModules.cpp
lib/Support/Unix/Signals.inc

Change-Id: Ia54f291fa5dc828052d2412736e8495c1282aa64
51fce2c886e4ca33272975cc80bc1cc5abfcdffd 09-Dec-2013 Manman Ren <manman.ren@gmail.com> Merging r196172:
------------------------------------------------------------------------
r196172 | mren | 2013-12-02 16:12:14 -0800 (Mon, 02 Dec 2013) | 4 lines

Debug Info: rename getDebugInfoVersionFromModule to getDebugMetadataVersionFromModule.

Suggested by Eric.

------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@196823 91177308-0d34-0410-b5e6-96231b3b80d8
utoUpgrade.cpp
ebugInfo.cpp
27457ac42f7a9267ab7e0190424a95fecf0ea201 09-Dec-2013 Manman Ren <manman.ren@gmail.com> Merging r196158:
------------------------------------------------------------------------
r196158 | mren | 2013-12-02 13:29:56 -0800 (Mon, 02 Dec 2013) | 12 lines

Debug Info: drop debug info via upgrading path if version number does not match.

Add a helper function getDebugInfoVersionFromModule to return the debug info
version number for a module.

"Verifier/module-flags-1.ll" checks for verification errors.
It will seg fault when calling getDebugInfoVersionFromModule because of the
incorrect format for module flags in the testing case. We make
getModuleFlagsMetadata more robust by checking for error conditions.

PR17982

------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@196822 91177308-0d34-0410-b5e6-96231b3b80d8
utoUpgrade.cpp
ebugInfo.cpp
odule.cpp
c877b10446669bf107c19cab78b920ce9cffb989 09-Dec-2013 Manman Ren <manman.ren@gmail.com> Merging r195505:
------------------------------------------------------------------------
r195505 | mren | 2013-11-22 14:06:31 -0800 (Fri, 22 Nov 2013) | 8 lines

Debug Info: move StripDebugInfo from StripSymbols.cpp to DebugInfo.cpp.

We can share the implementation between StripSymbols and dropping debug info
for metadata versions that do not match.

Also update the comments to match the implementation. A follow-on patch will
drop the "Debug Info Version" module flag in StripDebugInfo.

------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@196816 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
cf5f97edf1355be0d7847c73559f8f2b73b54074 08-Dec-2013 Bill Wendling <isanbard@gmail.com> Merging r196637:
------------------------------------------------------------------------
r196637 | arsenm | 2013-12-06 18:58:41 -0800 (Fri, 06 Dec 2013) | 1 line

Add getBitCastOrAddrSpaceCast
------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@196707 91177308-0d34-0410-b5e6-96231b3b80d8
onstants.cpp
354362524a72b3fa43a6c09380b7ae3b2380cbba 19-Nov-2013 Juergen Ributzka <juergen@apple.com> [weak vtables] Remove a bunch of weak vtables

This patch removes most of the trivial cases of weak vtables by pinning them to
a single object file. The memory leaks in this version have been fixed. Thanks
Alexey for pointing them out.

Differential Revision: http://llvm-reviews.chandlerc.com/D2068

Reviewed by Andy

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@195064 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
etadata.cpp
alue.cpp
4adba52570723c2e1654b1c01feddf759893f096 19-Nov-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: Simplify a few more explicit constructions, underconstrained types, and make DIType(MDNode*) explicit like all the other DI* node ctors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@195055 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
fe45fd084db872f9c7106c26e52c1cc8c9cba3a5 18-Nov-2013 Paul Robinson <paul_robinson@playstation.sony.com> The 'optnone' attribute means don't inline anything into this function
(except functions marked always_inline).
Functions with 'optnone' must also have 'noinline' so they don't get
inlined into any other function.

Based on work by Andrea Di Biagio.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@195046 91177308-0d34-0410-b5e6-96231b3b80d8
erifier.cpp
b21ab43cfc3fa0dacf5c95f04e58b6d804b59a16 18-Nov-2013 Alexey Samsonov <samsonov@google.com> Revert r194865 and r194874.

This change is incorrect. If you delete virtual destructor of both a base class
and a subclass, then the following code:
Base *foo = new Child();
delete foo;
will not cause the destructor for members of Child class. As a result, I observe
plently of memory leaks. Notable examples I investigated are:
ObjectBuffer and ObjectBufferStream, AttributeImpl and StringSAttributeImpl.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194997 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
etadata.cpp
alue.cpp
65c102e7fb68f78117be665dd9d4a73ef7e9f795 18-Nov-2013 Manman Ren <manman.ren@gmail.com> Debug Info Verifier: disable it by default.

Debug info verifier is part of the verifier which is a Function Pass.
Tot currently tries to pull all reachable debug info MDNodes in each function,
which is too time-consuming. The correct fix seems to be separating debug info
verification to its own module pass.

I will disable the debug info verifier until a correct fix is found.

For Bill's testing case, enabling debug info verifier increase compile
time from 11s to 11m.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194986 91177308-0d34-0410-b5e6-96231b3b80d8
erifier.cpp
6950be28511caf355abdf405404b5f37cc136bc5 17-Nov-2013 Manman Ren <manman.ren@gmail.com> Debug Info: fix typo in function name.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194975 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
9564d643d7b5ec2ea4068d7dadae88f285ae928e 17-Nov-2013 Manman Ren <manman.ren@gmail.com> Debug Info Verifier: fix when to find debug info nodes and when to verify them.

We used to collect debug info MDNodes in doInitialization and verify them in
doFinalization. That is incorrect since MDNodes can be modified by passes run
between doInitialization and doFinalization.

To fix the problem, we handle debug info MDNodes that can be reached from a
function in runOnFunction (i.e we collect those nodes by calling processDeclare,
processValue and processLocation, and then verify them in runOnFunction).

We handle debug info MDNodes that can be reached from named metadata in
doFinalization. This is in line with how Verifier handles module-level data
(they are verified in doFinalization).

rdar://15472296


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194974 91177308-0d34-0410-b5e6-96231b3b80d8
erifier.cpp
2b31b8227fb5507c26a8c4724574fc87fb90f482 17-Nov-2013 Manman Ren <manman.ren@gmail.com> Debug Info Verifier: enable public functions of Finder to update the type map.

We used to depend on running processModule before the other public functions
such as processDeclare, processValue and processLocation. We are now relaxing
the constraint by adding a module argument to the three functions and
letting the three functions to initialize the type map. This will be used in
a follow-on patch that collects nodes reachable from a Function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194973 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
erifier.cpp
3d429d80e4c062d0371fb105a87cc5260652c9b2 16-Nov-2013 Manman Ren <manman.ren@gmail.com> Debug Info Verifier: remove un-used argument in verifyDebugInfo.

No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194917 91177308-0d34-0410-b5e6-96231b3b80d8
erifier.cpp
5a364c5561ec04e33a6f5d52c14f1bac6f247ea0 15-Nov-2013 Juergen Ributzka <juergen@apple.com> [weak vtables] Remove a bunch of weak vtables

This patch removes most of the trivial cases of weak vtables by pinning them to
a single object file.

Differential Revision: http://llvm-reviews.chandlerc.com/D2068

Reviewed by Andy

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194865 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
etadata.cpp
alue.cpp
4303b091d0b0c4982efde6f575f4dfd72ff14c42 15-Nov-2013 Chandler Carruth <chandlerc@gmail.com> [PM] Fix an iterator problem spotted by the MSVC debug iterators and
AaronBallman. Thanks for the excellent review.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194857 91177308-0d34-0410-b5e6-96231b3b80d8
assManager.cpp
d515e98ebf711d7e80589e4029f27c206573b400 15-Nov-2013 Chandler Carruth <chandlerc@gmail.com> [PM] Run clang-format on a few lines that I missed in my first pass,
pulling them under 80-columns. No functionality changed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194856 91177308-0d34-0410-b5e6-96231b3b80d8
assManager.cpp
d881c1bdd1f63bbbdb8eec5f6ae7fd765103972f 15-Nov-2013 Benjamin Kramer <benny.kra@googlemail.com> llvm-cov: Clean up memory leaks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194799 91177308-0d34-0410-b5e6-96231b3b80d8
COV.cpp
59d3ae6cdc4316ad338cd848251f33a236ccb36c 15-Nov-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Add addrspacecast instruction.

Patch by Michele Scandale!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194760 91177308-0d34-0410-b5e6-96231b3b80d8
utoUpgrade.cpp
onstantFold.cpp
onstants.cpp
ore.cpp
nstruction.cpp
nstructions.cpp
alue.cpp
erifier.cpp
bdc23320c10f58f9579a397bd36584dcbd702fae 14-Nov-2013 NAKAMURA Takumi <geek4civic@gmail.com> IR/GCOV.cpp: Use PRIu64 as format string with uint64_t.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194693 91177308-0d34-0410-b5e6-96231b3b80d8
COV.cpp
12e90cb69a0a39d0db208de98162e39a2e3d6d1e 14-Nov-2013 NAKAMURA Takumi <geek4civic@gmail.com> Whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194692 91177308-0d34-0410-b5e6-96231b3b80d8
COV.cpp
4bd0224887a8de1434186cad2f618c18dea06c0b 14-Nov-2013 Yuchen Wu <yuchenericwu@hotmail.com> llvm-cov: Slightly improved error checking.

- readInt() should check all 4 bytes can be read, not just 1.
- In the event of false data in the gcno file, it was possible to index
into a non-existent index of SmallVector, causing assertion error.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194639 91177308-0d34-0410-b5e6-96231b3b80d8
COV.cpp
131a764e0e7abc90b322fd568e042d3c5a0633af 14-Nov-2013 Yuchen Wu <yuchenericwu@hotmail.com> llvm-cov: Removed StringMap holding GCOVLines.

According to the hazy gcov documentation, it appeared to be technically
possible for lines within a block to belong to different source files.
However, upon further investigation, gcov does not actually support
multiple source files for a single block.

This change removes a level of separation between blocks and lines by
replacing the StringMap of GCOVLines with a SmallVector of ints
representing line numbers. This also means that the GCOVLines class is
no longer needed.

This paves the way for supporting the "-a" option, which will output
block information.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194637 91177308-0d34-0410-b5e6-96231b3b80d8
COV.cpp
dbb51ff01fd08df39e5040c1cd9edacdc3e4308a 14-Nov-2013 Yuchen Wu <yuchenericwu@hotmail.com> llvm-cov: Replaced asserts with proper error handling.

Unified the interface for read functions. They all return a boolean
indicating if the read from file succeeded. Functions that previously
returned the read value now store it into a variable that is passed in
by reference instead. Callers will need to check the return value to
detect if an error occurred.

Also added a new test which ensures that no assertions occur when file
contains invalid data. llvm-cov should return with error code 1 upon
failure.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194635 91177308-0d34-0410-b5e6-96231b3b80d8
COV.cpp
7af43e0ad01a5f85f9066b69faba990a72f89536 13-Nov-2013 Rafael Espindola <rafael.espindola@gmail.com> Don't call doFinalization from verifyFunction.

verifyFunction needs to call doInitialization to collect metadata and avoid
crashing when verifying debug info in a function.

But it should not call doFinalization since that is where the verifier will
check declarations, variables and aliases, which is not desirable when one
only wants to verify a function.

A possible cleanup would be to split the class into a ModuleVerifier and
FunctionVerifier.

Issue reported by Ilia Filippov. Patch by Michael Kruse.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194574 91177308-0d34-0410-b5e6-96231b3b80d8
erifier.cpp
f348c9782c5c31309dfd2d04e3dbee21fefe07ff 13-Nov-2013 Chandler Carruth <chandlerc@gmail.com> Introduce an AnalysisManager which is like a pass manager but with a lot
more smarts in it. This is where most of the interesting logic that used
to live in the implicit-scheduling-hackery of the old pass manager will
live.

Like the previous commits, note that this is a very early prototype!
I expect substantial changes before this is ready to use.

The core of the design is the following:

- We have an AnalysisManager which can be used across a series of
passes over a module.
- The code setting up a pass pipeline registers the analyses available
with the manager.
- Individual transform passes can check than an analysis manager
provides the analyses they require in order to fail-fast.
- There is *no* implicit registration or scheduling.
- Analysis passes are different from other passes: they produce an
analysis result that is cached and made available via the analysis
manager.
- Cached results are invalidated automatically by the pass managers.
- When a transform pass requests an analysis result, either the analysis
is run to produce the result or a cached result is provided.

There are a few aspects of this design that I *know* will change in
subsequent commits:
- Currently there is no "preservation" system, that needs to be added.
- All of the analysis management should move up to the analysis library.
- The analysis management needs to support at least SCC passes. Maybe
loop passes. Living in the analysis library will facilitate this.
- Need support for analyses which are *both* module and function passes.
- Need support for pro-actively running module analyses to have cached
results within a function pass manager.
- Need a clear design for "immutable" passes.
- Need support for requesting cached results when available and not
re-running the pass even if that would be necessary.
- Need more thorough testing of all of this infrastructure.

There are other aspects that I view as open questions I'm hoping to
resolve as I iterate a bit on the infrastructure, and especially as
I start writing actual passes against this.
- Should we have separate management layers for function, module, and
SCC analyses? I think "yes", but I'm not yet ready to switch the code.
Adding SCC support will likely resolve this definitively.
- How should the 'require' functionality work? Should *that* be the only
way to request results to ensure that passes always require things?
- How should preservation work?
- Probably some other things I'm forgetting. =]

Look forward to more patches in shorter order now that this is in place.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194538 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
assManager.cpp
5a34980b4e0a60d39ad3acb9dd467b74ce2d830d 11-Nov-2013 Andrew Trick <atrick@apple.com> Print new JavaScript calling conventions symbolically.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194427 91177308-0d34-0410-b5e6-96231b3b80d8
smWriter.cpp
877ca3418f8fcd8e966e80b7e7f1dcb944dbed59 11-Nov-2013 Benjamin Kramer <benny.kra@googlemail.com> Simplify code. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194383 91177308-0d34-0410-b5e6-96231b3b80d8
ype.cpp
b831e13387c88c39f382db3f76e85433f1978e7f 10-Nov-2013 David Majnemer <david.majnemer@gmail.com> IR: Refactor GEP range checks, reuse them for other parts of folding


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194341 91177308-0d34-0410-b5e6-96231b3b80d8
onstantFold.cpp
49837ef8111fbeace7ae6379ca733c8f8fa94cfe 09-Nov-2013 Chandler Carruth <chandlerc@gmail.com> Move the old pass manager infrastructure into a legacy namespace and
give the files a legacy prefix in the right directory. Use forwarding
headers in the old locations to paper over the name change for most
clients during the transitional period.

No functionality changed here! This is just clearing some space to
reduce renaming churn later on with a new system.

Even when the new stuff starts to go in, it is going to be hidden behind
a flag and off-by-default as it is still WIP and under development.

This patch is specifically designed so that very little out-of-tree code
has to change. I'm going to work as hard as I can to keep that the case.
Only direct forward declarations of the PassManager class are impacted
by this change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194324 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
egacyPassManager.cpp
assManager.cpp
5f7259180c59b2830bf206b44439be32ffa9161e 08-Nov-2013 Bill Wendling <isanbard@gmail.com> Remove ^M from the file.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194251 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
f9c692cfeb9a73bad531f86d9f103e67d3d0e162 07-Nov-2013 David Majnemer <david.majnemer@gmail.com> IR: Properly canonicalize PointerType in ConstantExpr GEPs

No additional test was needed, Other/constant-fold-gep.ll detects this
just fine.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194221 91177308-0d34-0410-b5e6-96231b3b80d8
onstantFold.cpp
0ab20588523b59a65a4a29d47184a41443fa9337 07-Nov-2013 David Majnemer <david.majnemer@gmail.com> IR: Do not canonicalize constant GEPs into an out-of-bounds array access

Summary:
Consider a GEP of:
i8* getelementptr ({ [2 x i8], i32, i8, [3 x i8] }* @main.c, i32 0, i32 0, i64 0)

If we proceeded to GEP the aforementioned object by 8, would form a GEP of:
i8* getelementptr ({ [2 x i8], i32, i8, [3 x i8] }* @main.c, i32 0, i32 0, i64 8)

Note that we would go through the first array member, causing an
out-of-bounds accesses. This is problematic because we might get fooled
if we are trying to evaluate loads using this GEP, for example, based
off of an object with a constant initializer where the array is zero.

This fixes PR17732.

Reviewers: nicholas, chandlerc, void

Reviewed By: void

CC: llvm-commits, echristo, void, aemerson

Differential Revision: http://llvm-reviews.chandlerc.com/D2093

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194220 91177308-0d34-0410-b5e6-96231b3b80d8
onstantFold.cpp
14bbb1d9b083c7935185e7c11ddf059f352aa3fc 06-Nov-2013 Peter Zotov <whitequark@whitequark.org> [llvm-c] Implement LLVMPrintValueToString

Original patch by Chris Wailes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194135 91177308-0d34-0410-b5e6-96231b3b80d8
ore.cpp
af9e8e60ae5118066e49730ae5a96aadf3a8f624 05-Nov-2013 Rafael Espindola <rafael.espindola@gmail.com> Use error_code in GVMaterializer.

They just propagate out the bitcode reader error, so we don't need a new enum.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194091 91177308-0d34-0410-b5e6-96231b3b80d8
odule.cpp
f44533c65e351329306aec7bb9e3eeab26c009b6 05-Nov-2013 Yuchen Wu <yuchenericwu@hotmail.com> Revert "llvm-cov: Added command-line option to change dir."

This reverts commit d8acf0078cf363252727acff00f85ae8074f95b3.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194040 91177308-0d34-0410-b5e6-96231b3b80d8
COV.cpp
d8acf0078cf363252727acff00f85ae8074f95b3 05-Nov-2013 Yuchen Wu <yuchenericwu@hotmail.com> llvm-cov: Added command-line option to change dir.

This will allow for much easier testing when the input files are in a
different folder from the test script.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194034 91177308-0d34-0410-b5e6-96231b3b80d8
COV.cpp
e85959cb2cb6f82959b3cf1a9ef59c6d793a2556 05-Nov-2013 Yuchen Wu <yuchenericwu@hotmail.com> Support for reading run counts in llvm-cov.

This patch enables llvm-cov to correctly output the run count stored in
the GCDA file. GCOVProfiling currently does not generate this
information, so the GCDA run data had to be hacked on from a GCDA file
generated by gcc. This is corrected by a subsequent patch.

With the run and program data included, both llvm-cov and gcov produced
the same output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194033 91177308-0d34-0410-b5e6-96231b3b80d8
COV.cpp
daaa8b720b026c83bf6d4307042057665348b222 02-Nov-2013 Yuchen Wu <yuchenericwu@hotmail.com> Added command-line option to output llvm-cov to file.

Added -o option to llvm-cov. If no output file is specified, it defaults
to STDOUT.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193899 91177308-0d34-0410-b5e6-96231b3b80d8
COV.cpp
19794da02cc48a772ae6f4756b14b111a627170e 01-Nov-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove linkonce_odr_auto_hide.

linkonce_odr_auto_hide was in incomplete attempt to implement a way
for the linker to hide symbols that are known to be available in every
TU and whose addresses are not relevant for a particular DSO.

It was redundant in that it all its uses are equivalent to
linkonce_odr+unnamed_addr. Unlike those, it has never been connected
to clang or llvm's optimizers, so it was effectively dead.

Given that nothing produces it, this patch just nukes it
(other than the llvm-c enum value).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193865 91177308-0d34-0410-b5e6-96231b3b80d8
smWriter.cpp
ore.cpp
erifier.cpp
2e50b8a08d40ce72ae35c73528140d3ee25209e0 31-Oct-2013 Andrew Trick <atrick@apple.com> Enable variable arguments support for intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193766 91177308-0d34-0410-b5e6-96231b3b80d8
unction.cpp
erifier.cpp
415b33f161537be38be213cb7cb89314173f6549 30-Oct-2013 Rafael Espindola <rafael.espindola@gmail.com> Add calls to doInitialization() and doFinalization() in verifyFunction()

The function verifyFunction() in lib/IR/Verifier.cpp misses some
calls. It creates a temporary FunctionPassManager that will run a
single Verifier pass. Unfortunately, FunctionPassManager is no
PassManager and does not call doInitialization() and doFinalization()
by itself. Verifier does important tasks in doInitialization() such as
collecting type information used to check DebugInfo metadata and
doFinalization() does some additional checks. Therefore these checks
were missed and debug info couldn't be verified at all, it just
crashed if the function had some.

verifyFunction() is currently not used in llvm unless -debug option is
enabled, and in unittests/IR/VerifierTest.cpp

VerifierTest had to be changed to create the function in a module from
which the type debug info can be collected.

Patch by Michael Kruse.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193719 91177308-0d34-0410-b5e6-96231b3b80d8
erifier.cpp
72202297a90563ec3eedd3015395c8d1a8db0a87 29-Oct-2013 Anders Waldenborg <anders@0x63.nu> Fix misapplied patch in r193597

Sorry Peter Zotov, entirely my fault.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193598 91177308-0d34-0410-b5e6-96231b3b80d8
ore.cpp
7959f209ba8e63ffaf7335842deddda4ca0480e7 29-Oct-2013 Anders Waldenborg <anders@0x63.nu> llvm-c: Make LLVM{Get,Set}Alignment work on {Load,Store}Inst too

Patch by Peter Zotov

Differential Revision: http://llvm-reviews.chandlerc.com/D1910



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193597 91177308-0d34-0410-b5e6-96231b3b80d8
ore.cpp
69bd41dfe33f24414be281ba5e2204b7348c33ae 27-Oct-2013 Shuxin Yang <shuxin.llvm@gmail.com> Revert r193251 : Use address-taken to disambiguate global variable and indirect memops.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193489 91177308-0d34-0410-b5e6-96231b3b80d8
smWriter.cpp
lobals.cpp
81e3828be14cf5b35329c0a2372acf998980f271 25-Oct-2013 Yuchen Wu <yuchenericwu@hotmail.com> llvm-cov dump to dbgs() instead of outs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193390 91177308-0d34-0410-b5e6-96231b3b80d8
COV.cpp
76fa4d629b22903632529e2cb19c86105a0d1247 25-Oct-2013 Yuchen Wu <yuchenericwu@hotmail.com> Support for reading program counts in llvm-cov.

llvm-cov will now be able to read program counts from the GCDA file and
output it in the same format as gcov. The program summary tag was
identified from gcov-io.h as "\0\0\0\a3".

There is currently a bug in GCOVProfiling.cpp which does not generate
the
run- or program-counting IR, so this change was tested manually by
modifying the GCDA file and comparing the gcov and llvm-cov outputs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193389 91177308-0d34-0410-b5e6-96231b3b80d8
COV.cpp
cbbd20879e8acf35d3326a2459e17a298b5f5d15 24-Oct-2013 Yuchen Wu <yuchenericwu@hotmail.com> Fixed llvm-cov to count edges instead of blocks.

This was a fundamental flaw in llvm-cov where it treated the values in
the GCDA files as block counts instead of edge counts. This created
incorrect line counts when branching was present. Instead, the edge
counts should be summed to obtain the correct block count.

The fix was tested using custom test files as well as single source
files from the test-suite directory. The behaviour can be verified by
reading the GCOV documentation that describes the GCDA spec ("ARC_COUNTS
gives the counter values for those arcs that are instrumented") and the
header description provided by GCOVProfiling.cpp ("instruments the code
that runs to records (sic) the edges between blocks that run and emit a
complementary "gcda" file on exit").

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193299 91177308-0d34-0410-b5e6-96231b3b80d8
COV.cpp
9db9663d1d2e4e336c2787bacff4ee7125622e21 23-Oct-2013 Yuchen Wu <yuchenericwu@hotmail.com> Use a map instead of vector to store line counts.

There are a few motivations for this:
- Using a map allows for checking if line is in map. This differentiates
unexecutable lines (such as comments) from unexecuted logical lines of
code. "#####" is now outputted in this case, in line with gcov.
- Source files are no longer read in twice: once when storing the line
counts, and once when outputting the data.
- Greatly simplifies the function FileInfo::addLineCount().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193264 91177308-0d34-0410-b5e6-96231b3b80d8
COV.cpp
8e3851a6eb9fe5fc30094c3a00d2b89c7cd68cbd 23-Oct-2013 Shuxin Yang <shuxin.llvm@gmail.com> Use address-taken to disambiguate global variable and indirect memops.

Major steps include:
1). introduces a not-addr-taken bit-field in GlobalVariable
2). GlobalOpt pass sets "not-address-taken" if it proves a global varirable
dosen't have its address taken.
3). AA use this info for disambiguation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193251 91177308-0d34-0410-b5e6-96231b3b80d8
smWriter.cpp
lobals.cpp
752d303a103a4b2504ddf50c0613a3c2f3536014 23-Oct-2013 Yuchen Wu <yuchenericwu@hotmail.com> Test commit. Added whitespace in GCOV.cpp.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193224 91177308-0d34-0410-b5e6-96231b3b80d8
COV.cpp
67fa53989a7bb05083966a694ad0c2e9b62ed683 22-Oct-2013 Bob Wilson <bob.wilson@apple.com> llvm-cov: Use uint32_t for loop variables to be more consistent.

The loop bounds here are uint32_t variables, so it makes sense for the
loop variables to have the same type.

Patch by Yuchen Wu!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193192 91177308-0d34-0410-b5e6-96231b3b80d8
COV.cpp
0a2463c990db33dd5fc1a15b70bcc38d4c273af7 22-Oct-2013 Bob Wilson <bob.wilson@apple.com> llvm-cov: fix a typo and rename a variable.

Rename Size to EndPos, which makes more sense because the variable
stores the last location of the blocks.

Patch by Yuchen Wu!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193189 91177308-0d34-0410-b5e6-96231b3b80d8
COV.cpp
51ec77d880ce53cbc8a48168185edc085df9b6d9 22-Oct-2013 Bob Wilson <bob.wilson@apple.com> Fix llvm-cov counts to be 64-bit integers to avoid overflows.

Line counts in llvm-cov are read in as 64-bit integers but were being truncated
to 32-bit in collectLineCounts(), which caused overflow for large counts.
This patch fixes all counts to be uint64_t.

Patch by Yuchen Wu!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193172 91177308-0d34-0410-b5e6-96231b3b80d8
COV.cpp
18b9105d02ee152e7f8faab751d6f356428c3054 22-Oct-2013 Anders Waldenborg <anders@0x63.nu> llvm-c: Add LLVMPrintTypeToString

Differential Revision: http://llvm-reviews.chandlerc.com/D1963



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193149 91177308-0d34-0410-b5e6-96231b3b80d8
ore.cpp
e877eebfe9d716ed1101aecf958af473836e70e1 22-Oct-2013 Bob Wilson <bob.wilson@apple.com> Change llvm-cov output formatting to be more similar to gcov.

- Replaced tabs with proper padding
- print() takes two arguments, which are the GCNO and GCDA filenames
- Files are listed at the top of output, appended by line 0
- Stripped strings of trailing \0s
- Removed last two lines of whitespace in output

Patch by Yuchen Wu!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193148 91177308-0d34-0410-b5e6-96231b3b80d8
COV.cpp
32c69dd1abf419742d99c59e7d54812e315cbb2d 22-Oct-2013 Bob Wilson <bob.wilson@apple.com> Move the printing of llvm-cov information out from collectLineCounts().

collectLineCounts() should only organize the output data. This is done in
anticipation of subsequent changes which will pass in GCNO and GCDA filenames
into the print function where it is printed similar to the gcov output.

Patch by Yuchen Wu!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193134 91177308-0d34-0410-b5e6-96231b3b80d8
COV.cpp
c3b6e80d291b8ac53c67a4d292c1e60469d78447 17-Oct-2013 Michael Kuperstein <michael.m.kuperstein@intel.com> Changing DebugInfoFinder to iterate over all the compile units.
Solves http://llvm.org/bugs/show_bug.cgi?id=17507

Committed on behalf of alon.mishne@intel.com

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192879 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
75a5df1d1e086f3d9c46e1b602381fb56a8911f3 16-Oct-2013 Anders Waldenborg <anders@0x63.nu> llvm-c: Add LLVMDumpType

The C API currently allows to dump values (LLVMDumpValue), but a similar method for types was not exported.

Patch by Peter Zotov

Differential Revision: http://llvm-reviews.chandlerc.com/D1911



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192852 91177308-0d34-0410-b5e6-96231b3b80d8
ore.cpp
2906b519d1f47f1b269ed1be9c70f752b3dca928 16-Oct-2013 Anders Waldenborg <anders@0x63.nu> [llvm-c] Add LLVMPrintModuleToString.

Like LLVMDumpModule but returns the string (that needs to be freed
with LLVMDisposeMessage) instead of printing it to stderr.

Differential Revision: http://llvm-reviews.chandlerc.com/D1941



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192821 91177308-0d34-0410-b5e6-96231b3b80d8
ore.cpp
1e6810005f426798ce2541c26f0cdc7a08670846 16-Oct-2013 Will Dietz <wdietz2@illinois.edu> TypeFinder: prefer iterative algorithm to keep stack usage low.

Introduce subtype_reverse_iterator to maintain
the numbering assigned during the recursive type walk.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192770 91177308-0d34-0410-b5e6-96231b3b80d8
ypeFinder.cpp
3aa342be500a55c3bbee302f3a8db937eaa2c241 16-Oct-2013 Rafael Espindola <rafael.espindola@gmail.com> Add support for metadata representing .ident directives.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192764 91177308-0d34-0410-b5e6-96231b3b80d8
erifier.cpp
4159733c1a9a6f4aea6ea4d558ca4806a3f959d2 16-Oct-2013 Eric Christopher <echristo@gmail.com> Add an assert that we have a scope that matters for methods
and remove a call to getNonCompileUnitScope as a method
shouldn't be in the compile unit scope.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192748 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ff64b7d7e36b55ecb3cce38f08f60fce7892b269 16-Oct-2013 Eric Christopher <echristo@gmail.com> Clean up, formatting, comments. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192747 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
390ff499f053771cba51a2f42651f126a7e096f7 15-Oct-2013 Craig Topper <craig.topper@gmail.com> Remove x86_sse42_crc32_64_8 intrinsic. It has no functional difference from x86_sse42_crc32_32_8 and was not mapped to a clang builtin. I'm not even sure why this form of the instruction is even called out explicitly in the docs. Also add AutoUpgrade support to convert it into the other intrinsic with appropriate trunc and zext.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192672 91177308-0d34-0410-b5e6-96231b3b80d8
utoUpgrade.cpp
b8e48a636e7ee6c13140382eb93d9695a65b0624 10-Oct-2013 Manman Ren <manman.ren@gmail.com> Debug Info: In DIBuilder, the context field of subprogram is updated to use
DIScopeRef.

A paired commit at clang is required due to changes to DIBuilder.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192378 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
b4d9c11f6c7e0a38e750f946d5cea3ffa5ae8f61 09-Oct-2013 Manman Ren <manman.ren@gmail.com> Debug Info: In DIBuilder, the context and type fields of template_type and
template_value are updated to use DIRef.

A paired commit at clang is required due to changes to DIBuilder.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192320 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
5e5d494ce00741858d5a2f8c305bcd0b341988d2 09-Oct-2013 Manman Ren <manman.ren@gmail.com> Debug Info: In DIBuilder, the context field of a forward decl is updated
to use DIScopeRef.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192309 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
1a525e8c80305777e3ca0cba0e1903fdbf04aa86 09-Oct-2013 Rafael Espindola <rafael.espindola@gmail.com> Add a GlobalAlias::isValidLinkage to reduce code duplication.

Thanks to Reid Kleckner for the suggestion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192298 91177308-0d34-0410-b5e6-96231b3b80d8
erifier.cpp
456e5e55213c4564a44b8494ff230f8bf12caba7 09-Oct-2013 Manman Ren <manman.ren@gmail.com> Debug Info: In DIBuilder, the context field of a DICompositeType is updated
to use DIScopeRef.

A paired commit at clang is required due to changes to DIBuilder.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192256 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
b6f74f06682df931631b9ac3de945b72e526f64e 09-Oct-2013 Manman Ren <manman.ren@gmail.com> Debug Info: In DIBuilder, the context fields of a static member and a
typedef are updated to use DIScopeRef.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192254 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
c1e2b2582c151be5a819705f20f6a7167db90cfa 09-Oct-2013 Manman Ren <manman.ren@gmail.com> Debug Info: In DIBuilder, the derived-from field of DICompositeType
is updated to use DITypeRef.

A paired commit at clang is required due to changes to DIBuilder.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192251 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
78c2f9b8cf7cd4492212c792d7ae3b21535d0a1d 09-Oct-2013 Manman Ren <manman.ren@gmail.com> Debug Info: In DIBuilder, the derived-from field of DIDerivedType
is updated to use DITypeRef.

A paired commit at clang is required due to changes to DIBuilder.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192246 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
c4a8c07f6489c0081207f722ce0a4502614aef69 07-Oct-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Change objectsize intrinsic to accept different address spaces.

Bitcasting everything to i8* won't work. Autoupgrade the old
intrinsic declarations to use the new mangling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192117 91177308-0d34-0410-b5e6-96231b3b80d8
utoUpgrade.cpp
2def17935c87f5e6b23d899567ef3dd00ed89d48 06-Oct-2013 Rafael Espindola <rafael.espindola@gmail.com> Add support for aliases with linkonce_odr.

This will be used to extend constructor aliases in clang.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192066 91177308-0d34-0410-b5e6-96231b3b80d8
erifier.cpp
c664d76716ba87577b6c2a513ce4fe0712a2d3e2 05-Oct-2013 Manman Ren <manman.ren@gmail.com> Debug Info: In DIBuilder, the derived-from field of a DW_TAG_pointer_type
is updated to use DITypeRef.

Move isUnsignedDIType and getOriginalTypeSize from DebugInfo.h to be static
helper functions in DwarfCompileUnit. We already have a static helper function
"isTypeSigned" in DwarfCompileUnit, and a pointer to DwarfDebug is added to
resolve the derived-from field. All three functions need to go across link
for derived-from fields, so we need to get hold of a type identifier map.

A pointer to DwarfDebug is also added to DbgVariable in order to resolve the
derived-from field.

Debug info verifier is updated to check a derived-from field is a TypeRef.
Verifier will not go across link for derived-from fields, in debug info finder,
we go across the link to add derived-from fields to types.

Function getDICompositeType is only used by dragonegg and since dragonegg does
not generate identifier for types, we use an empty map to resolve the
derived-from field.

When printing a derived-from field, we use DITypeRef::getName to either return
the type identifier or getName of the DIType.

A paired commit at clang is required due to changes to DIBuilder.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192018 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
3f045005bf96b6521b2769fc824283589bfa133a 04-Oct-2013 Eric Christopher <echristo@gmail.com> Temporarily revert r191792 as it is causing some LTO debug failures
on platforms with relocations in debug info and also temporarily
revert r191800 due to conflicts with the revert of r191792.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191967 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
da750239bd1f02aef403baa4805805fb580e78e1 03-Oct-2013 Pete Cooper <peter_cooper@apple.com> Add v4f16 to supported value types.

This is useful for some ARM intrinsics such as VCVTN which does a <4 x float> <-> <4 x half> conversion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191870 91177308-0d34-0410-b5e6-96231b3b80d8
alueTypes.cpp
2b53089bd017139f0125b870ace94ff27dffd2ff 02-Oct-2013 Manman Ren <manman.ren@gmail.com> Debug Info: In DIBuilder, the derived-from field of a DW_TAG_pointer_type
is updated to use DITypeRef.

Move isUnsignedDIType and getOriginalTypeSize from DebugInfo.h to be static
helper functions in DwarfCompileUnit. We already have a static helper function
"isTypeSigned" in DwarfCompileUnit, and a pointer to DwarfDebug is added to
resolve the derived-from field. All three functions need to go across link
for derived-from fields, so we need to get hold of a type identifier map.

A pointer to DwarfDebug is also added to DbgVariable in order to resolve the
derived-from field.

Debug info verifier is updated to check a derived-from field is a TypeRef.
Verifier will not go across link for derived-from fields, in debug info finder,
we go across the link to add derived-from fields to types.

Function getDICompositeType is only used by dragonegg and since dragonegg does
not generate identifier for types, we use an empty map to resolve the
derived-from field.

When printing a derived-from field, we use DITypeRef::getName to either return
the type identifier or getName of the DIType.

A paired commit at clang is required due to changes to DIBuilder.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191800 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
b1d70af7b93c1e9161a4e7ca51659a1123c96177 01-Oct-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Reuse variable

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191712 91177308-0d34-0410-b5e6-96231b3b80d8
odule.cpp
2ebcd57e6adf2dc951eb7ad5f42952961f1a60c9 30-Sep-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Fix getOrInsertGlobal dropping the address space.

Currently it will insert an illegal bitcast.
Arguably, the address space argument should be
added for the creation case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191702 91177308-0d34-0410-b5e6-96231b3b80d8
odule.cpp
e5388399c795edd3687b08f33446a253d65247d6 30-Sep-2013 Manman Ren <manman.ren@gmail.com> Debug Info: constify and rename from generateRef to getRef.

No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191696 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
f625c14487e59aaa7d6c7e548be654de949ecec8 28-Sep-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Fix typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191595 91177308-0d34-0410-b5e6-96231b3b80d8
odule.cpp
804f034bd18789e9bbf4c70c10189dd6dbf04128 28-Sep-2013 Manman Ren <manman.ren@gmail.com> AutoUpgrade: upgrade from scalar TBAA format to struct-path aware TBAA format.

We treat TBAA tags as struct-path aware TBAA format when the first operand
is a MDNode and the tag has 3 or more operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191593 91177308-0d34-0410-b5e6-96231b3b80d8
utoUpgrade.cpp
477fc628b3c9ce1c970d4a678dd5607b15242cc8 24-Sep-2013 Jiangning Liu <jiangning.liu@arm.com> Initial support for Neon scalar instructions.

Patch by Ana Pazos.

1.Added support for v1ix and v1fx types.
2.Added Scalar Pairwise Reduce instructions.
3.Added initial implementation of Scalar Arithmetic instructions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191263 91177308-0d34-0410-b5e6-96231b3b80d8
unction.cpp
alueTypes.cpp
abe68f59174c7418ae73de0a87587abe0be1fb03 19-Sep-2013 Andrew Trick <atrick@apple.com> Revert "Encapsulate PassManager debug flags to avoid static init and cxa_exit."

Working on a better solution to this.

This reverts commit 7d4e9934e7ca83094c5cf41346966c8350179ff2.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190990 91177308-0d34-0410-b5e6-96231b3b80d8
ore.cpp
assManager.cpp
7d4e9934e7ca83094c5cf41346966c8350179ff2 19-Sep-2013 Andrew Trick <atrick@apple.com> Encapsulate PassManager debug flags to avoid static init and cxa_exit.

This puts all the global PassManager debugging flags, like
-print-after-all and -time-passes, behind a managed static. This
eliminates their static initializers and, more importantly, exit-time
destructors.

The only behavioral change I anticipate is that tools need to
initialize the PassManager before parsing the command line in order to
export these options, which makes sense. Tools that already initialize
the standard passes (opt/llc) don't need to do anything new.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190974 91177308-0d34-0410-b5e6-96231b3b80d8
ore.cpp
assManager.cpp
2cccc6220cc351b52d2cd2d0b7139502e854b68d 19-Sep-2013 Andrew Trick <atrick@apple.com> whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190973 91177308-0d34-0410-b5e6-96231b3b80d8
ore.cpp
assManager.cpp
4b28ee208895d2a9c98b9e63d0c39985500e9291 17-Sep-2013 Matt Arsenault <Matthew.Arsenault@amd.com> MemCpyOptimizer: Use max legal int size instead of pointer size

If there are no legal integers, assume 1 byte.

This makes more sense than using the pointer size as
a guess for the maximum GPR width.

It is conceivable to want to use some 64-bit pointers
on a target where 64-bit integers aren't legal.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190817 91177308-0d34-0410-b5e6-96231b3b80d8
ataLayout.cpp
1e3037f0be430ef2339838bbdede11f45658bd82 16-Sep-2013 Peter Collingbourne <peter@pcc.me.uk> Implement function prefix data as an IR feature.

Previous discussion:
http://lists.cs.uiuc.edu/pipermail/llvmdev/2013-July/063909.html

Differential Revision: http://llvm-reviews.chandlerc.com/D1191

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190773 91177308-0d34-0410-b5e6-96231b3b80d8
smWriter.cpp
unction.cpp
LVMContextImpl.h
ypeFinder.cpp
dc293b3fe9e3cb7eb7ce7035b32218251a06fbfe 11-Sep-2013 Manman Ren <manman.ren@gmail.com> Debug Info: move class definition of DIRef.

Definition of DIRef used to require the full definition of DIType because
of usage of DIType::isType in DIRef::resolve. We now use DIDescriptor::isType
instead to remove the requirement and move definition of DIRef before DIType.

With this, we can move the definition of DIType::getContext to the header
file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190540 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
55c06ae7afa3f862a6bb4a4441fe485c135f5b5e 11-Sep-2013 Benjamin Kramer <benny.kra@googlemail.com> Revert "Give internal classes hidden visibility."

It works with clang, but GCC has different rules so we can't make all of those
hidden. This reverts commit r190534.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190536 91177308-0d34-0410-b5e6-96231b3b80d8
smWriter.h
ttributeImpl.h
onstantsContext.h
LVMContextImpl.h
eaksContext.h
15f387c93ef8d5c23f110143996c8b9b4a089864 11-Sep-2013 Benjamin Kramer <benny.kra@googlemail.com> Give internal classes hidden visibility.

Worth 100k on a linux/x86_64 Release+Asserts clang.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190534 91177308-0d34-0410-b5e6-96231b3b80d8
smWriter.h
ttributeImpl.h
onstantsContext.h
LVMContextImpl.h
eaksContext.h
2c46deb1d07f4588ee70059cdd4c7145f81bc8e8 10-Sep-2013 Manman Ren <manman.ren@gmail.com> Debug Info: define a DIRef template.

Specialize the constructors for DIRef<DIScope> and DIRef<DIType> to make sure
the Value is indeed a scope ref and a type ref.

Use DIScopeRef for DIScope::getContext and DIType::getContext and use DITypeRef
for getContainingType and getClassType.

DIScope::generateRef now returns a DIScopeRef instead of a "Value *" for
readability and type safety.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190418 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
d4fc36f2644283c710400adfb0d6ddebea622753 10-Sep-2013 Manman Ren <manman.ren@gmail.com> Debug Info: In DIBuilder, the context fields of a TAG_inheritance and a
TAG_friend are updated to use scope reference.

Added testing cases to verify that class with inheritance can be uniqued.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190364 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
e72aba9c0ff5b19128f54b09a36d2f4c2a53b40b 10-Sep-2013 Manman Ren <manman.ren@gmail.com> Debug Info: move DIScope::getContext back from DwarfDebug.

This partially reverts r190330. DIScope::getContext now returns DIScopeRef
instead of DIScope. We construct a DIScopeRef from DIScope when we are
dealing with subprogram, lexical block or name space.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190362 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
2c9905a1f3bcf22cc2f93332cc8411d11798ba07 09-Sep-2013 Manman Ren <manman.ren@gmail.com> Debug Info: Use DIScopeRef for DIType::getContext.

In DIBuilder, the context field of a TAG_member is updated to use the
scope reference. Verifier is updated accordingly.

DebugInfoFinder now needs to generate a type identifier map to have
access to the actual scope. Same applies for BreakpointPrinter.

processModule of DebugInfoFinder is called during initialization phase
of the verifier to make sure the type identifier map is constructed early
enough.

We are now able to unique a simple class as demonstrated by the added
testing case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190334 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
erifier.cpp
18eb245a2e5ec41b5da1367d5f7e7619532f7ceb 09-Sep-2013 Manman Ren <manman.ren@gmail.com> Debug Info: move DIScope::getContext to DwarfDebug.

DIScope::getContext is a wrapper function that calls the specific getContext
method on each subclass. When we switch DIType::getContext to return DIScopeRef
instead of DIScope, DIScope::getContext can no longer return a DIScope without
a type identifier map.

DIScope::getContext is only used by DwarfDebug, so we move it to DwarfDebug
to have easy access to the type identifier map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190330 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
db3a9e64f856e3a233a427da1f3969fd3a65a438 09-Sep-2013 Bob Wilson <bob.wilson@apple.com> Revert patches to add case-range support for PR1255.

The work on this project was left in an unfinished and inconsistent state.
Hopefully someone will eventually get a chance to implement this feature, but
in the meantime, it is better to put things back the way the were. I have
left support in the bitcode reader to handle the case-range bitcode format,
so that we do not lose bitcode compatibility with the llvm 3.3 release.

This reverts the following commits: 155464, 156374, 156377, 156613, 156704,
156757, 156804 156808, 156985, 157046, 157112, 157183, 157315, 157384, 157575,
157576, 157586, 157612, 157810, 157814, 157815, 157880, 157881, 157882, 157884,
157887, 157901, 158979, 157987, 157989, 158986, 158997, 159076, 159101, 159100,
159200, 159201, 159207, 159527, 159532, 159540, 159583, 159618, 159658, 159659,
159660, 159661, 159703, 159704, 160076, 167356, 172025, 186736

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190328 91177308-0d34-0410-b5e6-96231b3b80d8
nstructions.cpp
erifier.cpp
02d296759cd53f2d6081fd307c4d81cc41f2c9ed 09-Sep-2013 Manman Ren <manman.ren@gmail.com> Debug Info: Move isSubprogramContext from DebugInfo to DwarfDebug.

This helper function needs the type identifier map when we switch
DIType::getContext to return DIScopeRef instead of DIScope.

Since isSubprogramContext is used by DwarfDebug only, We move it to DwarfDebug
to have easy access to the map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190325 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
c573305bce147df68051a6dffef034c6210ab89c 09-Sep-2013 Manman Ren <manman.ren@gmail.com> Debug Info: Rename DITypeRef to DIScopeRef.

A reference to a scope is more general than a reference to a type since
DIType is a subclass of DIScope.

A reference to a type can be either an identifier for the type or
the DIType itself, while a reference to a scope can be either an
identifier for the type (when the scope is indeed a type) or the
DIScope itself. A reference to a type and a reference to a scope
will be resolved in the same way. The only difference is in the
verifier when a field is a reference to a type (i.e. the containing
type field of a DICompositeType) or a field is a reference to a scope
(i.e. the context field of a DIType).

This is to get ready for switching DIType::getContext to return
DIScopeRef instead of DIScope.

Tighten up isTypeRef and isScopeRef to make sure the identifier is not
empty and the MDNode is DIType for TypeRef and DIScope for ScopeRef.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190322 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
626a4b785b8ef14bbd4f763a01396df3c6a758f7 09-Sep-2013 Manman Ren <manman.ren@gmail.com> Debug Info: Update isScope to make sure DIType is a scope and
TAG_file_type is also a scope.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190321 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
c7a25acefa43adba6623b2cc5b456151531dc7f4 08-Sep-2013 Manman Ren <manman.ren@gmail.com> Revert r190269 to fix dragonegg failures.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190271 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
4fa214b2b9b4db9aaeb82467caddb303725fa91d 08-Sep-2013 Manman Ren <manman.ren@gmail.com> Debug Info: use null instead of "i32 0" in DIBuilder.

For context field of subroutine_type and when creating artificial types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190270 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
d372889eabcd10a9d8ce8fe9a4b2678d3a51d823 08-Sep-2013 Manman Ren <manman.ren@gmail.com> Debug Info: pass in DIScope instead of DIDescriptor in createMemberType.

Improve readability. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190269 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
9401181aedb28198ceac56522f997899c426fc5e 07-Sep-2013 Richard Smith <richard-llvm@metafoo.co.uk> Remove verifier check that attribute 'builtin' is only applied to calls to
functions marked 'nobuiltin'. That approach doesn't play well with LTO, and
there's no harm in marking a call as 'builtin' if it was going to be a builtin
regardless.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190233 91177308-0d34-0410-b5e6-96231b3b80d8
erifier.cpp
0e85f6e391990cc20be98263640b843edfa32bef 07-Sep-2013 Manman Ren <manman.ren@gmail.com> Debug Info: Use identifier to reference DIType in containing type field of
a DISubprogram.

Verifier is updated accordingly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190229 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
8b56ca61e1f174d08d78f5aab3c83633c48af3a5 07-Sep-2013 Manman Ren <manman.ren@gmail.com> Debug Info: pass in VTableHolder as DIType instead of MDNode *.

Remove one cast and improve readability. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190225 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
e42279cda481b48138d2119f4a4bbce7077f0a72 06-Sep-2013 Manman Ren <manman.ren@gmail.com> Debug Info: Use identifier to reference DIType in containing type field of
a DICompositeType.

Verifier is updated accordingly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190190 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
5930eabe0fdc48c02c5af500aa5b1c5b732848b1 06-Sep-2013 Manman Ren <manman.ren@gmail.com> Debug Info: Move a helper function getTypeIdentifier from DIBuilder to be part
of DIType.

Implement DIType::generateRef to return a type reference. This function will be
used in setContaintingType and in DIBuilder to generete the type reference.

No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190188 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
bc66071baa3153ba95d673b8084383835221eef6 05-Sep-2013 Manman Ren <manman.ren@gmail.com> Debug Info: Use identifier to reference DIType in base type field of
ptr_to_member.

We introduce a new class DITypeRef that represents a reference to a DIType.
It wraps around a Value*, which can be either an identifier in MDString
or an actual MDNode. The class has a helper function "resolve" that
finds the actual MDNode for a given DITypeRef.

We specialize getFieldAs to return a field that is a reference to a
DIType. To correctly access the base type field of ptr_to_member,
getClassType now calls getFieldAs<DITypeRef> to return a DITypeRef.

Also add a typedef for DITypeIdentifierMap and a helper
generateDITypeIdentifierMap in DebugInfo.h. In DwarfDebug.cpp, we keep
a DITypeIdentifierMap and call generateDITypeIdentifierMap to actually
populate the map.

Verifier is updated accordingly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190081 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
3a0e9b50f3a9031217a8fe209398ec37c54774eb 30-Aug-2013 Manman Ren <manman.ren@gmail.com> DIBuilder: retain a type when created with a unique identifier.

createClassType, createStructType, createUnionType, createEnumerationType,
and createForwardDecl will retain a type when created with a unique identifier,
to make sure they are treated as used even when all uses are replaced with
the identifiers.

Use TrackingVH<MDNode> instead of MDNode in AllRetainTypes, since the created
node can later be updated.

The change will be tested when clients of DIBuilder start to pass in non-empty
unique identifier.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189621 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
b5011bd2695cf6d4bdb2fa295abc5db37518d1cc 28-Aug-2013 David Blaikie <dblaikie@gmail.com> Period.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189513 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
02ae44f31c83117e9f08f5c40d4124da03e64234 28-Aug-2013 David Blaikie <dblaikie@gmail.com> r189495: Pull out some debug logic into a function for legibility

Code review feedback from Eric Christopher.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189512 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
980879e618d32f7516aa3bbf1ee084b06e52d0ef 28-Aug-2013 David Blaikie <dblaikie@gmail.com> PR16995: DebugInfo: Don't overwrite existing member lists when adding template arguments

With the added debug assertions this fix is covered by existing Clang
tests. (& found some other issues, also fixed)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189495 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
23f84cb1406b0f26f5bd808afa1828d427a40a2f 28-Aug-2013 Manman Ren <manman.ren@gmail.com> DIBuilder: take an optional StringRef to pass in unique identifier.

createClassType, createStructType, createUnionType, createEnumerationType,
and createForwardDecl will take an optional StringRef to pass in
the unique identifier.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189410 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
6e3cd0ebe22a7cc959ed301de7f2f09d7a9307c8 27-Aug-2013 Manman Ren <manman.ren@gmail.com> Debug Info: add an identifier field to DICompositeType.

DICompositeType will have an identifier field at position 14. For now, the
field is set to null in DIBuilder.
For DICompositeTypes where the template argument field (the 13th field)
was optional, modify DIBuilder to make sure the template argument field is set.
Now DICompositeType has 15 fields.

Update DIBuilder to use NULL instead of "i32 0" for null value of a MDNode.
Update verifier to check that DICompositeType has 15 fields and the last
field is null or a MDString.

Update testing cases to include an extra field for DICompositeType.
The identifier field will be used by type uniquing so a front end can
genearte a DICompositeType with a unique identifer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189282 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
c99a0d8586cd1b3f6d3b13bb839205e22375235d 25-Aug-2013 Chandler Carruth <chandlerc@gmail.com> Fix a bug where we would corrupt the offset when evaluating
a non-constant GEP.

I don't have any test case that demonstrates this, Nadav (indirectly)
pointed this out in code review. I'm not sure how possible it is to
contrive a test case for the current users of this code that triggers
the bad issue sadly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189188 91177308-0d34-0410-b5e6-96231b3b80d8
alue.cpp
6b6a2ac6ca5aada4ff3d6882e0570338baed5a8b 24-Aug-2013 Manman Ren <manman.ren@gmail.com> DebugInfoFinder: handle imported entities of a CU.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189158 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
003f5519129e5413768b3d6a309f36389f425ced 23-Aug-2013 Manman Ren <manman.ren@gmail.com> DebugInfoFinder: handle template params of a DISubprogram.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189131 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
5768bb8d77892926dff0d078b1fb08c14ea791f3 23-Aug-2013 Andrea Di Biagio <Andrea_DiBiagio@sn.scee.net> Add function attribute 'optnone'.

This function attribute indicates that the function is not optimized
by any optimization or code generator passes with the
exception of interprocedural optimization passes.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189101 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
erifier.cpp
f73826bef09fcc38d2db7b69baf0b8a45c9788f8 22-Aug-2013 Chandler Carruth <chandlerc@gmail.com> Add a new helper method to Value to strip in-bounds constant offsets of
pointers, but accumulate the offset into an APInt in the process of
stripping it.

This is a pretty handy thing to have, such as when trying to determine
if two pointers are at some constant relative offset. I'll be committing
a patch shortly to use it for exactly that purpose.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189000 91177308-0d34-0410-b5e6-96231b3b80d8
alue.cpp
abd37961d55680e5e946b9e336ce14b4ac56f830 20-Aug-2013 Peter Collingbourne <peter@pcc.me.uk> Introduce non-const overloads for GlobalAlias::{get,resolve}AliasedGlobal.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188725 91177308-0d34-0410-b5e6-96231b3b80d8
lobals.cpp
692062f18023979c0f8d5a155c14cf1f1616a2b0 16-Aug-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: Allow the addition of other (such as static data) members to a record type after construction

Plus a type cleanup & minor fix to enumerate members of declarations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188577 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
0fe3792a2fd6ed9c20d8bf8eb3689672cb30c1c7 14-Aug-2013 Jack Carter <jack.carter@imgtec.com> [Mips][msa] Value types for MSA support.

Added v8f16 to ValueTypes.h, ValueTypes.cpp, ValueTypes.td,
and CodeGenTarget.cpp

Patch by Daniel Sanders


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188326 91177308-0d34-0410-b5e6-96231b3b80d8
alueTypes.cpp
8328b6932ffeb41af7fc1260a48d36cf2a427f6f 09-Aug-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: provide the ability to add members to a class after it has been constructed

This is necessary to allow Clang to only emit implicit members when
there is code generated for them, rather than whenever they are ODR
used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188082 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
dc1363f5af47542a602c80e726749bc06d8ef3f8 08-Aug-2013 Eric Christopher <echristo@gmail.com> Make sure that if we're going to attempt to add a type to a DIE that
the type exists.

Fix up cases where we weren't checking for optional types and add
an assert to addType to make sure we catch this in the future.

Fix up a testcase that was using the tag for DW_TAG_array_type
when it meant DW_TAG_enumeration_type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187963 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
31667626106048c07866d996e667a3a10010ef4b 08-Aug-2013 Eric Christopher <echristo@gmail.com> Be more rigorous about the sizes of forms and attributes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187953 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
fab2daa4a1127ecb217abe2b07c1769122b6fee1 08-Aug-2013 Stephen Hines <srhines@google.com> Merge commit '10251753b6897adcd22cc981c0cc42f348c109de' into merge-20130807

Conflicts:
lib/Archive/ArchiveReader.cpp
lib/Support/Unix/PathV2.inc

Change-Id: I29d8c1e321a4a380b6013f00bac6a8e4b593cc4e
f40d578d7e4f29fcc72fc39882014e03cd3f5bd0 06-Aug-2013 Manman Ren <manman.ren@gmail.com> Debug Info Finder|Verifier: handle DbgLoc attached to instructions.

Also remove checking of llvm.dbg.sp since it is not used in generating dwarf.

Current state of Finder:
DebugInfoFinder tries to list all debug info MDNodes used in a module. To
list debug info MDNodes used by an instruction, DebugInfoFinder provides
processDeclare, processValue and processLocation to handle DbgDeclareInst,
DbgValueInst and DbgLoc attached to instructions. processModule will go
through all DICompileUnits in llvm.dbg.cu and list debug info MDNodes
used by the CUs.

TODO:
1> Finder has a list of CUs, SPs, Types, Scopes and global variables. We
need to add a list of variables that are used by DbgDeclareInst and
DbgValueInst.
2> MDString fields should be null or isa<MDString> and MDNode fields should be
null or isa<MDNode>. We currently use empty string or int 0 to represent null.
3> Go though Verify functions and make sure that they check field types.
4> Clean up existing testing cases to remove llvm.dbg.sp and make sure each
testing case has a llvm.dbg.cu.

Re-apply r187609 with fix to pass ocaml binding. vmcore.ml generates a debug
location with scope being metadata !{}, in verifier we treat this as a null
scope.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187812 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
erifier.cpp
40bacacad3dac9eb5202193f685719d0f37d7f4a 03-Aug-2013 Peter Collingbourne <peter@pcc.me.uk> Add a AttributeSetImpl::dump function.

This is for the benefit of those of us with inferior debuggers which
do not permit member function calls on value types.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187685 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
7bba9c5c0a5235f585ee4bd3efec29e0982de3f8 03-Aug-2013 Peter Collingbourne <peter@pcc.me.uk> Make one of the AttributeSet ctors maintain the invariant that the
attribute list is ordered by index.

Differential Revision: http://llvm-reviews.chandlerc.com/D1265

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187682 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
be9f508aecfd255f47f8ea3cfe4fadbf1382ba10 02-Aug-2013 Eric Christopher <echristo@gmail.com> Temporarily revert "Debug Info Finder|Verifier: handle DbgLoc attached to
instructions." in an attempt to bring back some bots.

This reverts commit r187609.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187638 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
erifier.cpp
f589eef8645219dbcd1a4eec85ffb34a067534a6 01-Aug-2013 Manman Ren <manman.ren@gmail.com> Debug Info Finder|Verifier: handle DbgLoc attached to instructions.

Also remove checking of llvm.dbg.sp since it is not used in generating dwarf.

Current state of Finder:
DebugInfoFinder tries to list all debug info MDNodes used in a module. To
list debug info MDNodes used by an instruction, DebugInfoFinder provides
processDeclare, processValue and processLocation to handle DbgDeclareInst,
DbgValueInst and DbgLoc attached to instructions. processModule will go
through all DICompileUnits in llvm.dbg.cu and list debug info MDNodes
used by the CUs.

TODO:
1> Finder has a list of CUs, SPs, Types, Scopes and global variables. We
need to add a list of variables that are used by DbgDeclareInst and
DbgValueInst.
2> MDString fields should be null or isa<MDString> and MDNode fields should be
null or isa<MDNode>. We currently use empty string or int 0 to represent null.
3> Go though Verify functions and make sure that they check field types.
4> Clean up existing testing cases to remove llvm.dbg.sp and make sure each
testing case has a llvm.dbg.cu.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187609 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
erifier.cpp
16e4ed5879da57502ea3686c79c63f86994fbe75 31-Jul-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Reject bitcasts between address spaces with different sizes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187506 91177308-0d34-0410-b5e6-96231b3b80d8
erifier.cpp
5b62bb0af119f92ca9ecec2150dab898c73cfcd8 31-Jul-2013 Richard Trieu <rtrieu@google.com> Add parentheses to silence gcc warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187482 91177308-0d34-0410-b5e6-96231b3b80d8
nstructions.cpp
1bf0ec4e1642a532c0121de8ccc0878d6403c9d3 31-Jul-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Fix ptr vector inconsistency in CreatePointerCast

One form would accept a vector of pointers, and the other did not.
Make both accept vectors of pointers, and add an assertion
for the number of elements.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187464 91177308-0d34-0410-b5e6-96231b3b80d8
nstructions.cpp
3181f5900ff5d9800c38284c7d3427cb6e306c9a 31-Jul-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Respect address space sizes in isEliminableCastPair.

This avoids constant folding bitcast/ptrtoint/inttoptr combinations
that have illegal bitcasts between differently sized address spaces.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187455 91177308-0d34-0410-b5e6-96231b3b80d8
onstantFold.cpp
nstructions.cpp
485c7fd76b32a69c46782a715682ed8831b0873b 31-Jul-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Revert "Remove isCastable since nothing uses it now"

Apparently dragonegg uses it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187454 91177308-0d34-0410-b5e6-96231b3b80d8
nstructions.cpp
0de6832c16ce48f6546c74f6b17e27d149eebfb2 30-Jul-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Remove isCastable since nothing uses it now

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187448 91177308-0d34-0410-b5e6-96231b3b80d8
nstructions.cpp
f34dc428fa577d6d5d71ab3a1f9765b4e5da5a4f 30-Jul-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Change behavior of calling bitcasted alias functions.

It will now only convert the arguments / return value and call
the underlying function if the types are able to be bitcasted.
This avoids using fp<->int conversions that would occur before.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187444 91177308-0d34-0410-b5e6-96231b3b80d8
nstructions.cpp
fe655dc15598ebd4c8077e4a67914e7f233e0774 27-Jul-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Minor code simplification suggested by Duncan

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187309 91177308-0d34-0410-b5e6-96231b3b80d8
ataLayout.cpp
2d69cc4baec46899cef88e14d8b9baf1c196fbcd 27-Jul-2013 Manman Ren <manman.ren@gmail.com> Debug Info Verifier: verify SPs in llvm.dbg.sp.

Also always add DIType, DISubprogram and DIGlobalVariable to the list
in DebugInfoFinder without checking them, so we can verify them later
on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187285 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
388d3225dd26d5ebe1eaf4d993eff8cf602c258f 26-Jul-2013 Eric Christopher <echristo@gmail.com> Use more parens to clarify assert.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187247 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
ce0a12399c263544bb23920131bd3da60d981b38 26-Jul-2013 Manman Ren <manman.ren@gmail.com> Debug Info Verifier: enable verification of DICompileUnit.

We used to call Verify before adding DICompileUnit to the list, and now we
remove the check and always add DICompileUnit to the list in DebugInfoFinder,
so we can verify them later on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187237 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
d4afa8bbabd83e2b68afcc61e44fadb9e7964b07 26-Jul-2013 Eric Christopher <echristo@gmail.com> Collapse conditional and add an assert for unhandled scope types.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187224 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
58376d8ede436eb1fe474bca1582a4f7afe613f9 26-Jul-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Re-add DataLayout pointer size convenience functions.

These were reverted in r167222 along with the rest
of the last different address space pointer size attempt.
These will be used in later commits.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187223 91177308-0d34-0410-b5e6-96231b3b80d8
ataLayout.cpp
956e5aa3bd32212c6902a585a367dbf58d685340 26-Jul-2013 Eric Christopher <echristo@gmail.com> Add a way to get the context of any particular scope.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187212 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
3367ed322026a475273dc676896c0d03c1e8102f 25-Jul-2013 Manman Ren <manman.ren@gmail.com> Debug Info: update comments and add a FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187157 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
cb420a4bc066b0b85e50b0c362ae20519d28788c 25-Jul-2013 Manman Ren <manman.ren@gmail.com> Debug Info: improve the verifier to check field types.

Make sure the context field of DIType is MDNode.
Fix testing cases to make them pass the verifier.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187150 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
9e2ef7780b91d8e01a9ab172f80272fc94f6956b 25-Jul-2013 Bill Wendling <isanbard@gmail.com> Add a way to add a kind-value string pair to an attribute.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187138 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
27ce44d3b4d2111c636fd802920dd0c35b7d6829 25-Jul-2013 Manman Ren <manman.ren@gmail.com> Debug Info: improve the verifier to check field types.

Make sure the context and type fields are MDNodes. We will generate
verification errors if those fields are non-empty strings.
Fix testing cases to make them pass the verifier.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187106 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
2d680824e3a5272e386aa6c1d2a66676de7899fd 25-Jul-2013 Rafael Espindola <rafael.espindola@gmail.com> Make these methods const correct.

Thanks to Nick Lewycky for noticing it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187098 91177308-0d34-0410-b5e6-96231b3b80d8
odule.cpp
f245ae5a4a78d5a02b3b9e2dae819077a56d81e7 25-Jul-2013 Bill Wendling <isanbard@gmail.com> Replace the "NoFramePointerElimNonLeaf" target option with a function attribute.

There's no need to specify a flag to omit frame pointer elimination on non-leaf
nodes...(Honestly, I can't parse that option out.) Use the function attribute
stuff instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187093 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
504a7fb8f9499a46d7c62a691cb6fa373e23387b 24-Jul-2013 Manman Ren <manman.ren@gmail.com> Debug Info: improve the Finder.

Improve the Finder to handle context of a DIVariable used by DbgValueInst.
Fix testing cases to make them pass the verifier.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187052 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
e6f774e7ef1a11af39a6565465355db905f59d81 24-Jul-2013 Eric Christopher <echristo@gmail.com> Replace with a "null" RAUW with an assert since we'd actually like
to assume we're replacing. Clarify comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187018 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
167153080bb192dc7ecb58ea41093c85a7d6a84f 24-Jul-2013 Eric Christopher <echristo@gmail.com> Remove dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187017 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
2d3adad723653e4acd3d1b3f7fcfd2691acccb73 24-Jul-2013 Eric Christopher <echristo@gmail.com> Remove unnecessary constructors as the default conversions will handle
all enumerated cases. Reformat the rest of the existing constructors to
match.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187015 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
e72a4d4843f8f42ac6dfda6511ad6a0a57468077 24-Jul-2013 Eric Christopher <echristo@gmail.com> More constructor cleanup.

Move to a single constructor with a default argument and avoid
the check and nullification.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187014 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
78ac65f06b0788f0cd657b2b0af5a0669322932f 24-Jul-2013 Eric Christopher <echristo@gmail.com> Collapse logic and move and reword comment for clarity.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187013 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
bf7644a27e517aeb24ed999a7444ab971d70693d 24-Jul-2013 Eric Christopher <echristo@gmail.com> Add a fixme and reformat.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187012 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
7894ffd006bfabd45c75696c9b7cfdda7c7bad9d 24-Jul-2013 Manman Ren <manman.ren@gmail.com> Debug Info: improve the Finder.

Improve the Finder to handle context of a DIVariable.
If Scope is a DICompileUnit, add it to the list of CUs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187003 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
4f2c29708d3208197f706f6e8841a2f828aea89c 24-Jul-2013 Manman Ren <manman.ren@gmail.com> Debug Info: clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187002 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
d2b82e9bb37699c7571558aa5d35e00f8030028f 24-Jul-2013 Eric Christopher <echristo@gmail.com> Remove unused function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187001 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
d2ed53c8e24ddb1e30246c918a8eabb678bd9495 23-Jul-2013 Manman Ren <manman.ren@gmail.com> Debug Info: code cleanup, use getNodeField if possible.

Use getNodeField to access a field as a MDNode.
No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186985 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
9fd6178dec9531fd44420e2bd121a36a1b9781fc 23-Jul-2013 Manman Ren <manman.ren@gmail.com> DebugInfo Verifier: verify the actual type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186972 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
0e29eeec278d80048de6cf6605e004bbdefaf38c 23-Jul-2013 Manman Ren <manman.ren@gmail.com> Debug Info Finder: use processDeclare and processValue to list debug info
MDNodes used by DbgDeclareInst and DbgValueInst.

Another 16 testing cases failed and they are disabled with
-disable-debug-info-verifier.
A total of 34 cases are disabled with -disable-debug-info-verifier and will be
corrected.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186902 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
erifier.cpp
fdd16bb91842b9cd8525d0a9202eb001233afcb5 22-Jul-2013 Manman Ren <manman.ren@gmail.com> Debug Info Finder: add processScope to actually handle the Scope.

Instead of just adding the scope to the list, we actually handle the scope.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186867 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
5f53c3be6fce77d494e82f23d5ea0b6a0144eb5d 20-Jul-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Disallow global aliases to bitcast between address spaces

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186767 91177308-0d34-0410-b5e6-96231b3b80d8
erifier.cpp
3f49322818a3f2b9ca6fe75f49c7541c8dfb538d 20-Jul-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Remove trailing whitespace, fix file path in comment

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186766 91177308-0d34-0410-b5e6-96231b3b80d8
utoUpgrade.cpp
erifier.cpp
96ea03839becf151b2eda518b4bc55b84f6373bf 20-Jul-2013 Manman Ren <manman.ren@gmail.com> Debug Info Verifier: simplify DIxxx::Verify

Simplify DIxxx:Verify to not call Verify on an operand. Instead, we use
DebugInfoFinder to list all MDNodes that should be a DIScope and all MDNodes
that should be a DIType and we will call Verify on those lists.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186737 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
erifier.cpp
70968319719fbfb00a58ebcf82b1e18ec04be5be 19-Jul-2013 Rafael Espindola <rafael.espindola@gmail.com> s/compiler_used/compiler.used/.

We were incorrectly using compiler_used instead of compiler.used. Unfortunately
the passes using the broken name had tests also using the broken name.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186705 91177308-0d34-0410-b5e6-96231b3b80d8
erifier.cpp
1fe3f9af7ff385c28b96cc46ee1ed3737c813c3a 19-Jul-2013 Eric Christopher <echristo@gmail.com> Remove DIBuilder cache of variable TheCU and change the few
uses that wanted it. Also change the interface for createCompileUnit
to compensate. Fix comments that refer to TheCU as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186637 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
cd26257c85ba52d83b3febcef5c40c5153836062 19-Jul-2013 Manman Ren <mren@apple.com> Debug Info: enable verifying by default and disable testing cases that fail.

1> Use DebugInfoFinder to find debug info MDNodes.
2> Add disable-debug-info-verifier to disable verifying debug info.
3> Disable verifying for testing cases that fail (will update the testing cases
later on).
4> MDNodes generated by clang can have empty filename for TAG_inheritance and
TAG_friend, so DIType::Verify is modified accordingly.

Note that DebugInfoFinder does not list all debug info MDNode.
For example, clang can generate:
metadata !{i32 786468}, which will fail to verify.
This MDNode is used by debug info but not included in DebugInfoFinder.
This MDNode is generated as a temporary node in DIBuilder::createFunction
Value *TElts[] = { GetTagConstant(VMContext, DW_TAG_base_type) };
MDNode::getTemporary(VMContext, TElts)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186634 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
erifier.cpp
7c05da187c9fd7ac83b97ecbe207b88a711667da 18-Jul-2013 Eric Christopher <echristo@gmail.com> Revert "Remove DIBuilder cache of variable TheCU and change the few"

This reverts commit r186599 as I didn't want to commit this yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186601 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
6abb4d2ef28f2c688498a10dfe0e4bd1b36882e3 18-Jul-2013 Eric Christopher <echristo@gmail.com> Remove DIBuilder cache of variable TheCU and change the few
uses that wanted it. Also change the interface for createCompileUnit
to compensate. Fix comments that refer to TheCU as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186599 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
c8cfaa1625a72aa3660a268dae753748cfed67d0 17-Jul-2013 Manman Ren <mren@apple.com> Add getModuleFlag(StringRef Key) to query a module flag given Key.

No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186470 91177308-0d34-0410-b5e6-96231b3b80d8
odule.cpp
a0ec3f9b7b826b9b40b80199923b664bad808cce 14-Jul-2013 Craig Topper <craig.topper@gmail.com> Use SmallVectorImpl& instead of SmallVector to avoid repeating small vector size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186274 91177308-0d34-0410-b5e6-96231b3b80d8
etadata.cpp
ac226bbf457f6b5e5210a4a82b1ce678298b2d89 12-Jul-2013 Charles Davis <cdavis5x@gmail.com> Target/X86: Add explicit Win64 and System V/x86-64 calling conventions.

Summary:
This patch adds explicit calling convention types for the Win64 and
System V/x86-64 ABIs. This allows code to override the default, and use
the Win64 convention on a target that wants to use SysV (and
vice-versa). This is needed to implement the `ms_abi` and `sysv_abi` GNU
attributes.

Reviewers:

CC:

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186144 91177308-0d34-0410-b5e6-96231b3b80d8
smWriter.cpp
e22cde01a63c907cb23f425ba4f4f16ede754dbe 11-Jul-2013 Benjamin Kramer <benny.kra@googlemail.com> Reduce the number of indirections in the attributes implementation.

- Coallocate entires for AttributeSetImpls and Nodes after the class itself.
- Remove mutable iterators from immutable classes.
- Remove unused context field from AttributeImpl.
- Derive Enum/Align/String attribute implementations from AttributeImpl instead
of having a whole new inheritance tree for them.
- Derive AlignAttributeImpl from EnumAttributeImpl.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186075 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
10050d19e857396e65289c05ce9714e0a570deed 11-Jul-2013 Hal Finkel <hfinkel@anl.gov> Don't assert if we can't constant fold extract/insertvalue

A non-constant-foldable static initializer expression containing insertvalue or
extractvalue had been causing an assert:

Constants.cpp:1971: Assertion `FC && "ExtractValue constant expr couldn't be
folded!"' failed.

Now we report a more-sensible "Unsupported expression in static initializer"
error instead.

Fixes PR15417.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186044 91177308-0d34-0410-b5e6-96231b3b80d8
onstants.cpp
7bb386a299a7ccee998654dc7f000f66dd3acbbf 09-Jul-2013 Eric Christopher <echristo@gmail.com> Revert "DebugInfo: remove unused helper function getDICompositeType."

This reverts commit r185876 as the functions appear to still be used
by dragonegg.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185890 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
6cf7246ecaf058733fdf8fa47896907204839f68 08-Jul-2013 Manman Ren <mren@apple.com> DebugInfo: remove unused helper function getDICompositeType.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185876 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
dc89737bcdbb8f69d8ae7578bdfa904cabcfc5ed 06-Jul-2013 Nick Lewycky <nicholas@mxc.ca> Extend 'readonly' and 'readnone' to work on function arguments as well as
functions. Make the function attributes pass add it to known library functions
and when it can deduce it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185735 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
unction.cpp
erifier.cpp
09bb56f0a0bb098faf076e54ee84221c1fd9fefa 05-Jul-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: Consider global variables without locations to be valid

We were being a bit too aggresive here in classifying global variables
with no global reference or constant value to be invalid - this would
cause LLVM to not emit the DWARF description of the global variable if
it had been optimized away, which isn't helpful for users who might
benefit from the global variable's description even if there's no
location information.

This also fixes a crasher issue here that I was unable to reduce a test
case for - involving a using decl (& subsequent
DW_TAG_imported_declaration ) of such a global variable that, once
optimized away, would crash when an attempt to emit the imported
declaration was made.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185675 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
6227d5c690504c7ada5780c00a635b282c46e275 04-Jul-2013 Craig Topper <craig.topper@gmail.com> Use SmallVectorImpl::iterator/const_iterator instead of SmallVector to avoid specifying the vector size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185606 91177308-0d34-0410-b5e6-96231b3b80d8
ataLayout.cpp
COV.cpp
40488cf13973dc5364f017c1a403fe93e6c46d6f 03-Jul-2013 Chad Rosier <chad.rosier@gmail.com> Use an RWMutex instead of a Mutex in PassRegistry.
Patch by Alex Crichton <alex@crichton.co>. Approved by Chris Lattner.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185566 91177308-0d34-0410-b5e6-96231b3b80d8
assRegistry.cpp
365ef0b197d7c841f8e501da64296df65be4ca23 03-Jul-2013 Craig Topper <craig.topper@gmail.com> Use SmallVectorImpl::iterator/const_iterator instead of SmallVector to avoid specifying the vector size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185540 91177308-0d34-0410-b5e6-96231b3b80d8
assManager.cpp
88328d2ff47670314a1007a4c81c42adf026ee9f 02-Jul-2013 Manman Ren <mren@apple.com> Debug Info: cleanup

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185456 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
068acc549547bebefd40e1dffb505d1a4477572d 02-Jul-2013 Tobias Grosser <grosser@fim.uni-passau.de> IRVerifier: Correctly check attribute types

Add missing parenthesis such that all and not only the very first attribute
is checked.

Testing this piece of code is not possible with an LLVM-IR test file, as the
LLVM-IR parser has a similar check such that the wrong IR does not even arrive
at the verifier.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185408 91177308-0d34-0410-b5e6-96231b3b80d8
erifier.cpp
89c83b76329ad8eb383a72f14e03dd13b5d780b7 01-Jul-2013 Manman Ren <mren@apple.com> Debug Info: clean up usage of Verify.

No functionality change. It should suffice to check the type of a debug info
metadata, instead of calling Verify.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185383 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
c7b61c638b912eaa7f85c7794589a253a3669162 01-Jul-2013 Manman Ren <mren@apple.com> Debug Info: Scope of a DebugLoc should not be null.

No functionality change. Remove handling for the null case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185354 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
80c070493d657a4bcc6eca5627c28d659d3330d8 30-Jun-2013 Benjamin Kramer <benny.kra@googlemail.com> ConstantFold: Check that truncating the other side is safe under a sext when trying to remove a sext from a compare.

Fixes PR16462.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185284 91177308-0d34-0410-b5e6-96231b3b80d8
onstantFold.cpp
da91817d40dad85a15e0f2a7e11d4d302949586b 29-Jun-2013 Manman Ren <mren@apple.com> Debug Info: clean up usage of Verify.

No functionality change.
It should suffice to check the type of a debug info metadata, instead of
calling Verify. For cases where we know the type of a DI metadata, use
assert.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185249 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
2d6e3bd8814db99c70aba5c2163825b92f9ed4b8 29-Jun-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Fix extra whitespace / formatting

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185238 91177308-0d34-0410-b5e6-96231b3b80d8
ataLayout.cpp
03ccdb5b1dbb95714f2fd86540292567c8442a6b 28-Jun-2013 Peter Collingbourne <peter@pcc.me.uk> Rename DIBuilder::createNullPtrType to createUnspecifiedType and introduce
a zero-argument createNullPtrType function for creating the canonical
nullptr type.

Differential Revision: http://llvm-reviews.chandlerc.com/D1050

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185114 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
2253a2f52f3c46ae75cd05f5885acb987bd1d6b6 27-Jun-2013 Michael Gottesman <mgottesman@apple.com> Added support for the Builtin attribute.

The Builtin attribute is an attribute that can be placed on function call site that signal that even though a function is declared as being a builtin,

rdar://problem/13727199

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185049 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
nstructions.cpp
erifier.cpp
a7e4d19dac9f9fbe9fa83ccb49a622e80a079b6a 26-Jun-2013 Adrian Prantl <aprantl@apple.com> s/C++0x/C++11/

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184892 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
a37d96a04b44b98dff5fbb4d5d1427bacb57c651 25-Jun-2013 Bill Wendling <isanbard@gmail.com> The GCDA 402 format won't have a second checksum either.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184864 91177308-0d34-0410-b5e6-96231b3b80d8
COV.cpp
e06db0c6f83c284814a89d5b9792cba7209977d9 24-Jun-2013 Adrian Prantl <aprantl@apple.com> typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184783 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
8de0a465b832052d975dc9fdced1adcf3336fabc 24-Jun-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: DIBuilder changes to match DIEnumerator changes in r184694

Representing enumerators by int64 instead of uint64 for now. At some
point we need to address the underlying issue of representation
depending on the specific enumeration.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184761 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
e88939cfebbc98133553c6fc03a52b8fb1adbb70 22-Jun-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: Support (using GNU extensions) for template template parameters and parameter packs

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184643 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
e954d98394c257b98b24e7ad43d4f5d1bffe09b1 21-Jun-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: When asm printing include a '[def]' tag for tag decls that are definitions (& rename the 'fwd' tag to 'decl' for clarity)

This change is version locked with a change in Clang, so expect some
transient buildbot fallout.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184525 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
07969dc8aed62fcd5c5760b2ec331275479f4a80 19-Jun-2013 Michael Gottesman <mgottesman@apple.com> [APFloat] Converted all references to APFloat::isNormal => APFloat::isFiniteNonZero.

Turns out all the references were in llvm and not in clang.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184356 91177308-0d34-0410-b5e6-96231b3b80d8
erifier.cpp
f2db8dfa84ead80df2e0ca8a56e9f0ae18d67a5e 18-Jun-2013 Bill Wendling <isanbard@gmail.com> We want a string representation of the attribute, not the kind as a string.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184239 91177308-0d34-0410-b5e6-96231b3b80d8
erifier.cpp
c06e5cf2e3724762a6c9830a00395736ec07d81a 13-Jun-2013 Derek Schuff <dschuff@google.com> Fix DeleteDeadVarargs not to crash on functions referenced by BlockAddresses

This pass was assuming that if hasAddressTaken() returns false for a
function, the function's only uses are call sites. That's not true
because there can be references by BlockAddresses too.

Fix the pass to handle this case. Fix
BlockAddress::replaceUsesOfWithOnConstant() to allow a function's type
to be changed by RAUW'ing the function with a bitcast of the recreated
function.

Patch by Mark Seaborn.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183933 91177308-0d34-0410-b5e6-96231b3b80d8
onstants.cpp
1878f9a7874b1ff569d745c0269f49d3daf7203d 12-Jun-2013 Stephen Hines <srhines@google.com> Merge commit '100fbdd06be7590b23c4707a98cd605bdb519498' into merge_20130612
9f8e6da019a99960af59c79e17659dd2dba8433e 11-Jun-2013 Rafael Espindola <rafael.espindola@gmail.com> Require members of llvm.used to be named.

The effect of llvm.used is to introduce an invisible reference, so this seems
a reasonable restriction. It will be used to provide an easy ordering of
the entries in llvm.used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183743 91177308-0d34-0410-b5e6-96231b3b80d8
erifier.cpp
576d49a775043931d81bba172b9b11f40d858cb6 07-Jun-2013 Manman Ren <mren@apple.com> DIBuilder: No functionality change.

Use the correct DIType when creating types in DIBuilder.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183543 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
37bfb18f8f0557611fbdf238abe200813f07d298 07-Jun-2013 Manman Ren <mren@apple.com> DIBuilder: No functionality change.

Use the correct DIType when creating vector types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183484 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
7c2b4be2a718b994298803dd09e81e49a016ffb2 01-Jun-2013 Benjamin Kramer <benny.kra@googlemail.com> Move getRealLinkageName to a common place and remove all the duplicates of it.

Also simplify code a bit while there. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183076 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
6dd56e60b002e5f3317bcc461be7fb8f6b19bbf5 01-Jun-2013 Benjamin Kramer <benny.kra@googlemail.com> Move object construction into [] so the temporary can be moved.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183075 91177308-0d34-0410-b5e6-96231b3b80d8
onstants.cpp
88c744083d6cf5f4810c1e9fe457a212bb24d432 29-May-2013 Adrian Prantl <aprantl@apple.com> Simplify logic by using the appropriate functions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182869 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
af10fe63c6b0246635e50f480abbf3d679f69246 28-May-2013 Rafael Espindola <rafael.espindola@gmail.com> Make it explicit that GlobalAlias are ok in llvm.used.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182747 91177308-0d34-0410-b5e6-96231b3b80d8
erifier.cpp
77226a03dca98e6237c1068f2652fe41bea7b687 24-May-2013 Diego Novillo <dnovillo@google.com> Add a new function attribute 'cold' to functions.

Other than recognizing the attribute, the patch does little else.
It changes the branch probability analyzer so that edges into
blocks postdominated by a cold function are given low weight.

Added analysis and code generation tests. Added documentation for the
new attribute.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182638 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
erifier.cpp
f8c243abba01d9d4fe53f7ab962139593f184400 24-May-2013 Daniel Malea <daniel.malea@intel.com> Re-implement DebugIR in a way that does not subclass AssemblyWriter:
- move AsmWriter.h from public headers into lib
- marked all AssemblyWriter functions as non-virtual; no need to override them
- DebugIR now "plugs into" AssemblyWriter with an AssemblyAnnotationWriter helper
- exposed flags to control hiding of a) debug metadata b) debug intrinsic calls

C/R: Paul Redmond



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182617 91177308-0d34-0410-b5e6-96231b3b80d8
smWriter.cpp
smWriter.h
3d33184d9da02fb699827249e0631106252f72fa 23-May-2013 David Blaikie <dblaikie@gmail.com> Solidify the assumption that a DW_TAG_subprogram's type is a DW_TAG_subroutine_type

There were bits & pieces of code lying around that may've given the
impression that debug info metadata supported the possibility that a
subprogram's type could be specified by a non-subroutine type describing
the return type of a void function. This support was incomplete &
unnecessary. Asserts & API have been changed to make the desired usage
more clear.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182532 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
6cfed36338d7728076ddbc1331908b887a4302d3 22-May-2013 Filip Pizlo <fpizlo@apple.com> Expose the RTDyldMemoryManager through the C API. This allows clients of
the C API to provide their own way of allocating JIT memory (both code
and data) and finalizing memory permissions (page protections, cache
flush).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182448 91177308-0d34-0410-b5e6-96231b3b80d8
ore.cpp
1441bf7a41b50075cf761cbc794ce3fd0b5762fc 21-May-2013 Filip Pizlo <fpizlo@apple.com> Roll out r182407 and r182408 because they broke builds.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182409 91177308-0d34-0410-b5e6-96231b3b80d8
ore.cpp
52755c472a738e48a9687240368e4c1f78c45711 21-May-2013 Filip Pizlo <fpizlo@apple.com> Expose the RTDyldMemoryManager through the C API. This allows clients of
the C API to provide their own way of allocating JIT memory (both code
and data) and finalizing memory permissions (page protections, cache
flush).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182408 91177308-0d34-0410-b5e6-96231b3b80d8
ore.cpp
7b72cc7782716f469eb1b0963423a5b414215705 21-May-2013 David Blaikie <dblaikie@gmail.com> PR14606: Debug Info for namespace aliases/DW_TAG_imported_module

This resolves the last of the PR14606 failures in the GDB 7.5 test
suite by implementing an optional name field for
DW_TAG_imported_modules/DIImportedEntities and using that to implement
C++ namespace aliases (eg: "namespace X = Y;").

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182328 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
24623dcd249939cfa35af4771b61aa47a5cbffc8 18-May-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Remove duplicated comment

The same comment is already made in the header

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182181 91177308-0d34-0410-b5e6-96231b3b80d8
ataLayout.cpp
2aa6db98df22ea328fbf49018cd0473e56a9ec4b 16-May-2013 Eli Bendersky <eliben@google.com> Remove dead code.

This method is not being used/tested anywhere.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181943 91177308-0d34-0410-b5e6-96231b3b80d8
odule.cpp
a88d974ce274152d2f8f28660ba277906bde2384 15-May-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Speed up Value::isUsedInBasicBlock() for long use lists.

This is expanding Ben's original heuristic for short basic blocks to
also work for longer basic blocks and huge use lists.

Scan the basic block and the use list in parallel, terminating the
search when the shorter list ends. In almost all cases, either the basic
block or the use list is short, and the function returns quickly.

In one crazy test case with very long use chains, CodeGenPrepare runs
400x faster. When compiling ARMDisassembler.cpp it is 5x faster.

<rdar://problem/13840497>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181851 91177308-0d34-0410-b5e6-96231b3b80d8
alue.cpp
4de9d72883eebe4e86bffdaad89483dfe822e2a5 10-May-2013 David Blaikie <dblaikie@gmail.com> PR14492: Debug Info: Support for values of non-integer non-type template parameters.

This is only tested for global variables at the moment (& includes tests
for the unnamed parameter case, since apparently this entire function
was completely untested previously)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181632 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
13ace6664fad8b4d0277d16690674f4e1f176642 08-May-2013 Daniel Malea <daniel.malea@intel.com> Add DebugIR pass -- emits IR file and replace source lines with IR lines in MD
- requires existing debug information to be present
- fixes up file name and line number information in metadata
- emits a "<orig_filename>-debug.ll" succinct IR file (without !dbg metadata
or debug intrinsics) that can be read by a debugger
- initialize pass in opt tool to enable the "-debug-ir" flag
- lit tests to follow



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181467 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
d0fef32e5f3700c7de6dfc50a1a3815659b7d19e 08-May-2013 Daniel Malea <daniel.malea@intel.com> Pull up AssemblyWriter interface into header to allow subclassing
- made all functions virtual so that subclasses can specialize them
- add printInstructionLine so that subclasses can choose whether or not to
print the newline character (without having to implement printBasicBlock()
- added a second constructor to AssemblyWriter that does not require a
SlotTracker, as required in order to keep the SlotTracker helper class outside
AsmWriter.h and buried in the implementation.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181466 91177308-0d34-0410-b5e6-96231b3b80d8
smWriter.cpp
20d9e41ddb3f531267680819b5cac4cac1c6b231 07-May-2013 David Blaikie <dblaikie@gmail.com> Rename DIImportedModule to DIImportedEntity and allow imported declarations

DIBuilder::createImportedDeclaration isn't fully plumbed through (note,
lacking in AsmPrinter/DwarfDebug support) but this seemed like a
sufficiently useful division of code to make the subsequent patch(es)
easier to follow.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181364 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
eaf14786ca3975266ed7041ac242122c02baf1cf 06-May-2013 Rafael Espindola <rafael.espindola@gmail.com> Fix const merging when an alias of a const is llvm.used.

We used to disable constant merging not only if a constant is llvm.used, but
also if an alias of a constant is llvm.used. This change fixes that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181175 91177308-0d34-0410-b5e6-96231b3b80d8
alue.cpp
5c332dbd30d9398ed25b30c3080506f7b8e92290 05-May-2013 Dmitri Gribenko <gribozavr@gmail.com> Add ArrayRef constructor from None, and do the cleanups that this constructor enables

Patch by Robert Wilhelm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181138 91177308-0d34-0410-b5e6-96231b3b80d8
onstantsContext.h
assManager.cpp
ype.cpp
38578c4919ea18ceb27e29988b2d857afe6215bf 03-May-2013 Stephen Hines <srhines@google.com> Merge remote-tracking branch 'upstream/master' into merge-20130502

Conflicts:
lib/Support/Unix/Signals.inc
unittests/Transforms/Utils/Cloning.cpp

Change-Id: I027581a4390ec3ce4cd8d33da8b5f4c0c7d372c8
40be1e85665d10f5444186f0e7106e368dd735b8 01-May-2013 Filip Pizlo <fpizlo@apple.com> This patch breaks up Wrap.h so that it does not have to include all of
the things, and renames it to CBindingWrapping.h. I also moved
CBindingWrapping.h into Support/.

This new file just contains the macros for defining different wrap/unwrap
methods.

The calls to those macros, as well as any custom wrap/unwrap definitions
(like for array of Values for example), are put into corresponding C++
headers.

Doing this required some #include surgery, since some .cpp files relied
on the fact that including Wrap.h implicitly caused the inclusion of a
bunch of other things.

This also now means that the C++ headers will include their corresponding
C API headers; for example Value.h must include llvm-c/Core.h. I think
this is harmless, since the C API headers contain just external function
declarations and some C types, so I don't believe there should be any
nasty dependency issues here.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180881 91177308-0d34-0410-b5e6-96231b3b80d8
ore.cpp
aae0298921d946a64385052ce6e678d36f936fb3 01-May-2013 Rafael Espindola <rafael.espindola@gmail.com> Now that the underlying issue is fixed, revert r180750 and r180722.

The cause of the windows failures was fixed by r180791. Revert to the state
after Sabre's original revert.

Original message:

revert r179735, it has no testcases, and doesn't really make sense.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180844 91177308-0d34-0410-b5e6-96231b3b80d8
smWriter.cpp
ttributeImpl.h
ttributes.cpp
76f103e02164d27b41bd92a9767c7012482ba31a 30-Apr-2013 Rafael Espindola <rafael.espindola@gmail.com> Change getSlotIndex to return unsigned.

The actual storage was already using unsigned, but the interface was using
uint64_t. This is wasteful on 32 bits and looks to be the root causes of
a miscompilation on Windows where a value was being sign extended to 64bits
to compare with the result of getSlotIndex.

Patch by Pasi Parviainen!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180791 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
725dae57916800c7371c5008bd451fb3edb273b2 30-Apr-2013 Bill Wendling <isanbard@gmail.com> Revert the command line option patch. However, keep the part that makes this pass on Windows. I.e., we don't emit the target dependent attributes in a comment before the function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180750 91177308-0d34-0410-b5e6-96231b3b80d8
smWriter.cpp
ttributes.cpp
f2e83499fcc41484cb5dac073c4fe87525926d2b 29-Apr-2013 Reid Kleckner <reid@kleckner.net> Revert "revert r179735, it has no testcases, and doesn't really make sense."

This un-reverts r179735 and reverts commit r180574.

This fixes assertion failures for me locally and should fix the failures
on Windows reported widely on llvm-dev. We should check if the bots
caught this and if so why not.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180722 91177308-0d34-0410-b5e6-96231b3b80d8
smWriter.cpp
ttributeImpl.h
ttributes.cpp
29fce9ad39636d38f43add5d7c23e83d9d1cc249 25-Apr-2013 Chris Lattner <sabre@nondot.org> revert r179735, it has no testcases, and doesn't really make sense.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180574 91177308-0d34-0410-b5e6-96231b3b80d8
smWriter.cpp
ttributeImpl.h
ttributes.cpp
13aba14eb5c643234f5d756b94f30afb28f8cd5d 23-Apr-2013 Stephen Lin <stephenwlin@gmail.com> Add some constraints to use of 'returned':

1) Disallow 'returned' on parameter that is also 'sret' (no sensible semantics, as far as I can tell).
2) Conservatively disallow tail calls through 'returned' parameters that also are 'zext' or 'sext' (for consistency with treatment of other zero-extending and sign-extending operations in tail call position detection...can be revised later to handle situations that can be determined to be safe).

This is a new attribute that is not yet used, so there is no impact.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180118 91177308-0d34-0410-b5e6-96231b3b80d8
erifier.cpp
8effd8dc98a793181b086dbfde31cdcbd2047200 23-Apr-2013 Carlo Kok <ck@remobjects.com> Expose IRBuilder::CreateAtomicRMW as LLVMBuildAtomicRMW in llvm-c.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180100 91177308-0d34-0410-b5e6-96231b3b80d8
ore.cpp
2ff97832e593926ea8dbdd5fc5bcf367475638a9 23-Apr-2013 Manman Ren <mren@apple.com> Struct-path aware TBAA: update getMostGenericTBAA

The tag is of type TBAANode when flag EnableStructPathTBAA is off.

Move implementation of MDNode::getMostGenericTBAA to TypeBasedAliasAnalysis.cpp
since it depends on how to interprete the MDNodes for scalar TBAA and
struct-path aware TBAA.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180068 91177308-0d34-0410-b5e6-96231b3b80d8
etadata.cpp
3e39731e88f2d4f597cebc74388fd6650ca4f604 23-Apr-2013 Eric Christopher <echristo@gmail.com> Move C++ code out of the C headers and into either C++ headers
or the C++ files themselves. This enables people to use
just a C compiler to interoperate with LLVM.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180063 91177308-0d34-0410-b5e6-96231b3b80d8
ore.cpp
97bf57d488a1bfcf7128cc2dbc695f6901ae9be7 22-Apr-2013 Rafael Espindola <rafael.espindola@gmail.com> Also verify llvm.compiler_used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180020 91177308-0d34-0410-b5e6-96231b3b80d8
erifier.cpp
cde25b435a907e7741da0c0d18953850936277c4 22-Apr-2013 Rafael Espindola <rafael.espindola@gmail.com> Clarify that llvm.used can contain aliases.

Also add a check for llvm.used in the verifier and simplify clients now that
they can assume they have a ConstantArray.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180019 91177308-0d34-0410-b5e6-96231b3b80d8
erifier.cpp
c462db6d66e683fb837c03d661483106a869a407 22-Apr-2013 David Blaikie <dblaikie@gmail.com> Revert "Revert "PR14606: debug info imported_module support""

This reverts commit r179840 with a fix to test/DebugInfo/two-cus-from-same-file.ll

I'm not sure why that test only failed on ARM & MIPS and not X86 Linux, even
though the debug info was clearly invalid on all of them, but this ought to fix
it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179996 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
456ca048af35163b9f52187e92a23ee0a9f059e8 20-Apr-2013 Stephen Lin <stephenwlin@gmail.com> Add CodeGen support for functions that always return arguments via a new parameter attribute 'returned', which is taken advantage of in target-independent tail call opportunity detection and in ARM call lowering (when placed on an integral first parameter).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179925 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
unction.cpp
erifier.cpp
09b798180340487e4397069e9fa22568099fd9b6 19-Apr-2013 Eric Christopher <echristo@gmail.com> 80-col fixup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179881 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
2f445be5a75b4d1a907dd694c9e5c518229df48e 19-Apr-2013 Adrian Prantl <aprantl@apple.com> Rename ClassType to the more accurate UnderlyingType and document its purpose.
rdar://problem/13463793

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179877 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
e94e4ca5fd94de185a840e9237b3b483f62342a8 19-Apr-2013 Benjamin Kramer <benny.kra@googlemail.com> Attributes: Don't print trailing whitespace on the function attribute comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179849 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
41201ed06fa4fb246f5a7e9e2b62168814eca6ff 19-Apr-2013 Eric Christopher <echristo@gmail.com> Revert "PR14606: debug info imported_module support"

This reverts commit r179836 as it seems to have caused test failures.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179840 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
bcb81360a26cba066fae3acbe25b8ac161af6881 19-Apr-2013 David Blaikie <dblaikie@gmail.com> PR14606: debug info imported_module support

Adding another CU-wide list, in this case of imported_modules (since they
should be relatively rare, it seemed better to add a list where each element
had a "context" value, rather than add a (usually empty) list to every scope).
This takes care of DW_TAG_imported_module, but to fully address PR14606 we'll
need to expand this to cover DW_TAG_imported_declaration too.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179836 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
a88a016f2d99488f2eff0eb6be256f2f43602afa 18-Apr-2013 Bill Wendling <isanbard@gmail.com> Make the TargetIndependent flag have the right boolean value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179798 91177308-0d34-0410-b5e6-96231b3b80d8
smWriter.cpp
ttributes.cpp
8a6a7bb6a601061031cddd77129532a3b467300b 18-Apr-2013 Bill Wendling <isanbard@gmail.com> Cleanup patch:

Semantics of parameters named Index and Idx were inconsistent between
"include/llvm/IR/Attributes.h", "lib/IR/AttributeImpl.h" and
"lib/IR/Attributes.cpp": sometimes these were fixed 1-based indexes of IR
parameters (or AttributeSet::ReturnIndex for IR return values or
AttributeSet::FunctionIndex for IR functions), other times they were the
internal slot for storage in the underlying AttributeSetImpl. I renamed usage of
the former to "Index" and usage of the latter to "Slot" ("Slot" was already
being used consistently for the latter in a subset of cases)

Patch by Stephen Lin!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179791 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
bb1b63c48397a3bac5d00f2ac9d33cc14efd714c 18-Apr-2013 Bill Wendling <isanbard@gmail.com> This patch addresses two cleanup issues:

1. Verify::VerifyParameterAttrs in "lib/IR/Verifier.cpp" and
AttrBuilder::removeFunctionOnlyAttrs in "lib/IR/Attributes.cpp" (only called
by Verify::VerifyFunctionAttrs) separately maintained a list of function-only
attribute types. I've consolidated the logic into a new function used for
both cases in "lib/IR/Verifier.cpp", so this logic is in one place (other
than the AsmParser front-end)

2. Various functions in "lib/IR/Verifier.cpp" passed AttributeSet around by
reference needlessly, as it's just a handle to an immutable pimpl body.

Patch by Stephen Lin!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179790 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
erifier.cpp
4bfeee1302eaeb6cf8f4248e3bb4fdf31a11dce1 18-Apr-2013 Tom Stellard <thomas.stellard@amd.com> C API: Fix coding style

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179785 91177308-0d34-0410-b5e6-96231b3b80d8
ore.cpp
b1ac6e617291e2a628bc460933bde97c73466cb0 18-Apr-2013 Bill Wendling <isanbard@gmail.com> Add an option `-enable-old-style-attr-syntax' to print out function attributes in the "old" style.

It's sometimes beneficial to emit a testcase with the old style attribute
syntax. Allow someone to do this.
<rdar://problem/13563209>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179735 91177308-0d34-0410-b5e6-96231b3b80d8
smWriter.cpp
ttributeImpl.h
ttributes.cpp
403569373f1e63cc96ea8274b18088bf7ff17bd6 17-Apr-2013 Bill Wendling <isanbard@gmail.com> Appease a gcc warning about an overflow in a constant conversion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179703 91177308-0d34-0410-b5e6-96231b3b80d8
ore.cpp
a73dd3e575761fa4559edfd0d3550b3820c1c68d 17-Apr-2013 Benjamin Kramer <benny.kra@googlemail.com> Don't store AttributeSet::FunctionIndex as an int.

GCC complains: Core.cpp:1449:27: warning: overflow in implicit constant conversion [-Woverflow]
I'm not sure if that's really a problem here, but using the enum type is better
style anyways.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179696 91177308-0d34-0410-b5e6-96231b3b80d8
ore.cpp
2ca02c655d158b2c4aaf004c597073adf67b8967 17-Apr-2013 David Blaikie <dblaikie@gmail.com> PR15149/r174304 improvement - print hex for unknown dwarf language codes & add a test case

CR feedback from Rafael Espindola and Paul Robinson.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179664 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
edc93b356da17d404467d47456bb27b99c775e39 17-Apr-2013 Tom Stellard <thomas.stellard@amd.com> C API: Add LLVMGetBufferSize()

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179647 91177308-0d34-0410-b5e6-96231b3b80d8
ore.cpp
4074343b2d9bec7a70c500b2f62b3cd63b44f8c9 17-Apr-2013 Tom Stellard <thomas.stellard@amd.com> C API: Add LLVMGetBufferStart()

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179646 91177308-0d34-0410-b5e6-96231b3b80d8
ore.cpp
68ee1520ce777871353e33fcc63725439e611f4e 17-Apr-2013 Tom Stellard <thomas.stellard@amd.com> C API: Add LLVMAddTargetDependentFunctionAttr()

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179645 91177308-0d34-0410-b5e6-96231b3b80d8
ore.cpp
634054947c87502e29c0610eb9b378515b768814 16-Apr-2013 Bill Wendling <isanbard@gmail.com> Print out the target-independent attributes in a comment before the function definition.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179622 91177308-0d34-0410-b5e6-96231b3b80d8
smWriter.cpp
6b51f75cc58b5a431cfb9e808f27f1fc4432913e 16-Apr-2013 Eli Bendersky <eliben@google.com> Cleanup naming: DataLayout s/TD/DL/



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179601 91177308-0d34-0410-b5e6-96231b3b80d8
ataLayout.cpp
6334e1351f8f7bb58b3399d7c001eed0a32e1c64 16-Apr-2013 Hans Wennborg <hans@hanshq.net> Add four new functions and one new enum to the C API:

LLVMGetThreadLocalMode - exposes GlobalVariable::getThreadLocalMode
LLVMSetThreadLocalMode - exposes GlobalVariable::setThreadLocalMode
LLVMIsExternallyInitialized - exposes GlobalVariable::isExternallyInitialized
LLVMSetExternallyInitialized - exposes GlobalVariable::setExternallyInitialized
LLVMThreadLocalMode - maps to GlobalVariable::ThreadLocalMode

Patch by Moritz Maxeiner!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179588 91177308-0d34-0410-b5e6-96231b3b80d8
ore.cpp
8848680ce0ab416cb646d0a03aa6f4f6f25e7623 13-Apr-2013 Benjamin Kramer <benny.kra@googlemail.com> Fix a scalability issue with complex ConstantExprs.

This is basically the same fix in three different places. We use a set to avoid
walking the whole tree of a big ConstantExprs multiple times.

For example: (select cmp, (add big_expr 1), (add big_expr 2))
We don't want to visit big_expr twice here, it may consist of thousands of
nodes.

The testcase exercises this by creating an insanely large ConstantExprs out of
a loop. It's questionable if the optimizer should ever create those, but this
can be triggered with real C code. Fixes PR15714.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179458 91177308-0d34-0410-b5e6-96231b3b80d8
onstants.cpp
71c1b228552ece06003d744b815f669dbfbb0772 12-Apr-2013 Benjamin Kramer <benny.kra@googlemail.com> Fix a disconcerting bug in Value::isUsedInBasicBlock, which gave wrong answers for blocks larger than 3 instrs.

Also add a unit test. PR15727.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179370 91177308-0d34-0410-b5e6-96231b3b80d8
alue.cpp
1629965964b0e5c786c16b5af15f1d53059183ed 03-Apr-2013 Eli Bendersky <eliben@google.com> Measure time that IR parsing took as part of the -time-passes measurement.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178662 91177308-0d34-0410-b5e6-96231b3b80d8
assManager.cpp
c656fda3aeba9fd8b09d98ed72e75b6c25a1ad49 03-Apr-2013 Eric Christopher <echristo@gmail.com> Support and test template arguments for unions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178586 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
cf0623bba4abb8612a61229e672ac8ea8ed20c4e 03-Apr-2013 Eric Christopher <echristo@gmail.com> Reformat arguments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178585 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
72dfb052ab74a9e642256212a50c9b805ce5c943 28-Mar-2013 David Blaikie <dblaikie@gmail.com> Revert "Adding DIImportedModules to DIScopes."

This reverts commit 342d92c7a0adeabc9ab00f3f0d88d739fe7da4c7.

Turns out we're going with a different schema design to represent
DW_TAG_imported_modules so we won't need this extra field.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178215 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
354504320b4984eebf918bec02dc4c248e0b309b 27-Mar-2013 David Blaikie <dblaikie@gmail.com> Fix comment

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178155 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
2b393fb134c621a7f0824eaea35ad94eae7da062 27-Mar-2013 Benjamin Kramer <benny.kra@googlemail.com> Silence warning about mixing || in &&, fix up 80-cols.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178144 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
342d92c7a0adeabc9ab00f3f0d88d739fe7da4c7 27-Mar-2013 David Blaikie <dblaikie@gmail.com> Adding DIImportedModules to DIScopes.

This is just the basic groundwork for supporting DW_TAG_imported_module but I
wanted to commit this before pushing support further into Clang or LLVM so that
this rather churny change is isolated from the rest of the work. The major
churn here is obviously adding another field (within the common DIScope prefix)
to all DIScopes (files, classes, namespaces, lexical scopes, etc). This should
be the last big churny change needed for DW_TAG_imported_module/using directive
support/PR14606.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178099 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
ca442a4a1aabf6199e5aee09ec604e79916d9b92 27-Mar-2013 David Blaikie <dblaikie@gmail.com> Make DIBuilder::createClassType more type safe by returning DICompositeType rather than DIType

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178091 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
f34ea642e6402538f217db67a734a8530a36eed0 27-Mar-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: more support for mutating DICompositeType to reduce magic number usage in Clang

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178090 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
d072a166d6c77ebcfb4fde796e0784a56020b9a4 26-Mar-2013 David Blaikie <dblaikie@gmail.com> Debug Info: Provide a means to update the members of a composite type

This will be used to factor out some uses of magic number operand offsets
inside Clang where these fields were updated in an effort to resolve forward
declarations/circular references.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178078 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
8faed2745c849fb35f6edf411263dfa564ef3643 22-Mar-2013 David Blaikie <dblaikie@gmail.com> Swap the DIFile in DILexicalBlockFile out for the raw name/directory pair

This is the last change in transitioning all DIScopes to have a common prefix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177756 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
7b246860bdf4c6b3ea4e09f6437537941cc0d1d4 22-Mar-2013 David Blaikie <dblaikie@gmail.com> reorder the fields in DILexicalBlockFile to match the common prefix for DIScopes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177754 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
1ca6468c0518b2c2dcd69c68b2099ae93f57f8f9 22-Mar-2013 Bill Wendling <isanbard@gmail.com> Revert r177675. This is language-specific and shouldn't be in the API.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177748 91177308-0d34-0410-b5e6-96231b3b80d8
nstructions.cpp
4b52a88e90b341ff2a3d1dbad6eb5ea731228156 22-Mar-2013 David Blaikie <dblaikie@gmail.com> Refactor out the DIFile parameter to DILexicalBlock to refer to the raw file/directory pair

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177742 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
2be921adc41fb079ce25d36bdd6402ca70d56451 22-Mar-2013 Arnaud A. de Grandmaison <arnaud.adegm@gmail.com> InstCombine: Improve the result bitvect type when folding (cmp pred (load (gep GV, i)) C) to a bit test.

The original code used i32, and i64 if legal. This introduced unneeded
casts when they aren't legal, or when the index variable i has another
type. In order of preference: try to use i's type; use the smallest
fitting legal type (using an added DataLayout method); default to i32.
A testcase checks that this works when the index gep operand is i16.

Patch by : Ahmed Bougacha <ahmed.bougacha@gmail.com>
Reviewed by : Duncan

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177712 91177308-0d34-0410-b5e6-96231b3b80d8
ataLayout.cpp
c204410d6bc435e7cb8ea768759a54135e8e92b5 22-Mar-2013 David Blaikie <dblaikie@gmail.com> Reorder the DIFile field in DILexicalBlock to become a prefix common with other DIScopes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177703 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
bb4e619cd9ff34708e3baaf0aac70275a917e0ba 22-Mar-2013 David Blaikie <dblaikie@gmail.com> Refactor the filename/directory information in DISubprogram to refer directly to the pair rather than the DIFile.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177677 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
8233050895f781befc1d4165435d0fff605b6b70 22-Mar-2013 Bill Wendling <isanbard@gmail.com> Add a query to tell if a landing pad has a catch-all.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177675 91177308-0d34-0410-b5e6-96231b3b80d8
nstructions.cpp
ced228dec30f088367d622720d6ccf7a22cd11e4 21-Mar-2013 David Blaikie <dblaikie@gmail.com> Move the DIFile in DISubprogram to the beginning to be a common prefix along with other DIScopes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177674 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebb5183a2f16abc7c88241bb42412465f52c2a61 21-Mar-2013 David Blaikie <dblaikie@gmail.com> Remove unused field in DISubprogram

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177661 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
c57f5dd8bd399667d2b93d3ca05f47feae17629c 21-Mar-2013 Chandler Carruth <chandlerc@gmail.com> Hoist the definition of getTypeSizeInBits to be inlinable and in the
header.

This method is called in the hot path for *many* passes, SROA is what
caught my interest. A common pattern is that which branch of the switch
should be taken is known in the callsite and so it is a very good
candidate for inlining and simplification. Moving it into the header
allows the optimizer to fold a lot of boring, repeatitive code in
callers of this routine.

I'm seeing pretty significant speedups in parts of SROA and I suspect
other passes will see similar speedups if they end up working with type
sizes frequently. I've not seen any significant growth of the binaries
as a consequence, but let me know if you see anything suspicious here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177632 91177308-0d34-0410-b5e6-96231b3b80d8
ataLayout.cpp
00c5c5d46731834caa0ca3280e0dcc43202dd3c8 21-Mar-2013 David Blaikie <dblaikie@gmail.com> Debug info: refactor the first field of DICompileUnit to be a raw file/directory pair

This removes the DICompileUnit special case from DIScope.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177610 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
2adf8ccbf0611df6393c30737d87faaf38cdcd0c 21-Mar-2013 Jakub Staszak <kubastaszak@gmail.com> Use pre-inc, pre-dec when possible.
They are generally faster (at least not slower) than post-inc, post-dec.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177608 91177308-0d34-0410-b5e6-96231b3b80d8
nstructions.cpp
162c800384353b639aa5bc94242e6307dcfae2d3 20-Mar-2013 David Blaikie <dblaikie@gmail.com> Debug Info: Swap the 2nd and 3rd parameters to DICompileUnit to match the common DIScope prefix

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177595 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
404ecce8903f83271c82e368c834a9697799c296 20-Mar-2013 David Blaikie <dblaikie@gmail.com> Remove unused field in DICompileUnit

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177590 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
1ac186e009af8496df3ecd2c5ad4918d5c53a0a3 20-Mar-2013 Chris Lattner <sabre@nondot.org> minor code style cleanup.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177576 91177308-0d34-0410-b5e6-96231b3b80d8
unction.cpp
6115ed0e4347f17504f72e4d37545b4230b2cb50 20-Mar-2013 David Blaikie <dblaikie@gmail.com> Refactor file/directory path in namespace debug info to refer directly to the pair rather than the DIFile

(paired to a Clang test - excuse the buildbot skew/fallout)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177566 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
3fac43d8b4111feca59d77941ac2ebd1f858dd33 20-Mar-2013 David Blaikie <dblaikie@gmail.com> DIBuilder: allow linkage name to be specified for global variables

Patch by Kai Nacke (kai@redstar.de)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177547 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
4cf132fccd8338f9aab4bd34a2f0108a13f46d6c 20-Mar-2013 David Blaikie <dblaikie@gmail.com> Reorder the DIFile parameter in DINameSpace

Moving the DIFile parameter to immediately proceed the tag so that it will be a
common prefix with other DIScopes (once the DIFile is replaced with the raw
file/directory pair).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177492 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
1cd30fd994aa8825c10d073f0f1ae9c6ba358ae4 20-Mar-2013 David Blaikie <dblaikie@gmail.com> Provide more details for DINameSpace debug info in the IR comment annotations

Sorry for the version skew - I should've committed this before the
corresponding Clang test case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177486 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
4776bce28cb7d669329222c3d9cf6a97d6881c96 20-Mar-2013 David Blaikie <dblaikie@gmail.com> Refactor the DIFile (2nd) parameter to DITypes to be an MDNode reference to a raw directory/file pair

This makes DIType's first non-tag parameter the same as DIFile's, allowing them
to both share the common implementation of getFilename/getDirectory in DIScope.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177467 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
a13f3cdb01c4900528018eebfe1b6c98dc607f99 20-Mar-2013 David Blaikie <dblaikie@gmail.com> Move the DIFile operand to DITypes from the 4th operand to the 2nd.

This is another step along the way to making all DIScopes have a common prefix
which can be added to in a general manner to support using directives
(DW_TAG_imported_module).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177462 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
974cdfb17a08abae3ba5850bc1a1c801f41319c1 19-Mar-2013 David Tweed <david.tweed@arm.com> The testing to ensure a vector of zeros of type floating point isn't misclassified as negative zero can be simplified, as pointed out by Duncan Sands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177386 91177308-0d34-0410-b5e6-96231b3b80d8
onstants.cpp
2d4629c5d7dcc6582fa7b85a517744f1a3654eba 19-Mar-2013 Stephen Hines <srhines@google.com> Merge branch 'upstream' into merge_2013_03_18
ec7eb55cc4c35318ff0ec4e04c0d42e5a65e1811 18-Mar-2013 David Tweed <david.tweed@arm.com> The optimization a + (-0.0f) -> a was being misapplied to a + (+0.0f) in the vector case (because
we weren't differntiating floating-point zeroinitializers from other zero-initializers)
which was causing problems for code relying upon a + (+0.0f) to, eg, flush denormals to
0. Make the scalar and vector cases have the same behaviour.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177279 91177308-0d34-0410-b5e6-96231b3b80d8
onstants.cpp
4d0cdca6f6e73c38115cfd1e9770cb78006077d6 17-Mar-2013 David Blaikie <dblaikie@gmail.com> Fix the build broken in r177239

Seems some accidental C++11 crept in there. Reported by the C++98 buildbots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177241 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
b4cf0ab22b5a3ebb720f0b7287fdccfb465b6b7c 17-Mar-2013 David Blaikie <dblaikie@gmail.com> Split out filename & directory from DIFile to start generalizing over DIScopes

This is the first step to making all DIScopes have a common metadata prefix (so
that things (using directives, for example) that can appear in any scope can be
added to that common prefix). DIFile is itself a DIScope so the common prefix
of all DIScopes cannot be a DIFile - instead it's the raw filename/directory
name pair.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177239 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
e0805a992ddd2823604969c8aac61a2f339f3c01 13-Mar-2013 David Blaikie <dblaikie@gmail.com> Remove the unused 4th operand for DIFile debug info metadata

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176983 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
9106f73246168fb30d26fb14085c0b3d81fcd350 13-Mar-2013 Reed Kotler <rkotler@mips.com> Add some additonal attribute helper functions. Test will be on follow
up putback to clang for mips16.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176968 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
de3077ae6b5ad8e6f417a8f6aa0ca1ae980f6272 13-Mar-2013 David Blaikie <dblaikie@gmail.com> Refactor filename/directory in DICompileUnit into a DIFile

This is the next step towards making the metadata for DIScopes have a common
prefix rather than having to delegate based on their tag type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176913 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
46561ce249984ddea405ce837b53367a59fd9f3b 12-Mar-2013 David Blaikie <dblaikie@gmail.com> Remove unused "isMain" field from DICompileUnit

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176910 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
14891447fff5b9a5980c1728fbe15140b6350ae3 12-Mar-2013 David Blaikie <dblaikie@gmail.com> Update debug info test cases with empty SplitDebugFilename field.

This could be 'null' or the empty string, DIDescriptor::getStringField
coalesces the two cases anyway so it's just a matter of legible/efficient
representation.

The change in behavior of the DICompileUnit::get* functions could be
subsumed by the full verification check - but ideally that should just be an
assertion if we could front-load the actual debug info metadata failure paths.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176907 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
8f8af529fc6239985f73a4b3cf3a0b25692824ed 12-Mar-2013 Pete Cooper <peter_cooper@apple.com> Add a doFinalization method to the DataLayout pass.

This pass is meant to be immutable, however it holds mutable state to cache StructLayouts.
This method will allow the pass manager to clear the mutable state between runs.

Note that unfortunately it is still necessary to have the destructor, even though it does the
same thing as doFinalization. This is because most TargetMachines embed a DataLayout on which
doFinalization isn't run as its never added to the pass manager.

I also didn't think it was necessary to complication things with a deInit method for which
doFinalization and ~DataLayout both call as there's only one field of mutable state. If we had
more fields to finalize i'd have added this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176877 91177308-0d34-0410-b5e6-96231b3b80d8
ataLayout.cpp
c0ec8a4f4db3c579dfc8c219dc39014f34260b42 12-Mar-2013 David Blaikie <dblaikie@gmail.com> Remove support for versioned debug info.

Versioned debug info support has been a burden to maintain & also compromised
current debug info verification by causing test cases testing old debug info to
remain rather than being updated to the latest. It also makes it hard to add or
change the metadata schema by requiring various backwards-compatibility in the
DI* hierarchy.

So it's being removed in preparation for new changes to the schema to tidy up
old/unnecessary fields and add new fields needed for new debug info (well, new
to LLVM at least).

The more surprising part of this is the changes to DI*::Verify - this became
necessary due to the changes to AsmWriter. AsmWriter was relying on the version
test to decide which bits of metadata were actually debug info when printing
the comment annotations. Without the version information the tag numbers were
too common & it would print debug info on random metadata that happened to
start with an integer that matched a tag number. Instead this change makes the
Verify functions more precise (just adding "number of operands" checks - not
type checking those operands yet) & relies on that to decide which metadata is
debug info metadata.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176838 91177308-0d34-0410-b5e6-96231b3b80d8
smWriter.cpp
ebugInfo.cpp
6643868498043d373384e0befaff3b5a8a8574f7 12-Mar-2013 David Blaikie <dblaikie@gmail.com> Add asserts to DIBuilder & fix DINameSpace::Verify to allow unnamed namespaces.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176837 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
eda774a6c682bc39610130cf8a183e656230c9ef 08-Mar-2013 David Blaikie <dblaikie@gmail.com> Assert to bounds check MDNode::getOperand.

The getOperandPtr utility already bounds checks, but allows one-off-the-end.
This assert should catch the cases that could previously have been dereferencing
these one-off-the-end pointer. Happily, no cases of this came up with this
change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176721 91177308-0d34-0410-b5e6-96231b3b80d8
etadata.cpp
4e4cc7dae8d2b2f8a07c38f4d61e0b94b13d008b 07-Mar-2013 Benjamin Kramer <benny.kra@googlemail.com> Replace temporary vectors with arrays.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176651 91177308-0d34-0410-b5e6-96231b3b80d8
onstants.cpp
55d8f6d49023de5182efbb29d0b3bd0035909d62 07-Mar-2013 Nadav Rotem <nrotem@apple.com> ArrayRef has a OneElt constructor. Beautify the code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176604 91177308-0d34-0410-b5e6-96231b3b80d8
onstants.cpp
82e905aae4fe815fc57f50663467cb03e4c9e9e1 07-Mar-2013 Nadav Rotem <nrotem@apple.com> Switch from std::vector to ArrayRef. Speedup FoldBitCast by 5x.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176602 91177308-0d34-0410-b5e6-96231b3b80d8
onstants.cpp
985dac65791b9f6f631bdd51c18fe66592a67469 06-Mar-2013 Shuxin Yang <shuxin.llvm@gmail.com> Memory Dependence Analysis (not mem-dep test) take advantage of "invariant.load" metadata.

The "invariant.load" metadata indicates the memory unit being accessed is immutable.
A load annotated with this metadata can be moved across any store.

As I am not sure if it is legal to move such loads across barrier/fence, this
change dose not allow such transformation.

rdar://11311484

Thank Arnold for code review.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176562 91177308-0d34-0410-b5e6-96231b3b80d8
LVMContext.cpp
5adb136be579e8fff3734461580cb34d1d2983b8 06-Mar-2013 Stephen Hines <srhines@google.com> Merge commit 'b3201c5cf1e183d840f7c99ff779d57f1549d8e5' into merge_20130226

Conflicts:
include/llvm/Support/ELF.h
lib/Support/DeltaAlgorithm.cpp

Change-Id: I24a4fbce62eb39d924efee3c687b55e1e17b30cd
328d1b65002e68ae65ffef05eed19122cbf721f5 02-Mar-2013 Peter Collingbourne <peter@pcc.me.uk> Modify {Call,Invoke}Inst::addAttribute to take an AttrKind.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176397 91177308-0d34-0410-b5e6-96231b3b80d8
nstructions.cpp
c2171eb3ffb0aaa845de15437cadf2a298f1ea61 01-Mar-2013 Jean-Luc Duprat <jduprat@apple.com> Removed extraneous #include "LLVMContextImpl.h" from lib/IR/Module.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176382 91177308-0d34-0410-b5e6-96231b3b80d8
odule.cpp
4c8e74f0b75cb10820c45c86399fbd02e4a8832a 01-Mar-2013 Michael Ilseman <milseman@apple.com> Cache the result of Function::getIntrinsicID() in a DenseMap attached to the LLVMContext.

This reduces the time actually spent doing string to ID conversion and shows a 10% improvement in compile time for a particularly bad case that involves ARM Neon intrinsics (these have many overloads).

Patch by Jean-Luc Duprat!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176365 91177308-0d34-0410-b5e6-96231b3b80d8
unction.cpp
LVMContextImpl.h
odule.cpp
alue.cpp
40c81fe501ac99ff3f3ec004ce9e5a526d07e441 28-Feb-2013 Bill Wendling <isanbard@gmail.com> Don't add the 'Value' string if there isn't one.

This was causing the folding set to fail to fold attributes, because it was
being calculated in one spot without an empty values string but here with an
empty values string.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176301 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
1abc00b6d18b1a81548e52783fbccd1c59ebf968 28-Feb-2013 Bill Wendling <isanbard@gmail.com> Don't add an attribute that already exists and don't remove an attribute that doesn't exist.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176289 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
8df7c39976890d94198d835e032848a374fec158 27-Feb-2013 Meador Inge <meadori@codesourcery.com> IR: Don't constant fold GEP bitcasts between different address spaces

PR15262 reported a bug where the following instruction:

i8 getelementptr inbounds i8* bitcast ([4 x i8] addrspace(12)* @buf to i8*),
i32 2

was getting folded into:

addrspace(12)* getelementptr inbounds ([4 x i8] addrspace(12)* @buf, i32 0,
i32 2)

This caused instcombine to crash because the original instruction and
the folded instruction have different types. The issue was fixed by
disallowing bitcasts between different address spaces to be folded away.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176156 91177308-0d34-0410-b5e6-96231b3b80d8
onstantFold.cpp
8eec41fc778e99d42172a7f6de76faa43a6d8847 26-Feb-2013 Kostya Serebryany <kcc@google.com> Unify clang/llvm attributes for asan/tsan/msan (LLVM part)

These are two related changes (one in llvm, one in clang).
LLVM:
- rename address_safety => sanitize_address (the enum value is the same, so we preserve binary compatibility with old bitcode)
- rename thread_safety => sanitize_thread
- rename no_uninitialized_checks -> sanitize_memory

CLANG:
- add __attribute__((no_sanitize_address)) as a synonym for __attribute__((no_address_safety_analysis))
- add __attribute__((no_sanitize_thread))
- add __attribute__((no_sanitize_memory))

for S in address thread memory
If -fsanitize=S is present and __attribute__((no_sanitize_S)) is not
set llvm attribute sanitize_S


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176075 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
erifier.cpp
ce522ee0a27062390f13e7ccb53fcff4fc36c473 26-Feb-2013 Michael Ilseman <milseman@apple.com> Use a DenseMap instead of a std::map for AnalysisID -> Pass* maps. This reduces the pass-manager overhead from FPPassManager::runOnFunction() by about 10%.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176072 91177308-0d34-0410-b5e6-96231b3b80d8
assManager.cpp
6172f0298391e00cb669cc246e70ae2531f2cdec 25-Feb-2013 David Blaikie <dblaikie@gmail.com> DIBuilder: support structs with vtable pointers in the same way as classes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176004 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
e4b67906d3cc5ea365359f9b034189aaa51ca1e9 23-Feb-2013 Eric Christopher <echristo@gmail.com> Add a field to the compile unit of where we plan on splitting out
the debug info for -gsplit-dwarf so we can encode that location
in the skeleton cu.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175933 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
1683b304e0487700c2f4447e7c72c62fb9f3a24c 23-Feb-2013 Eric Christopher <echristo@gmail.com> Add a TODO and explain when we can get rid of the isMain field.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175932 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
351b7a10e2560a835759748c58da09e53207b39d 22-Feb-2013 Bill Wendling <isanbard@gmail.com> Use references to attribute groups on the call/invoke instructions.

Listing all of the attributes for the callee of a call/invoke instruction is way
too much and makes the IR unreadable. Use references to attributes instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175877 91177308-0d34-0410-b5e6-96231b3b80d8
smWriter.cpp
bd2acfab4a4692ce39541f380997945e9bbb14ae 22-Feb-2013 Bill Wendling <isanbard@gmail.com> Remove warning about default covering no cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175846 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
d18e0b94bfaad5b8a24fcb45b55d7e031cc94202 22-Feb-2013 Bill Wendling <isanbard@gmail.com> Add a bitmask for NoBuiltin. This should *not* be used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175843 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
143d46476cdcf5b88b9ee18ebd799e5820a2db0e 22-Feb-2013 Bill Wendling <isanbard@gmail.com> Implement the NoBuiltin attribute.

The 'nobuiltin' attribute is applied to call sites to indicate that LLVM should
not treat the callee function as a built-in function. I.e., it shouldn't try to
replace that function with different code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175835 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
erifier.cpp
fece442c697eb29f14b4718bdafa3a97d545b476 21-Feb-2013 Bill Wendling <isanbard@gmail.com> Don't assert on empty attributes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175785 91177308-0d34-0410-b5e6-96231b3b80d8
unction.cpp
b7a1dda9c91b3d1821f4235c35a0d62c62d18848 21-Feb-2013 Bill Wendling <isanbard@gmail.com> Add and remove the attribute from the correct slot.

The slot that we're adding/removing the attribute from may not be the same as
the attribute coming in. Make sure that they match up before we try to
add/remove them.
PR15313


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175684 91177308-0d34-0410-b5e6-96231b3b80d8
unction.cpp
7ab6c76ad1cbf36284ca5b6bd5ee33c625fe3e60 20-Feb-2013 Bill Wendling <isanbard@gmail.com> Modify the LLVM assembly output so that it uses references to represent function attributes.

This makes the LLVM assembly look better. E.g.:

define void @foo() #0 { ret void }
attributes #0 = { nounwind noinline ssp }


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175605 91177308-0d34-0410-b5e6-96231b3b80d8
smWriter.cpp
2bb471f2fa3709f5861f20016ff9d24f0098abe4 20-Feb-2013 Bill Wendling <isanbard@gmail.com> Add the function attributes from an inline asm call. These don't have declarations that set the attribute groups, so we must do it on our own.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175577 91177308-0d34-0410-b5e6-96231b3b80d8
smWriter.cpp
03544ec2a43fab162d25cf44627d1d08430bcccd 19-Feb-2013 Nadav Rotem <nrotem@apple.com> Fix a bug in mayHaveSideEffects. Functions that do not return are now considered as instructions with side effects.

rdar://13227456



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175553 91177308-0d34-0410-b5e6-96231b3b80d8
nstruction.cpp
a175396816a9b28835acfe2cd07250881f1fee6c 19-Feb-2013 Nadav Rotem <nrotem@apple.com> Fix a bug that was found by the clang static analyzer. The var "AT" is null so we cant deref it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175550 91177308-0d34-0410-b5e6-96231b3b80d8
onstantFold.cpp
3f213e7b3a6829a154d4e8ceb7d8689b389bd5dc 18-Feb-2013 Benjamin Kramer <benny.kra@googlemail.com> Futureproof AttrBuild if we ever have more than 64 attr enum values.

Currently we're at 34. Bitset should compile into virtually the same code as
uint64_t here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175437 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
d4f92fd0d1f22af553db08416b476241e4372d9a 18-Feb-2013 David Blaikie <dblaikie@gmail.com> DIBuilder: Correct the null/0 type of trailing fields in struct debug info.

Paired with an Clang commit so this may cause temporary build failures.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175426 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
139f7e50688ce120b275ae368f563d03d9c18184 18-Feb-2013 David Blaikie <dblaikie@gmail.com> DIBuilder: Add function and method definitions to the list of all subprograms

Previously we seemed to be assuming that all functions were definitions and all
methods were declarations. This may be consistent with how Clang uses DIBuilder
but doesn't have to be true of all clients (such as DragonEgg).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175423 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
d67c5cab3b770b0709dcb05256aef51b35f3f113 18-Feb-2013 David Blaikie <dblaikie@gmail.com> Narrow the return types of a few DIBuilder utility functions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175421 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
906727dcfeb359acec4caca3ba8c756c4308ff6b 17-Feb-2013 Duncan Sands <baldrick@free.fr> Add multithreading functions and shutdown to the C API. Patch by Moritz
Maxeiner.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175398 91177308-0d34-0410-b5e6-96231b3b80d8
ore.cpp
7c1461252b7ee8b3b5a556993cb7b96d793223b6 16-Feb-2013 Benjamin Kramer <benny.kra@googlemail.com> GCC doesn't like ++ on enums.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175373 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
c835b8c30127d15599de2d614434d39a6cc3ae17 16-Feb-2013 Benjamin Kramer <benny.kra@googlemail.com> Turn the enum attributes DenseSet in AttrBuilder into a set of bits.

Avoids malloc and is a lot denser. We lose iteration over target independent
attributes, but that's a strange interface anyways and didn't have any users
outside of AttrBuilder.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175370 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
94328f4ff3d450104f15c9dae437cea80417233d 15-Feb-2013 Bill Wendling <isanbard@gmail.com> Simplify the 'operator<' for the attribute object.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175252 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
a7e4409bb238ec3c5169c25afbb0308ae76d1111 15-Feb-2013 Anna Zaks <ganna@apple.com> Revert "Simplify the attributes '<' comparison function."

This reverts commit 82c101153fe7b35bce48781fab038e1b8f31a7bd.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175250 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
0ec707a4e586f41f8a2cf91557fbbbe142377dd0 15-Feb-2013 Bill Wendling <isanbard@gmail.com> Simplify the attributes '<' comparison function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175235 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
aefd14be3951d5b84cda5561655fe63549819d25 14-Feb-2013 Bill Wendling <isanbard@gmail.com> s/bool/LLVMBool/

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175204 91177308-0d34-0410-b5e6-96231b3b80d8
ore.cpp
31cfc707058ad3f470924cdb3c460c8f50ee76c3 14-Feb-2013 Bill Wendling <isanbard@gmail.com> Add two new functions to the C API:

LLVMCreateMemoryBufferWithMemoryRange - exposes MemoryBuffer::getMemBuffer
LLVMCreateMemoryBufferWithMemoryRangeCopy - exposes MemoryBuffer::getMemBufferCopy

Patch by Moritz Maxeiner!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175199 91177308-0d34-0410-b5e6-96231b3b80d8
ore.cpp
f107e6ca9bbfc82c980c3e8e5c6bf04261b49c90 13-Feb-2013 Bill Wendling <isanbard@gmail.com> Use array_pod_sort.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175048 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
0e9d5d059c4aa959e9ef4dff011dbd38d45a1016 13-Feb-2013 Bill Wendling <isanbard@gmail.com> Add some accessor and query methods for retrieving Attribute objects and such.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175046 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
87d0b9ed1462705dd9bf1cb7f67d0bf03af776c8 12-Feb-2013 Guy Benyei <guy.benyei@intel.com> Add static cast to unsigned char whenever a character classification function is called with a signed char argument, in order to avoid assertions in Windows Debug configuration.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175006 91177308-0d34-0410-b5e6-96231b3b80d8
smWriter.cpp
nlineAsm.cpp
LVMContext.cpp
74fe825ca597f56985ab4387baca35948647ec4b 12-Feb-2013 Bill Wendling <isanbard@gmail.com> Support string attributes in the AttrBuilder.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174948 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
2ce067a9fb5b2d046c92519428cafa71fae81ed4 12-Feb-2013 David Blaikie <dblaikie@gmail.com> DIBuilder: make the return type of createBasicType more specific

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174924 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
b29ce26ea60f7516c853318ffbfc107fde9ad897 11-Feb-2013 Bill Wendling <isanbard@gmail.com> Add support for printing out the attribute groups.

This emits the attribute groups that are used by the functions. (It currently
doesn't print out return type or parameter attributes within attribute groups.)

Note: The functions still retrieve their attributes from the "old" bitcode
format (using the deprecated 'Raw()' method). This means that string attributes
within an attribute group will not show up during a disassembly. This will be
addressed in a future commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174867 91177308-0d34-0410-b5e6-96231b3b80d8
smWriter.cpp
ttributeImpl.h
ttributes.cpp
ab39afa9d9b99c61842c8e3d0eb706bd16efdcf3 11-Feb-2013 Kostya Serebryany <kcc@google.com> [tsan/msan] adding thread_safety and uninitialized_checks attributes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174864 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
erifier.cpp
f64c889cc94417322b0ff8ad1c61939183bf3c38 11-Feb-2013 Bob Wilson <bob.wilson@apple.com> Revert "Rename LLVMContext diagnostic handler types and functions."

This reverts my commit 171047. Now that I've removed my misguided attempt to
support backend warnings, these diagnostics are only about inline assembly.
It would take quite a bit more work to generalize them properly, so I'm
just reverting this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174860 91177308-0d34-0410-b5e6-96231b3b80d8
LVMContext.cpp
LVMContextImpl.cpp
LVMContextImpl.h
f12b379448a9f2131feba15c01714e44bedda120 11-Feb-2013 David Blaikie <dblaikie@gmail.com> Fix unnecessary removal of const through cast machinery

I have some uncommitted changes to the cast code that catch this sort of thing
at compile-time but I still need to do some other cleanup before I can enable
it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174853 91177308-0d34-0410-b5e6-96231b3b80d8
smWriter.cpp
2153691a8ba35cb2bcf9237557b6cae7e9d8e68d 11-Feb-2013 Bill Wendling <isanbard@gmail.com> The 'Raw' method cannot handle 'string' attributes. Don't even try.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174848 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
09ed9101c8c7e93c1d814e75ff906bf904778dbb 10-Feb-2013 Bill Wendling <isanbard@gmail.com> Handle string attributes in the AttrBuilder.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174834 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
87de71cb9f12d874e88d4f314ab245985c1b36bc 10-Feb-2013 Bill Wendling <isanbard@gmail.com> Add 'empty' query methods to the builder and use them in the verifier.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174832 91177308-0d34-0410-b5e6-96231b3b80d8
erifier.cpp
85b3fbecdfe934ac7519a8831c4bd262cba99d12 10-Feb-2013 Bill Wendling <isanbard@gmail.com> Add accessor for the LLVMContext.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174824 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
68b2faf6be3a08064687a67a19efee0a713435de 09-Feb-2013 Sergei Larin <slarin@codeaurora.org> Enable *BasicBlockPass::createPrinterPass()

Enables raw_ostream I/O for BasicBlockPass.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174776 91177308-0d34-0410-b5e6-96231b3b80d8
ore.cpp
ass.cpp
rintModulePass.cpp
d3da6d5dda00761d383a1c339f54da470643c663 08-Feb-2013 Dan Gohman <dan433584@gmail.com> Minor cleanup.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174756 91177308-0d34-0410-b5e6-96231b3b80d8
smWriter.cpp
58446916b71c4ff79962081ea7c4df078c388b0e 08-Feb-2013 Bob Wilson <bob.wilson@apple.com> Revert "Add LLVMContext::emitWarning methods and use them. <rdar://problem/12867368>"

This reverts r171041. This was a nice idea that didn't work out well.
Clang warnings need to be associated with warning groups so that they can
be selectively disabled, promoted to errors, etc. This simplistic patch didn't
allow for that. Enhancing it to provide some way for the backend to specify
a front-end warning type seems like overkill for the few uses of this, at
least for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174748 91177308-0d34-0410-b5e6-96231b3b80d8
LVMContext.cpp
97fe3d95110db54908527e547187b3007185e46c 06-Feb-2013 Craig Topper <craig.topper@gmail.com> Remove extra blank line between closing curly brace and 'else'

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174492 91177308-0d34-0410-b5e6-96231b3b80d8
assManager.cpp
60309e17a3a86756f7a1bbaca409159733586f2d 06-Feb-2013 Craig Topper <craig.topper@gmail.com> Remove unused private field to suppress a build warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174491 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
c342d9d345acdbd95577c7c6e9ce7d3a1bdb57bf 06-Feb-2013 Bill Wendling <isanbard@gmail.com> Add a 'StringRef' version of hasAttribute.

Fix the 'operator==' and 'hasAttributes' queries to take into account
target-dependent attributes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174481 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
85df6b43403d3ebf5d80023a85699c6fb254941a 06-Feb-2013 Bill Wendling <isanbard@gmail.com> Add methods to merge an AttrBuilder into another builder.

This is useful when parsing an object that references multiple attribute groups.

N.B. If both builders have alignments specified, then they should match!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174480 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
64754f499058b5dc748ea6d06a084af0ed539ec4 06-Feb-2013 Bill Wendling <isanbard@gmail.com> Add the target-dependent (string) attributes from the AttrBuilder to the AttributeSet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174467 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
8c74ecfbddabe89e150abff4fdff0a27108874b9 05-Feb-2013 Bill Wendling <isanbard@gmail.com> Convert to storing the attribute's internals as enums, integers, and strings.

The stuff we're handing are all enums (Attribute::AttrKind), integers and
strings. Don't convert them to Constants, which is an unnecessary step here. The
rest of the changes are mostly mechanical.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174456 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
ea59f896a672c2e1ef9f02277bce60257aa60989 05-Feb-2013 Bill Wendling <isanbard@gmail.com> Add target-dependent versions of addAttribute/removeAttribute to AttrBuilder.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174356 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
a2de37c897556fbd1f94a3ed84ad27accd8f8deb 05-Feb-2013 Michael Gottesman <mgottesman@apple.com> Added LLVM Asm/Bitcode Reader/Writer support for new IR keyword externally_initialized.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174340 91177308-0d34-0410-b5e6-96231b3b80d8
smWriter.cpp
f9271ea159b97e2febedcf095c3c4122cb24d077 05-Feb-2013 Bill Wendling <isanbard@gmail.com> Initial cleanups of the param-attribute code in the bitcode reader/writer.

Rename the PARAMATTR_CODE_ENTRY to PARAMATTR_CODE_ENTRY_OLD. It will be replaced
by another encoding. Keep around the current LLVM attribute encoder/decoder
code, but move it to the bitcode directories so that no one's tempted to use
them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174335 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
f839eed5ea2bfd395256d60e15d1e31dbad6ca8b 04-Feb-2013 David Blaikie <dblaikie@gmail.com> [DebugInfo] remove more node indirection (this time from the subprogram's variable lists)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174305 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
a9b1317443990533f56a8420c0fbfb8868dad566 04-Feb-2013 David Blaikie <dblaikie@gmail.com> PR15149: crash when printing debug info metadata containing an invalid language spec

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174304 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
af2f494c2d87a77c46efb85856f235ddd7f3c6ab 03-Feb-2013 Michael Gottesman <mgottesman@apple.com> Added instance variable/initializers/getter/setters for new keyword externally initialized to GlobalVariable. No *TRUE* functionality change.

I am going to add in the actual test cases with the actual functionality
changes in a later patch because I want to include some test cases.

To be clear when I say no *TRUE* functionality change I mean that this
patch (like it says in the title) only contains getters/setters and sets
up a default initial value of the instance variable to false so that
this patch does not affect any other uses of Global Variable.h.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174295 91177308-0d34-0410-b5e6-96231b3b80d8
lobals.cpp
a8eefc7cc7c6e8be06d570fff76dc42b43a23392 02-Feb-2013 David Blaikie <dblaikie@gmail.com> Remove the (apparently) unnecessary debug info metadata indirection.

The main lists of debug info metadata attached to the compile_unit had an extra
layer of metadata nodes they went through for no apparent reason. This patch
removes that (& still passes just as much of the GDB 7.5 test suite). If anyone
can show evidence as to why these extra metadata nodes are there I'm open to
reverting this patch & documenting why they're there.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174266 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
fca0ed28c81a505b0b71605e8b59e4bb6daeda0e 02-Feb-2013 Bill Wendling <isanbard@gmail.com> Remove AttrBuilder::Raw().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174251 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
bdcbccc710a0528b4abce947782fd502bafb848d 02-Feb-2013 Bill Wendling <isanbard@gmail.com> Use the AttributeSet's iterators.

Use the AttributeSet's iterators in AttrBuilder::hasAttributes() when
determining of the intersection of the AttrBuilder and AttributeSet is non-null.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174250 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
5a4041e7282ca1dba93fe1a97c8260c0ef621f5d 01-Feb-2013 Bill Wendling <isanbard@gmail.com> Change the AttributeImpl to hold a single Constant* for the values.

This Constant could be an aggregate to represent multiple values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174228 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
7beee2876795098d2e2f31ecc2ca29fa7640a8eb 01-Feb-2013 Bill Wendling <isanbard@gmail.com> Remove some dead code, improve some asserts, and other assorted changes. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174132 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
f715dbd263149efeb9c684dfdb0637cf84f94399 01-Feb-2013 Bill Wendling <isanbard@gmail.com> Remove one of the odious 'Raw' methods.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174130 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
30d2c76800bc821aff6e224e0bd11d88a793303e 01-Feb-2013 Bill Wendling <isanbard@gmail.com> Use iterators instead of relying upon a bitmask of attributes to remove attributes from an AttrBuilder.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174123 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
16c4b3cf2943ae2327752cf3de39769d14cfcece 01-Feb-2013 Bill Wendling <isanbard@gmail.com> Add iterators to the AttributeSet class so that we can access the Attributes in a nice way.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174120 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
39da078977ae98b6bf1c3c76a472ed24f5f2a2d2 01-Feb-2013 Bill Wendling <isanbard@gmail.com> s/AttrBuilder::addAttributes/AttrBuilder::addAttribute/g because that's more descriptive of what it actually is.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174116 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
169d5270751597aed4095ead00401a3374906147 01-Feb-2013 Bill Wendling <isanbard@gmail.com> Remove the AttrBuilder form of the Attribute::get creators.

The AttrBuilder is for building a collection of attributes. The Attribute object
holds only one attribute. So it's not really useful for the Attribute object to
have a creator which takes an AttrBuilder.

This has two fallouts:

1. The AttrBuilder no longer holds its internal attributes in a bit-mask form.
2. The attributes are now ordered alphabetically (hence why the tests have changed).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174110 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
14292a6be51ab57ff425ff263d4134fe46d082c4 31-Jan-2013 Bill Wendling <isanbard@gmail.com> Add support for emitting a string attribute.

Attributes that are strings are typically target-dependent attributes. They are
of this form in the IR:

"attr"
"attr" = "val"


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174090 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
82aea644c6d2a21464958fe2e3a1cd0f6bfc82db 31-Jan-2013 Bill Wendling <isanbard@gmail.com> Remove the Attribute::hasAttributes() function.

That function doesn't make sense anymore because there's only one attribute per
Attribute object now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174044 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
eddab1550ee10cce3bb26a26e88529cb19451aa3 31-Jan-2013 NAKAMURA Takumi <geek4civic@gmail.com> Revert r174026, "Remove Attribute::hasAttributes() and make Attribute::hasAttribute() private."

It broke many hosts to crash.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174035 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
85238aae1a4b6ac67e16560a9855944191f3db5b 31-Jan-2013 Bill Wendling <isanbard@gmail.com> Remove Attribute::hasAttributes() and make Attribute::hasAttribute() private.

The Attribute::hasAttributes() is kind of meaningless since an Attribute can
have only one attribute. And we would rather people use the 'operator=='
instead of Attribute::hasAttribute().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174026 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
8ed701da9aa388c078cc6aecac2fe355974c90d2 31-Jan-2013 Bill Wendling <isanbard@gmail.com> Make the AttrBuilder creation method of Attribute private so that people won't use it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174023 91177308-0d34-0410-b5e6-96231b3b80d8
erifier.cpp
b96129dd4856a5473c52daceaabdfd2262bd96f2 31-Jan-2013 Bill Wendling <isanbard@gmail.com> Revert for now:

--- Reverse-merging r174010 into '.':
U include/llvm/IR/Attributes.h
U lib/IR/Verifier.cpp
U lib/IR/Attributes.cpp



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174012 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
erifier.cpp
c6077eff8b9963b59de21e5d1dfae7a6ea75da36 31-Jan-2013 Bill Wendling <isanbard@gmail.com> Remove the AttrBuilder version of the Attribute::get function.

The AttrBuilder is there to build up multiple attributes. The Attribute class
represents only one attribute at a time. So remove this unnecessary builder
creator method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174010 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
erifier.cpp
73dee180c836270644dfa7d90f9c5ba877567999 31-Jan-2013 Bill Wendling <isanbard@gmail.com> Make sure that the Attribute object represents one attribute only.

Several places were still treating the Attribute object as respresenting
multiple attributes. Those places now use the AttributeSet to represent
multiple attributes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174003 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
d363ae52995059906d99f7588f47bf891e7db485 31-Jan-2013 Dan Gohman <dan433584@gmail.com> Fix ConstantFold's folding of icmp instructions to recognize that,
for example, a one-past-the-end pointer from one global variable may
be equal to the base pointer of another global variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173995 91177308-0d34-0410-b5e6-96231b3b80d8
onstantFold.cpp
ac72eb264c3a8a15cda81aaead6adc8419058666 31-Jan-2013 Bill Wendling <isanbard@gmail.com> Remove addRetAttributes and addFnAttributes, which aren't useful abstractions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173992 91177308-0d34-0410-b5e6-96231b3b80d8
ore.cpp
e74365462a39529ae48ef4d34ec76b4543b8ea29 31-Jan-2013 Bill Wendling <isanbard@gmail.com> Convert typeIncompatible to return an AttributeSet.

There are still places which treat the Attribute object as a collection of
attributes. I'm systematically removing them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173990 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
erifier.cpp
383da6ba555a3c2be360d9bdc75a74f315f2354e 30-Jan-2013 Bill Wendling <isanbard@gmail.com> Remove redundant code.

It was creating a new AttrBuilder when we could just fill in the AttrBuilder
we're building.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173975 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
f578c89dc6ca3e79667c2aa9d0ac4fe409da7773 30-Jan-2013 Eli Bendersky <eliben@google.com> Clean up whitespace and indentation a bit


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173960 91177308-0d34-0410-b5e6-96231b3b80d8
ataLayout.cpp
254aed5e22a36effb1e1b9e8d03f8cd5e9bb7586 30-Jan-2013 Bill Wendling <isanbard@gmail.com> Attempt to fix dragonegg. Use the number of slots to determine if the AttributeSet has attributes or not.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173902 91177308-0d34-0410-b5e6-96231b3b80d8
erifier.cpp
6dc3781d44e56f0addf28b06232a50f3f9e6b1af 29-Jan-2013 Bill Wendling <isanbard@gmail.com> Add a couple of accessor methods to get the kind and values of an attribute.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173828 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
9f175f88190fae22df9c6e68af618d0493477ff9 29-Jan-2013 Bill Wendling <isanbard@gmail.com> s/Data/Kind/g. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173827 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
3ba51cefb75364a17e3a23c54c216035c33e67a6 29-Jan-2013 NAKAMURA Takumi <geek4civic@gmail.com> AttributeSet::get(): Fix a valgrind error. It doesn't affect actual behavior, though.

Don't touch I->first on the end iterator, I == E!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173804 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
606c8e36dfdd28fc589356addd3e2cbb89a32e4d 29-Jan-2013 Bill Wendling <isanbard@gmail.com> Convert getAttributes() to return an AttributeSetNode.

The AttributeSetNode contains all of the attributes. This removes one (hopefully
last) use of the Attribute class as a container of multiple attributes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173761 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
8232ece5c1e57efe54342fb35610497d50bf894f 29-Jan-2013 Bill Wendling <isanbard@gmail.com> Use an AttrBuilder to generate the correct AttributeSet.

We no longer accept an encoded integer as representing all of the
attributes. Convert this via the AttrBuilder class into an AttributeSet with the
correct representation (an AttributeSetImpl that holds a list of Attribute
objects).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173750 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
8fbc0c296ef067150f3228e389ae04cf7b3b1992 29-Jan-2013 Bill Wendling <isanbard@gmail.com> Convert the AttrBuilder into a list of Attributes instead of one Attribute object that holds all of its attributes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173742 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
817abdd8b055059e5930a15704b9f52da4236456 29-Jan-2013 Bill Wendling <isanbard@gmail.com> S'more small non-functional changes in comments and #includes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173738 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
c22f4aa886443507f8406d30d118fdeeac6a8c6c 29-Jan-2013 Bill Wendling <isanbard@gmail.com> Reorder some functions and add comments. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173733 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
6bdbf061c353295669b6bfc271b948158602d1bc 28-Jan-2013 Bill Wendling <isanbard@gmail.com> Try to appease some broken compilers by using 'unsigned' instead of 'uint64_t'.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173725 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
87e10dfefa94f77937c37b0eb51095540d675cbc 28-Jan-2013 Bill Wendling <isanbard@gmail.com> Remove the AttributeWithIndex class.

The AttributeWithIndex class exposed the interior structure of the AttributeSet
class. That was gross. Remove it and all of the code that relied upon it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173722 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
19d815c04fde6b7b53c2b542813157edfa213842 28-Jan-2013 Bill Wendling <isanbard@gmail.com> Mid-air collision. reapply r173656.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173661 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
98b92f3bf5770e02498549e24b3db75d5862c173 28-Jan-2013 Bill Wendling <isanbard@gmail.com> Rewrite the removeAttr() method.

This now uses the AttributeSet object instead of the Attribute /
AttributeWithIndex objects. It's fairly simple now. It goes through all of the
subsets before the one we're modifying, adds them to the new set. It then adds
the modified subset (with the requested attributes removed). And then adds the
rest of the subsets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173660 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
49f6060f16aec4024d644a6ec4ddd3de9b3e8821 28-Jan-2013 Bill Wendling <isanbard@gmail.com> Rewrite the addAttr() method.

This now uses the AttributeSet object instead of the Attribute /
AttributeWithIndex objects. It's fairly simple now. It goes through all of the
subsets before the one we're modifying, adds them to the new set. It then adds
the modified subset. And then adds the rest of the subsets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173659 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
53ff78b2019e96e142986d19dd99f8dd563dc494 28-Jan-2013 NAKAMURA Takumi <geek4civic@gmail.com> Revert r173646, "Use proper type for the index."

Unfortunately, msvc miscompiles it. Investigating.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173656 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
a9b9f0ad802ef6973534a9a247716e4a8e079635 28-Jan-2013 Bill Wendling <isanbard@gmail.com> Use proper type for the index.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173646 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
e2501f56a620be88665d04dc481f40ef3275eea0 28-Jan-2013 Bill Wendling <isanbard@gmail.com> Remove another use of AttributeWithIndex, using the AttributeSetImpl accessors instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173644 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
70cdaaae925862b9d52d41729e93cf6417c3370b 28-Jan-2013 Bill Wendling <isanbard@gmail.com> Remove another use of AttributeWithIndex, using the AttributeSetImpl accessors instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173642 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
73bc452bcd63620daefb0a3bc613746af7418076 28-Jan-2013 Bill Wendling <isanbard@gmail.com> Remove a use of AttributeWithIndex.

We want to remove AttributeWithIndex because it provides a non-encapsulated view
of the AttributeSetImpl object. Instead, use accessor methods and iterators.

Eventually, this code can be simplified because the Attribute object will hold
only one attribute instead of multiple attributes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173641 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
49716e5d84142d7bd3eeff7304f9bc708bff99d0 28-Jan-2013 Bill Wendling <isanbard@gmail.com> Improve the debug output a bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173640 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
3e3e789aede6ec38d39c95d88ad4e8634d5a259b 28-Jan-2013 Bill Wendling <isanbard@gmail.com> Use proper return type for attribute index.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173639 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
5f33912f91ec2673545a5e000cc7bf7a0ecccdbd 28-Jan-2013 Bill Wendling <isanbard@gmail.com> Use proper return type for attribute index.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173638 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
d05204aea4977eaec25e96bc7605a7bb9d806fc0 28-Jan-2013 Bill Wendling <isanbard@gmail.com> Push the calculation of the 'Raw' attribute mask down into the implementation. It in turn uses the correct list for calculating the 'Raw' value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173637 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
c08a5ef6581f2c7550e92d31f63cd65ec29c39e0 27-Jan-2013 Bill Wendling <isanbard@gmail.com> Add special 'get' methods to create an Attribute with an alignment. Also do some random cleanup. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173635 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
1cc0d5a4311c2d4bc01051561549390307b789a1 27-Jan-2013 Bill Wendling <isanbard@gmail.com> Privitize some the copy c'tor and assignment operator of uniquified objects.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173632 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
893eac1648151ca42e3d0f9e9da092d817c9f8ba 27-Jan-2013 Bill Wendling <isanbard@gmail.com> Add some helpful comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173631 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ec2589863b32da169240c4fa120ef1e3798615d4 27-Jan-2013 Bill Wendling <isanbard@gmail.com> s/AttrList/pImpl/g in AttributeSet. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173628 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
a5372d270864316fb0752dd366f03fc1b45c6143 27-Jan-2013 Bill Wendling <isanbard@gmail.com> Start using more of the AttrNode in the AttributeSetImpl class.

Also add some asserts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173627 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
6a325cc46db9cb0c631ac832474e5df039d04b19 27-Jan-2013 Bill Wendling <isanbard@gmail.com> In the AttributeSetImpl c'tor, fill in the AttrNodes data structure with the attributes being passed in.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173618 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
16f95669ec814d98ce28ad514df603c01d662ee8 27-Jan-2013 Bill Wendling <isanbard@gmail.com> Fix miscompile. Add back the use of the ArrayRef version of the ::get method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173613 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
09dda440ba6622b64713ef5f7d9531411e3589ea 27-Jan-2013 Bill Wendling <isanbard@gmail.com> Remove dead methods.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173611 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
32a57958226e369f964a034da2ce7083a1a34297 26-Jan-2013 Bill Wendling <isanbard@gmail.com> Convert BuildLibCalls.cpp to using the AttributeSet methods instead of AttributeWithIndex.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173536 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
483bbd36b8b3f87073feea2e1096f188d0e735b8 26-Jan-2013 Bill Wendling <isanbard@gmail.com> Remove dead method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173524 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
8e47daf2858e980210f3e1f007036b24da342c29 26-Jan-2013 Bill Wendling <isanbard@gmail.com> Remove some introspection functions.

The 'getSlot' function and its ilk allow introspection into the AttributeSet
class. However, that class should be opaque. Allow access through accessor
methods instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173522 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
erifier.cpp
85875647d6f85cbcbe506809640b9857eaaa26a4 25-Jan-2013 Bill Wendling <isanbard@gmail.com> Use the new 'getSlotIndex' method to retrieve the attribute's slot index.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173499 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
e1f95db4803a48a30fc2a1d5868281a87a36fb85 25-Jan-2013 Bill Wendling <isanbard@gmail.com> Add an accessor method to get the slot's index. This will limit the use of AttributeWithIndex.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173495 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
erifier.cpp
f86c9321fc8088a021598df0265c5fd00ab4170d 25-Jan-2013 Reid Kleckner <reid@kleckner.net> Fix MSVC 2012 warning about a 32-bit shift that should be 64-bit

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173454 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
a3bb665c6505ff78c29a37ca95dad1d297928791 25-Jan-2013 Bill Wendling <isanbard@gmail.com> Use the AttributeSet query instead of the Attribute query.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173434 91177308-0d34-0410-b5e6-96231b3b80d8
erifier.cpp
bb08593980b16fbd9758da6ca4fa9c7964f2f926 24-Jan-2013 Bill Wendling <isanbard@gmail.com> Add a profile for uniquifying the AttributeSet with the AttributeSetNodes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173313 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
8b1f2f3b7007e1e086c0e20ad4fdea72222c4baf 24-Jan-2013 Bill Wendling <isanbard@gmail.com> Cleanup the AttributeSetNodes that we create.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173311 91177308-0d34-0410-b5e6-96231b3b80d8
LVMContextImpl.cpp
3467e30edf63b6d8a8d446186674ba9e4b7885a9 24-Jan-2013 Bill Wendling <isanbard@gmail.com> Create a new class: AttributeSetNode.

This is a helper class for the AttributeSetImpl class. It holds a set of
attributes that apply to a single element: function, return type, or
parameter.

These are uniqued.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173310 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
LVMContextImpl.h
a8ab5fc772e1eaaa1066d1c9c4135ac875d79365 24-Jan-2013 Bill Wendling <isanbard@gmail.com> Push down the conversion of the alignment from the bit mask to a real number into the attribute implementation class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173304 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
2915a691b9eecde508948d4300428860d1655175 23-Jan-2013 Bill Wendling <isanbard@gmail.com> Remove dead methods.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173302 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
114baee1fa017daefad2339c77b45b9ca3d79a41 23-Jan-2013 Bill Wendling <isanbard@gmail.com> Add the IR attribute 'sspstrong'.

SSPStrong applies a heuristic to insert stack protectors in these situations:

* A Protector is required for functions which contain an array, regardless of
type or length.

* A Protector is required for functions which contain a structure/union which
contains an array, regardless of type or length. Note, there is no limit to
the depth of nesting.

* A protector is required when the address of a local variable (i.e., stack
based variable) is exposed. (E.g., such as through a local whose address is
taken as part of the RHS of an assignment or a local whose address is taken as
part of a function argument.)

This patch implements the SSPString attribute to be equivalent to
SSPRequired. This will change in a subsequent patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173230 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
28d65722d6f283b327b5815914382077fe9c0ab4 23-Jan-2013 Bill Wendling <isanbard@gmail.com> Remove the last of uses that use the Attribute object as a collection of attributes.

Collections of attributes are handled via the AttributeSet class now. This
finally frees us up to make significant changes to how attributes are structured.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173228 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
ore.cpp
unction.cpp
8246df61f6de716acf1f8c64fac3c19970a2c174 23-Jan-2013 Bill Wendling <isanbard@gmail.com> Use the AttributeSet when removing multiple attributes. Use Attribute::AttrKind
when removing one attribute. This further encapsulates the use of the attributes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173214 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
ore.cpp
unction.cpp
nstructions.cpp
70d2ca0725b05a2d372e4dc3336e8ea350093e98 23-Jan-2013 Bill Wendling <isanbard@gmail.com> Use the AttributeSet when adding multiple attributes and an Attribute::AttrKind
when adding a single attribute to the function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173210 91177308-0d34-0410-b5e6-96231b3b80d8
unction.cpp
defaca00b8087d452df2b783250a48a32658a910 22-Jan-2013 Bill Wendling <isanbard@gmail.com> More encapsulation work.

Use the AttributeSet when we're talking about more than one attribute. Add a
function that adds a single attribute. No functionality change intended.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173196 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
ore.cpp
unction.cpp
nstructions.cpp
0a29cb045444c13160e90fe7942a9d7c720185ed 22-Jan-2013 Tim Northover <Tim.Northover@arm.com> Make APFloat constructor require explicit semantics.

Previously we tried to infer it from the bit width size, with an added
IsIEEE argument for the PPC/IEEE 128-bit case, which had a default
value. This default value allowed bugs to creep in, where it was
inappropriate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173138 91177308-0d34-0410-b5e6-96231b3b80d8
onstantFold.cpp
onstants.cpp
e4e85f17564c28cd571dda30146c3f310521acf0 22-Jan-2013 Bill Wendling <isanbard@gmail.com> Add a new method that adds the AttributeSet at the given index. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173109 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
da6d5623aefeb3c77a610954c77605107e1532b8 22-Jan-2013 Bill Wendling <isanbard@gmail.com> Add the attributes that are passed in instead of the ones we're merging into.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173108 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
bed8059b320e273cd187b12cffb62fa147f010fe 22-Jan-2013 Bill Wendling <isanbard@gmail.com> Use AttributeSet instead of Attribute to verify things.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173101 91177308-0d34-0410-b5e6-96231b3b80d8
erifier.cpp
3fc4b96b503fa202411317684a2ba02e41e43072 21-Jan-2013 Bill Wendling <isanbard@gmail.com> Have AttributeSet::getRetAttributes() return an AttributeSet instead of Attribute.

This further restricts the use of the Attribute class to the Attribute family of
classes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173098 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
c5f1bc88a2eb7ad9ff924ca90cf88494e5f947b9 21-Jan-2013 Bill Wendling <isanbard@gmail.com> Make AttributeSet::getFnAttributes() return an AttributeSet instead of an Attribute.

This is more code to isolate the use of the Attribute class to that of just
holding one attribute instead of a collection of attributes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173094 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
3aef70314b053a1df4f85ca4a6f3890d06ebbdd6 09-Jan-2013 Stephen Hines <srhines@google.com> Update LLVM for merge to r171905.

Android.mk
lib/Analysis/Android.mk
lib/CodeGen/Android.mk
lib/CodeGen/MachineScheduler.cpp - specify std::pop_heap()
lib/IR/Android.mk - new from lib/VMCore
lib/MC/Android.mk
lib/MC/MCAssembler.cpp - put back pointer param (from reference).
lib/Support/DeltaAlgorithm.cpp - iterator -> const_iterator !
lib/TableGen/Android.mk
lib/Target/ARM/ARMJITInfo.cpp - Removed unused legacy JIT changes
lib/Target/ARM/Android.mk
lib/Target/ARM/AsmParser/Android.mk
lib/Target/ARM/Disassembler/Android.mk
lib/Target/ARM/MCTargetDesc/Android.mk
lib/Target/Android.mk
lib/Target/Mips/Android.mk
lib/Target/Mips/Disassembler/Android.mk
lib/Target/Mips/MCTargetDesc/Android.mk
lib/Target/X86/Android.mk
lib/Target/X86/AsmParser/Android.mk
lib/Target/X86/Disassembler/Android.mk
lib/Transforms/IPO/Android.mk
lib/Transforms/Instrumentation/Android.mk
lib/Transforms/Scalar/Android.mk
lib/Transforms/Utils/Android.mk
lib/Transforms/Vectorize/Android.mk
lib/VMCore/Android.mk - moved to lib/IR
llvm-gen-intrinsics.mk - new Intrinsics.td location
utils/TableGen/Android.mk

Change-Id: Ifebdb1716c372fd917a844c44be9d10df66434b0
ndroid.mk
fe07db323b2b403236375af0a54b0ed2294cd0e6 20-Jan-2013 David Blaikie <dblaikie@gmail.com> Fix a latent bug exposed by recent static member debug info changes.

We weren't encoding boolean constants correctly due to modeling boolean as a
signed type & then sign extending an i1 up to a byte & getting 255.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172926 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
aec710675febb13d3cf4a7141d2658a3b1797cfd 18-Jan-2013 Bill Wendling <isanbard@gmail.com> If the attributes don't exist, just bail for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172854 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
1b0c54f1c5dd61e56cb7cbc435fcb3319cff628f 18-Jan-2013 Bill Wendling <isanbard@gmail.com> Use AttributeSet accessor methods instead of Attribute accessor methods.

Further encapsulation of the Attribute object. Don't allow direct access to the
Attribute object as an aggregate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172853 91177308-0d34-0410-b5e6-96231b3b80d8
smWriter.cpp
ttributes.cpp
956f13440a4aa0297606a4412f4aa091d931592a 18-Jan-2013 Bill Wendling <isanbard@gmail.com> Push some more methods down to hide the use of the Attribute class.

Because the Attribute class is going to stop representing a collection of
attributes, limit the use of it as an aggregate in favor of using AttributeSet.
This replaces some of the uses for querying the function attributes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172844 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
erifier.cpp
5db391c67d0922f4ab2ba57c07def19759c801a4 16-Jan-2013 Daniel Dunbar <daniel@zuster.org> [IR] Add 'Append' and 'AppendUnique' module flag behaviors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172659 91177308-0d34-0410-b5e6-96231b3b80d8
erifier.cpp
655578f8b5275e7c59b87d4709b0d56b2621caac 16-Jan-2013 Evgeniy Stepanov <eugeni.stepanov@gmail.com> Allow vectors in CreatePointerCast of constants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172615 91177308-0d34-0410-b5e6-96231b3b80d8
onstants.cpp
6b6061f01171bd3d4e32022efa45428d4f9941ee 16-Jan-2013 Eric Christopher <echristo@gmail.com> Define metadata interfaces for describing a static data member
of a class. Emit static data member declarations and definitions
through correctly.

Part of PR14471.

Patch by Paul Robinson!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172590 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
12bfff440700c58bc67e9f9d8f99121632022cf1 15-Jan-2013 Daniel Dunbar <daniel@zuster.org> [IR] Add verification for module flags with the "require" behavior.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172549 91177308-0d34-0410-b5e6-96231b3b80d8
erifier.cpp
344d3fb9614a103f84520fd88870121abe94c080 15-Jan-2013 Evgeniy Stepanov <eugeni.stepanov@gmail.com> Allow vectors in CreatePointerCast.

Both underlying IR operations support vectors of pointers already.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172538 91177308-0d34-0410-b5e6-96231b3b80d8
nstructions.cpp
8dd938ed179267b2a3a5206c78e89530967f45a5 15-Jan-2013 Daniel Dunbar <daniel@zuster.org> [IR] Add verifier support for llvm.module.flags.

- Also, update the LangRef documentation on module flags to match the
implementation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172498 91177308-0d34-0410-b5e6-96231b3b80d8
erifier.cpp
914d4a76fe0dd7aafb9f06f5af2dcf09c0b87ee7 14-Jan-2013 David Greene <greened@obbligato.org> Fix Casting

Stop a gcc warning about casting away const.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172465 91177308-0d34-0410-b5e6-96231b3b80d8
se.cpp
4d0b4a45dc724666d5de4f2f7c2d295487e4ca3e 11-Jan-2013 Michael Ilseman <milseman@apple.com> Support for half intrinsics. Pushes MMX into slower encoding path.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172159 91177308-0d34-0410-b5e6-96231b3b80d8
unction.cpp
erifier.cpp
582e4f278b95d50a45c6f56e33da5e78c19afc17 11-Jan-2013 Evan Cheng <evan.cheng@apple.com> CastInst::castIsValid should return true if the dest type is the same as
Value's current type. The casting is trivial even for aggregate type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172143 91177308-0d34-0410-b5e6-96231b3b80d8
nstructions.cpp
1db9b6957c2565a2322206bd5907530895f1c7ac 10-Jan-2013 Bill Wendling <isanbard@gmail.com> Revert s/Raw/getBitMask/g name change. This is possibly causing LTO test hangings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172020 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
ore.cpp
53208a91a0ff20a956357147472d75058c2d5cce 09-Jan-2013 Bill Wendling <isanbard@gmail.com> Alter the hasing computation when inserting into the folding set.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171960 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
c3d6de2fe52dbdbf41b1dfebb1430656a16b254b 09-Jan-2013 Shuxin Yang <shuxin.llvm@gmail.com> Add comment to the definition of Constant::isZeroValue().
(There already has a concise comment to the declaration.)

Thank Eric Christopher for his feedback!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171926 91177308-0d34-0410-b5e6-96231b3b80d8
onstants.cpp
8456efb38e479e4878a6a782c3026c20b09c1f8e 09-Jan-2013 Bill Wendling <isanbard@gmail.com> Forgot the namespace identifier.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171924 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
ff887165bc221c0398c0d4404dc0b22de216dedf 09-Jan-2013 Bill Wendling <isanbard@gmail.com> Add the integer value of the ConstantInt instead of the Constant* value.

This is causing some problems. The root cause is unknown at this time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171923 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
935e35d2b9f889566207b76a7026b63a1619742c 09-Jan-2013 Shuxin Yang <shuxin.llvm@gmail.com> Consider expression "0.0 - X" as the negation of X if
- this expression is explicitly marked no-signed-zero, or
- no-signed-zero of this expression can be derived from some context.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171922 91177308-0d34-0410-b5e6-96231b3b80d8
onstants.cpp
nstructions.cpp
9a1e0e252a7ede548acaac98cf304d4bb135fb97 08-Jan-2013 Eric Christopher <echristo@gmail.com> Remove the llvm-local DW_TAG_vector_type tag and add a test to
make sure that vector types do work.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171833 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
1f55eb4c5766fd6a6fa53c17f7bb9e7d4ea03500 08-Jan-2013 Eric Christopher <echristo@gmail.com> Fix comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171832 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
0fecdfb7c44aee85e78e0ba6e9547b702bc64c4a 08-Jan-2013 David Blaikie <dblaikie@gmail.com> Mark artificial types as such in the annotated debug output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171826 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
72a81be37452983f9960a376c19682034ef7db35 08-Jan-2013 Eric Christopher <echristo@gmail.com> Remove what appears to be a dead llvm-specific debug tag.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171821 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
4068e1af9ff68b6b5fdb3233f1304e53f1bf179a 07-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Move TypeFinder.h into the IR tree, it clearly belongs with the IR library.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171749 91177308-0d34-0410-b5e6-96231b3b80d8
smWriter.cpp
ypeFinder.cpp
a90a99a82b9c5c39fc6dbee9c266dcd7b107fe2f 07-Jan-2013 Bill Wendling <isanbard@gmail.com> Rough out a new c'tor for the AttrBuilder class.

This c'tor takes the AttributeSet class as the parameter. It will eventually
grab the attributes from the specified index and create a new attribute builder
with those attributes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171712 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
62fdfb5fa7efdfd61339e4abe6fd87e60e939e58 07-Jan-2013 David Blaikie <dblaikie@gmail.com> PR14759: Debug info support for C++ member pointers.

This works fine with GDB for member variable pointers, but GDB's support for
member function pointers seems to be quite unrelated to
DW_TAG_ptr_to_member_type. (see GDB bug 14998 for details)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171698 91177308-0d34-0410-b5e6-96231b3b80d8
IBuilder.cpp
ebugInfo.cpp
6554666e0034ea1cc5c8095b34d1ffbe0f62f363 07-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Move the initialization to the Analysis library as well as the pass.

This was (somewhat distressingly) only caught be the ocaml bindings
tests...

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171690 91177308-0d34-0410-b5e6-96231b3b80d8
ore.cpp
be04929f7fd76a921540e9901f24563e51dc1219 07-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Move TargetTransformInfo to live under the Analysis library. This no
longer would violate any dependency layering and it is in fact an
analysis. =]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171686 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
argetTransformInfo.cpp
aeef83c6afa1e18d1cf9d359cc678ca0ad556175 07-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Switch TargetTransformInfo from an immutable analysis pass that requires
a TargetMachine to construct (and thus isn't always available), to an
analysis group that supports layered implementations much like
AliasAnalysis does. This is a pretty massive change, with a few parts
that I was unable to easily separate (sorry), so I'll walk through it.

The first step of this conversion was to make TargetTransformInfo an
analysis group, and to sink the nonce implementations in
ScalarTargetTransformInfo and VectorTargetTranformInfo into
a NoTargetTransformInfo pass. This allows other passes to add a hard
requirement on TTI, and assume they will always get at least on
implementation.

The TargetTransformInfo analysis group leverages the delegation chaining
trick that AliasAnalysis uses, where the base class for the analysis
group delegates to the previous analysis *pass*, allowing all but tho
NoFoo analysis passes to only implement the parts of the interfaces they
support. It also introduces a new trick where each pass in the group
retains a pointer to the top-most pass that has been initialized. This
allows passes to implement one API in terms of another API and benefit
when some other pass above them in the stack has more precise results
for the second API.

The second step of this conversion is to create a pass that implements
the TargetTransformInfo analysis using the target-independent
abstractions in the code generator. This replaces the
ScalarTargetTransformImpl and VectorTargetTransformImpl classes in
lib/Target with a single pass in lib/CodeGen called
BasicTargetTransformInfo. This class actually provides most of the TTI
functionality, basing it upon the TargetLowering abstraction and other
information in the target independent code generator.

The third step of the conversion adds support to all TargetMachines to
register custom analysis passes. This allows building those passes with
access to TargetLowering or other target-specific classes, and it also
allows each target to customize the set of analysis passes desired in
the pass manager. The baseline LLVMTargetMachine implements this
interface to add the BasicTTI pass to the pass manager, and all of the
tools that want to support target-aware TTI passes call this routine on
whatever target machine they end up with to add the appropriate passes.

The fourth step of the conversion created target-specific TTI analysis
passes for the X86 and ARM backends. These passes contain the custom
logic that was previously in their extensions of the
ScalarTargetTransformInfo and VectorTargetTransformInfo interfaces.
I separated them into their own file, as now all of the interface bits
are private and they just expose a function to create the pass itself.
Then I extended these target machines to set up a custom set of analysis
passes, first adding BasicTTI as a fallback, and then adding their
customized TTI implementations.

The fourth step required logic that was shared between the target
independent layer and the specific targets to move to a different
interface, as they no longer derive from each other. As a consequence,
a helper functions were added to TargetLowering representing the common
logic needed both in the target implementation and the codegen
implementation of the TTI pass. While technically this is the only
change that could have been committed separately, it would have been
a nightmare to extract.

The final step of the conversion was just to delete all the old
boilerplate. This got rid of the ScalarTargetTransformInfo and
VectorTargetTransformInfo classes, all of the support in all of the
targets for producing instances of them, and all of the support in the
tools for manually constructing a pass based around them.

Now that TTI is a relatively normal analysis group, two things become
straightforward. First, we can sink it into lib/Analysis which is a more
natural layer for it to live. Second, clients of this interface can
depend on it *always* being available which will simplify their code and
behavior. These (and other) simplifications will follow in subsequent
commits, this one is clearly big enough.

Finally, I'm very aware that much of the comments and documentation
needs to be updated. As soon as I had this working, and plausibly well
commented, I wanted to get it committed and in front of the build bots.
I'll be doing a few passes over documentation later if it sticks.

Commits to update DragonEgg and Clang will be made presently.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171681 91177308-0d34-0410-b5e6-96231b3b80d8
argetTransformInfo.cpp
e302b6cb69e96b948101e1ab6c0476187c92ee84 05-Jan-2013 David Blaikie <dblaikie@gmail.com> Include access modifiers in subprogram metadata IR comment.

Based on code review feedback in r171604 from Chandler Carruth &
Eric Christopher.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171636 91177308-0d34-0410-b5e6-96231b3b80d8
ebugInfo.cpp
f06eb2616516da9d1e7a6599225cd894618ecb10 05-Jan-2013 Benjamin Kramer <benny.kra@googlemail.com> Attribute: Make hashes match when looking up AttributeImpls.

This isn't optimal either but fixes a massive compile time regression from the
attribute uniquing work.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171624 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
7bdf6b00e04c177f22133b5d4be10cb246cb1e76 05-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Convert the TargetTransformInfo from an immutable pass with dynamic
interfaces which could be extracted from it, and must be provided on
construction, to a chained analysis group.

The end goal here is that TTI works much like AA -- there is a baseline
"no-op" and target independent pass which is in the group, and each
target can expose a target-specific pass in the group. These passes will
naturally chain allowing each target-specific pass to delegate to the
generic pass as needed.

In particular, this will allow a much simpler interface for passes that
would like to use TTI -- they can have a hard dependency on TTI and it
will just be satisfied by the stub implementation when that is all that
is available.

This patch is a WIP however. In particular, the "stub" pass is actually
the one and only pass, and everything there is implemented by delegating
to the target-provided interfaces. As a consequence the tools still have
to explicitly construct the pass. Switching targets to provide custom
passes and sinking the stub behavior into the NoTTI pass is the next
step.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171621 91177308-0d34-0410-b5e6-96231b3b80d8
ore.cpp
argetTransformInfo.cpp
6f78fbbc630d2b86fb752574f5ad74473f57dfb1 05-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Switch the empty and tombstone key enumerators to not have explicit
values -- that's not required to fix the bug that was cropping up, and
the values selected made the enumeration's underlying type signed and
introduced some warnings. This fixes the -Werror build.

The underlying issue here was that the DenseMapInfo was casting values
completely outside the range of the underlying storage of the
enumeration to the enumeration's type. GCC went and "optimized" that
into infloops and other misbehavior. By providing designated special
values for these keys in the dense map, we ensure they are indeed
representable and that they won't be used for anything else.

It might be better to reuse None for the empty key and have the
tombstone share the value of the sentinel enumerator, but honestly
having 2 extra enumerators seemed not to matter and this seems a bit
simpler. I'll let Bill shuffle this around (or ask me to shuffle it
around) if he prefers it to look a different way.

I also made the switch a bit more clear (and produce a better assert)
that the enumerators are *never* going to show up and are errors if they
do.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171614 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
3a4779a9211281a1d0c27c97037342329035a185 05-Jan-2013 NAKAMURA Takumi <geek4civic@gmail.com> IR/Attributes: Provide EmptyKey and TombstoneKey in part of enum, as workaround for gcc-4.4 take #2.

I will investigate, later, what was wrong. I am too tired for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171611 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
1bbd644301ed4d8a7efd4ceb15f71c56fa914f28 05-Jan-2013 Bill Wendling <isanbard@gmail.com> Add a method to create an AttributeSet from an AttrBuilder.

The Attribute class is eventually going to represent one attribute. So we need
this class to create the set of attributes. Add some iterator methods to the
builder to access its internal bits in a nice way.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171586 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
0319888773b36dd61d7d2283cb9a26cac1e5abe8 05-Jan-2013 Bill Wendling <isanbard@gmail.com> Get rid of the 'Bits' mask in the attribute builder.

The bit mask thing will be a thing of the past. It's not extensible enough. Get
rid of its use here. Opt instead for using a vector to hold the attributes.

Note: Some of this code will become obsolete once the rewrite is further along.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171553 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
60507d53e7e8e6b0c537675f68204a93c3033de7 04-Jan-2013 Bill Wendling <isanbard@gmail.com> General cleanups.

* Remove dead methods.
* Use the 'operator==' method instead of 'contains', which isn't needed.
* Fix some comments.

No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171523 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
da704cc1e77d8314a7b116613d8f3a339aedbc19 04-Jan-2013 Eli Bendersky <eliben@google.com> Remove unused #include

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171507 91177308-0d34-0410-b5e6-96231b3b80d8
erifier.cpp
e5ab1bee8c1b4ae58bc108c28194af56379e55ac 03-Jan-2013 Bill Wendling <isanbard@gmail.com> Revert everything to r171366 to try to fix the build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171450 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
22bd64173981bf1251c4b3bfc684207340534ba3 03-Jan-2013 Bill Wendling <isanbard@gmail.com> Try again to revert the bad patch. The tree was reverted for some unknown reason
before the last time.

--- Reverse-merging r171442 into '.':
U include/llvm/IR/Attributes.h
U lib/IR/Attributes.cpp
U lib/IR/AttributeImpl.h



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171448 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
ded28aca6195d2d8d3bcbb9cd6b1c2c34c0d9702 03-Jan-2013 Bill Wendling <isanbard@gmail.com> Revert patch. Something snuck in there that shouldn't be.

--- Reverse-merging r171441 into '.':
U include/llvm/IR/Attributes.h
U lib/IR/Attributes.cpp




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171444 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
8351a60d6da4f5cdab80753ad2266085a6fbf62a 03-Jan-2013 Bill Wendling <isanbard@gmail.com> Remove the 'contains' methods in favor of the 'operator==' method.

The 'operator==' method is a bit clearer and much less verbose for somethings
that should have only one value. Remove from the AttrBuilder for consistency.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171442 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
3ac03815e195a598fce50abdda440c9d2fae815e 03-Jan-2013 NAKAMURA Takumi <geek4civic@gmail.com> Revert r171427, "An intermediate step in the Attributes rewrite."

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171441 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
47990e974355dd58d1f320f252e1a7ed3a79e034 03-Jan-2013 Bill Wendling <isanbard@gmail.com> Make the type signature more strict.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171434 91177308-0d34-0410-b5e6-96231b3b80d8
ttributeImpl.h
ttributes.cpp
278bac3fba5ae8ae620c961621493e6e2ad6f953 03-Jan-2013 Bill Wendling <isanbard@gmail.com> An intermediate step in the Attributes rewrite.

Modify the AttrBuilder class to store the attributes as a set instead of as a
bit mask. The Attribute class will represent only one attribute instead of a
collection of attributes.

This is the wave of the future!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171427 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.cpp
351ba145a7db32b457f118ecc4d873765ac2a16b 02-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Actually update the CMake and Makefile builds correctly, and update the
code that includes Intrinsics.gen directly.

This never showed up in my testing because the old Intrinsics.gen was
still kicking around in the make build system and was correct there. =[
Thankfully, some of the bots to clean rebuilds and that caught this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171373 91177308-0d34-0410-b5e6-96231b3b80d8
unction.cpp
akefile
0b8c9a80f20772c3793201ab5b251d3520b9cea3 02-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Move all of the header files which are involved in modelling the LLVM IR
into their new header subdirectory: include/llvm/IR. This matches the
directory structure of lib, and begins to correct a long standing point
of file layout clutter in LLVM.

There are still more header files to move here, but I wanted to handle
them in separate commits to make tracking what files make sense at each
layer easier.

The only really questionable files here are the target intrinsic
tablegen files. But that's a battle I'd rather not fight today.

I've updated both CMake and Makefile build systems (I think, and my
tests think, but I may have missed something).

I've also re-sorted the includes throughout the project. I'll be
committing updates to Clang, DragonEgg, and Polly momentarily.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171366 91177308-0d34-0410-b5e6-96231b3b80d8
smWriter.cpp
ttributeImpl.h
ttributes.cpp
utoUpgrade.cpp
asicBlock.cpp
onstantFold.cpp
onstants.cpp
onstantsContext.h
ore.cpp
IBuilder.cpp
ataLayout.cpp
ebugInfo.cpp
ominators.cpp
unction.cpp
lobals.cpp
RBuilder.cpp
nlineAsm.cpp
nstruction.cpp
nstructions.cpp
ntrinsicInst.cpp
LVMContext.cpp
LVMContextImpl.cpp
LVMContextImpl.h
eakDetector.cpp
eaksContext.h
akefile
etadata.cpp
odule.cpp
assManager.cpp
assRegistry.cpp
rintModulePass.cpp
ymbolTableListTraitsImpl.h
ype.cpp
ypeFinder.cpp
se.cpp
ser.cpp
alue.cpp
alueSymbolTable.cpp
alueTypes.cpp
erifier.cpp
c2c50cdcdc19a1bca993c06d13d8cdca87083ce4 02-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Rename VMCore directory to IR.

Aside from moving the actual files, this patch only updates the build
system and the source file comments under lib/... that are relevant.

I'll be updating other docs and other files in smaller subsequnet
commits.

While I've tried to test this, but it is entirely possible that there
will still be some build system fallout.

Also, note that I've not changed the library name itself: libLLVMCore.a
is still the library name. I'd be interested in others' opinions about
whether we should rename this as well (I think we should, just not sure
what it might break)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171359 91177308-0d34-0410-b5e6-96231b3b80d8
smWriter.cpp
ttributeImpl.h
ttributes.cpp
utoUpgrade.cpp
asicBlock.cpp
MakeLists.txt
onstantFold.cpp
onstantFold.h
onstants.cpp
onstantsContext.h
ore.cpp
IBuilder.cpp
ataLayout.cpp
ebugInfo.cpp
ebugLoc.cpp
ominators.cpp
unction.cpp
COV.cpp
VMaterializer.cpp
lobals.cpp
RBuilder.cpp
nlineAsm.cpp
nstruction.cpp
nstructions.cpp
ntrinsicInst.cpp
LVMBuild.txt
LVMContext.cpp
LVMContextImpl.cpp
LVMContextImpl.h
eakDetector.cpp
eaksContext.h
akefile
etadata.cpp
odule.cpp
ass.cpp
assManager.cpp
assRegistry.cpp
rintModulePass.cpp
ymbolTableListTraitsImpl.h
argetTransformInfo.cpp
ype.cpp
ypeFinder.cpp
se.cpp
ser.cpp
alue.cpp
alueSymbolTable.cpp
alueTypes.cpp
erifier.cpp