History log of /external/llvm/lib/IR/Attributes.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
cddc3e03e4ec99c0268c03a126195173e519ed58 04-Mar-2016 Pirama Arumuga Nainar <pirama@google.com> Update aosp/master LLVM for rebase to r256229

http://b/26987366

(cherry picked from commit f3ef5332fa3f4d5ec72c178a2b19dac363a19383)

Change-Id: Ic75dcb63191d65df1b69724576392c0aaeb47728
/external/llvm/lib/IR/Attributes.cpp
6948897e478cbd66626159776a8017b3c18579b9 01-Jul-2015 Pirama Arumuga Nainar <pirama@google.com> Update aosp/master LLVM for rebase to r239765

Bug: 20140355: This rebase pulls the upstream fix for the spurious
warnings mentioned in the bug.

Change-Id: I7fd24253c50f4d48d900875dcf43ce3f1721a3da
/external/llvm/lib/IR/Attributes.cpp
0c7f116bb6950ef819323d855415b2f2b0aad987 06-May-2015 Pirama Arumuga Nainar <pirama@google.com> Update aosp/master LLVM for rebase to r235153

Change-Id: I9bf53792f9fc30570e81a8d80d296c681d005ea7
/external/llvm/lib/IR/Attributes.cpp
ebe69fe11e48d322045d5949c83283927a0d790b 23-Mar-2015 Stephen Hines <srhines@google.com> Update aosp/master LLVM for rebase to r230699.

Change-Id: I2b5be30509658cb8266be782de0ab24f9099f9b9
/external/llvm/lib/IR/Attributes.cpp
37ed9c199ca639565f6ce88105f9e39e898d82d0 01-Dec-2014 Stephen Hines <srhines@google.com> Update aosp/master LLVM for rebase to r222494.

Change-Id: Ic787f5e0124df789bd26f3f24680f45e678eef2d
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.cpp
dce4a407a24b04eebc6a376f8e62b41aaa7b071f 29-May-2014 Stephen Hines <srhines@google.com> Update LLVM for 3.5 rebase (r209712).

Change-Id: I149556c940fb7dc92d075273c87ff584f400941f
/external/llvm/lib/IR/Attributes.cpp
36b56886974eae4f9c5ebc96befd3e7bfe5de338 24-Apr-2014 Stephen Hines <srhines@google.com> Update to LLVM 3.5a.

Change-Id: Ifadecab779f128e62e430c2b4f6ddd84953ed617
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.cpp
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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.cpp
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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.cpp
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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.cpp
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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.cpp
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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.cpp
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
/external/llvm/lib/IR/Attributes.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
/external/llvm/lib/IR/Attributes.cpp