|  | Commit message (Collapse) | Author | Age | Files | Lines | 
|---|
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | 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.
llvm-svn: 182638 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | 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.
llvm-svn: 180844 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | 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!
llvm-svn: 180791 | 
| | 
| 
| 
| 
| 
| | pass on Windows. I.e., we don't emit the target dependent attributes in a comment before the function.
llvm-svn: 180750 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | 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.
llvm-svn: 180722 | 
| | 
| 
| 
| | llvm-svn: 180574 | 
| | 
| 
| 
| 
| 
| | 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).
llvm-svn: 179925 | 
| | 
| 
| 
| | llvm-svn: 179849 | 
| | 
| 
| 
| | llvm-svn: 179798 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | 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!
llvm-svn: 179791 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | 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!
llvm-svn: 179790 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | 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>
llvm-svn: 179735 | 
| | 
| 
| 
| 
| 
| | up putback to clang for mips16.
llvm-svn: 176968 | 
| | 
| 
| 
| 
| 
| | that doesn't exist.
llvm-svn: 176289 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | 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
llvm-svn: 176075 | 
| | 
| 
| 
| | llvm-svn: 175846 | 
| | 
| 
| 
| | llvm-svn: 175843 | 
| | 
| 
| 
| 
| 
| 
| 
| | 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.
llvm-svn: 175835 | 
| | 
| 
| 
| 
| 
| 
| | Currently we're at 34. Bitset should compile into virtually the same code as
uint64_t here.
llvm-svn: 175437 | 
| | 
| 
| 
| | llvm-svn: 175373 | 
| | 
| 
| 
| 
| 
| 
| 
| | 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.
llvm-svn: 175370 | 
| | 
| 
| 
| | llvm-svn: 175252 | 
| | 
| 
| 
| 
| 
| | This reverts commit 82c101153fe7b35bce48781fab038e1b8f31a7bd.
llvm-svn: 175250 | 
| | 
| 
| 
| | llvm-svn: 175235 | 
| | 
| 
| 
| | llvm-svn: 175048 | 
| | 
| 
| 
| | llvm-svn: 175046 | 
| | 
| 
| 
| | llvm-svn: 174948 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | 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.
llvm-svn: 174867 | 
| | 
| 
| 
| | llvm-svn: 174864 | 
| | 
| 
| 
| | llvm-svn: 174848 | 
| | 
| 
| 
| | llvm-svn: 174834 | 
| | 
| 
| 
| | llvm-svn: 174824 | 
| | 
| 
| 
| 
| 
| 
| | Fix the 'operator==' and 'hasAttributes' queries to take into account
target-dependent attributes.
llvm-svn: 174481 | 
| | 
| 
| 
| 
| 
| 
| 
| | This is useful when parsing an object that references multiple attribute groups.
N.B. If both builders have alignments specified, then they should match!
llvm-svn: 174480 | 
| | 
| 
| 
| 
| 
| | AttributeSet.
llvm-svn: 174467 | 
| | 
| 
| 
| 
| 
| 
| 
| | 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.
llvm-svn: 174456 | 
| | 
| 
| 
| | llvm-svn: 174356 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | 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.
llvm-svn: 174335 | 
| | 
| 
| 
| | llvm-svn: 174251 | 
| | 
| 
| 
| 
| 
| 
| | Use the AttributeSet's iterators in AttrBuilder::hasAttributes() when
determining of the intersection of the AttrBuilder and AttributeSet is non-null.
llvm-svn: 174250 | 
| | 
| 
| 
| 
| 
| | This Constant could be an aggregate to represent multiple values.
llvm-svn: 174228 | 
| | 
| 
| 
| 
| 
| | functionality change.
llvm-svn: 174132 | 
| | 
| 
| 
| | llvm-svn: 174130 | 
| | 
| 
| 
| 
| 
| | attributes from an AttrBuilder.
llvm-svn: 174123 | 
| | 
| 
| 
| 
| 
| | in a nice way.
llvm-svn: 174120 | 
| | 
| 
| 
| 
| 
| | descriptive of what it actually is.
llvm-svn: 174116 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | 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).
llvm-svn: 174110 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | Attributes that are strings are typically target-dependent attributes. They are
of this form in the IR:
   "attr"
   "attr" = "val"
llvm-svn: 174090 | 
| | 
| 
| 
| 
| 
| 
| | That function doesn't make sense anymore because there's only one attribute per
Attribute object now.
llvm-svn: 174044 | 
| | 
| 
| 
| 
| 
| 
| 
| | Attribute::hasAttribute() private."
It broke many hosts to crash.
llvm-svn: 174035 |