aboutsummaryrefslogtreecommitdiff
path: root/lib/IR/Attributes.cpp
AgeCommit message (Collapse)Author
2013-03-13Add some additonal attribute helper functions. Test will be on followReed Kotler
up putback to clang for mips16. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176968 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-28Don't add an attribute that already exists and don't remove an attribute ↵Bill Wendling
that doesn't exist. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176289 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-26Unify clang/llvm attributes for asan/tsan/msan (LLVM part)Kostya Serebryany
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
2013-02-22Remove warning about default covering no cases.Bill Wendling
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175846 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-22Add a bitmask for NoBuiltin. This should *not* be used.Bill Wendling
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175843 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-22Implement the NoBuiltin attribute.Bill Wendling
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
2013-02-18Futureproof AttrBuild if we ever have more than 64 attr enum values.Benjamin Kramer
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
2013-02-16GCC doesn't like ++ on enums.Benjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175373 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-16Turn the enum attributes DenseSet in AttrBuilder into a set of bits.Benjamin Kramer
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
2013-02-15Simplify the 'operator<' for the attribute object.Bill Wendling
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175252 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-15Revert "Simplify the attributes '<' comparison function."Anna Zaks
This reverts commit 82c101153fe7b35bce48781fab038e1b8f31a7bd. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175250 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-15Simplify the attributes '<' comparison function.Bill Wendling
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175235 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-13Use array_pod_sort.Bill Wendling
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175048 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-13Add some accessor and query methods for retrieving Attribute objects and such.Bill Wendling
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175046 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-12Support string attributes in the AttrBuilder.Bill Wendling
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174948 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-11Add support for printing out the attribute groups.Bill Wendling
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
2013-02-11[tsan/msan] adding thread_safety and uninitialized_checks attributesKostya Serebryany
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174864 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-10The 'Raw' method cannot handle 'string' attributes. Don't even try.Bill Wendling
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174848 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-10Handle string attributes in the AttrBuilder.Bill Wendling
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174834 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-10Add accessor for the LLVMContext.Bill Wendling
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174824 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-06Add a 'StringRef' version of hasAttribute.Bill Wendling
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
2013-02-06Add methods to merge an AttrBuilder into another builder.Bill Wendling
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
2013-02-05Add the target-dependent (string) attributes from the AttrBuilder to the ↵Bill Wendling
AttributeSet. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174467 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-05Convert to storing the attribute's internals as enums, integers, and strings.Bill Wendling
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
2013-02-05Add target-dependent versions of addAttribute/removeAttribute to AttrBuilder.Bill Wendling
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174356 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-04Initial cleanups of the param-attribute code in the bitcode reader/writer.Bill Wendling
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
2013-02-02Remove AttrBuilder::Raw().Bill Wendling
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174251 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-02Use the AttributeSet's iterators.Bill Wendling
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
2013-02-01Change the AttributeImpl to hold a single Constant* for the values.Bill Wendling
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
2013-02-01Remove some dead code, improve some asserts, and other assorted changes. No ↵Bill Wendling
functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174132 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-01Remove one of the odious 'Raw' methods.Bill Wendling
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174130 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-01Use iterators instead of relying upon a bitmask of attributes to remove ↵Bill Wendling
attributes from an AttrBuilder. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174123 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-31Add iterators to the AttributeSet class so that we can access the Attributes ↵Bill Wendling
in a nice way. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174120 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-31s/AttrBuilder::addAttributes/AttrBuilder::addAttribute/g because that's more ↵Bill Wendling
descriptive of what it actually is. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174116 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-31Remove the AttrBuilder form of the Attribute::get creators.Bill Wendling
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
2013-01-31Add support for emitting a string attribute.Bill Wendling
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
2013-01-31Remove the Attribute::hasAttributes() function.Bill Wendling
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
2013-01-31Revert r174026, "Remove Attribute::hasAttributes() and make ↵NAKAMURA Takumi
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
2013-01-31Remove Attribute::hasAttributes() and make Attribute::hasAttribute() private.Bill Wendling
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
2013-01-31Revert for now:Bill Wendling
--- 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
2013-01-31Remove the AttrBuilder version of the Attribute::get function.Bill Wendling
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
2013-01-31Make sure that the Attribute object represents one attribute only.Bill Wendling
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
2013-01-30Convert typeIncompatible to return an AttributeSet.Bill Wendling
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
2013-01-30Remove redundant code.Bill Wendling
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
2013-01-29Add a couple of accessor methods to get the kind and values of an attribute.Bill Wendling
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173828 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-29s/Data/Kind/g. No functionality change.Bill Wendling
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173827 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-29AttributeSet::get(): Fix a valgrind error. It doesn't affect actual ↵NAKAMURA Takumi
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
2013-01-29Convert getAttributes() to return an AttributeSetNode.Bill Wendling
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
2013-01-29Use an AttrBuilder to generate the correct AttributeSet.Bill Wendling
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
2013-01-29Convert the AttrBuilder into a list of Attributes instead of one Attribute ↵Bill Wendling
object that holds all of its attributes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173742 91177308-0d34-0410-b5e6-96231b3b80d8