|  | Commit message (Collapse) | Author | Age | Files | Lines | 
|---|
| | 
| 
| 
| | llvm-svn: 156491 | 
| | 
| 
| 
| 
| 
| | add a test for -fbounds-checking code generation
llvm-svn: 156474 | 
| | 
| 
| 
| 
| 
| 
| 
| | When enabled, clang generates bounds checks for array and pointers dereferences. Work to follow in LLVM's backend.
OK'ed by Chad; thanks for the review.
llvm-svn: 156431 | 
| | 
| 
| 
| 
| 
| | Part of rdar://11352000
llvm-svn: 156407 | 
| | 
| 
| 
| | llvm-svn: 156406 | 
| | 
| 
| 
| 
| 
| 
| 
| | already covered by the check with the objectsize builtin
remove the comparison of objectsize with -1. since it's an unsigned comparison, it will always succeed if objectsize returns -1, which is enough to have the check removed
llvm-svn: 156311 | 
| | 
| 
| 
| 
| 
| | previously done for SSE builtins.
llvm-svn: 156296 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | BuiltinType::getNameAsCString
to get a const char* if necessary.
This avoids unnecessary conversions when we want to use the result of getName as
a StringRef.
Part of rdar://10796159
llvm-svn: 156227 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | It reduces the amount of emitted debug information:
1) DIEs in .debug_info have types DW_TAG_compile_unit, DW_TAG_subprogram,
DW_TAG_inlined_subroutine (for opt builds) and DW_TAG_lexical_block only.
2) .debug_str contains only function names.
3) No debug data for types/namespaces/variables is emitted.
4) The data in .debug_line is enough to produce valid stack traces with
function names and line numbers.
Reviewed by Eric Christopher.
llvm-svn: 156160 | 
| | 
| 
| 
| 
| 
| 
| | the alignment might actually exceed the max field alignment;  don't
assert in this case.
llvm-svn: 155937 | 
| | 
| 
| 
| | llvm-svn: 155931 | 
| | 
| 
| 
| 
| 
| | used).  Found by static analyzer.
llvm-svn: 155922 | 
| | 
| 
| 
| 
| 
| 
| | working knowledge of the Microsoft ABI.  Based on a patch by
Dmitry Sokolov.
llvm-svn: 155905 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | and only consider using __cxa_atexit in the Itanium logic.  The
default logic is to use atexit().
Emit "guarded" initializers in Microsoft mode unconditionally.
This is definitely not correct, but it's closer to correct than
just not emitting the initializer.
Based on a patch by Timur Iskhodzhanov!
llvm-svn: 155894 | 
| | 
| 
| 
| 
| 
| 
| 
| | what I'm going to treat as basically universal properties of
array-cookie code.  Implement MS array cookies on top of that.
Based on a patch by Timur Iskhodzhanov!
llvm-svn: 155886 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | filter_decl_iterator had a weird mismatch where both op* and op-> returned T*
making it difficult to generalize this filtering behavior into a reusable
library of any kind.
This change errs on the side of value, making op-> return T* and op* return
T&.
(reviewed by Richard Smith)
llvm-svn: 155808 | 
| | 
| 
| 
| | llvm-svn: 155697 | 
| | 
| 
| 
| 
| 
| | <rdar://problem/11324125>.
llvm-svn: 155689 | 
| | 
| 
| 
| 
| 
| 
| | where getter type is super class of its property 
type, resulting in an assert. // rdar://11323676
llvm-svn: 155663 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | more aligned than the block header but also contains something
smaller than the block-header alignment but not exactly half
the difference between the large alignment and the header
alignment.  Got that?
I'm really not sure what I was thinking with the buggy computation
here, but the fix is pretty obvious.
llvm-svn: 155662 | 
| | 
| 
| 
| 
| 
| | a simulator.
llvm-svn: 155436 | 
| | 
| 
| 
| 
| 
| | -relaxed-aliasing
llvm-svn: 155430 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | find forward declarations in the context that the actual definition
will occur.
rdar://11291658
llvm-svn: 155381 | 
| | 
| 
| 
| 
| 
| | test suite failures.
llvm-svn: 155371 | 
| | 
| 
| 
| | llvm-svn: 155363 | 
| | 
| 
| 
| 
| 
| 
| | type llvm::ArrayType -- sometimes we emit them as packed structs. Don't assert
if such a global array has an element type with a non-trivial destructor.
llvm-svn: 155305 | 
| | 
| 
| 
| 
| 
| | when using Microsoft C++ ABI
llvm-svn: 155189 | 
| | 
| 
| 
| | llvm-svn: 155082 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | r155047. See the LLVM log for the primary motivation:
  http://llvm.org/viewvc/llvm-project?rev=155047&view=rev
Primary commit r154828:
  - Several issues were raised in review, and fixed in subsequent
    commits.
  - Follow-up commits also reverted, and which should be folded into the
    original before reposting:
    - r154837: Re-add the 'undef BUILTIN' thing to fix the build.
    - r154928: Fix build warnings, re-add (and correct) header and
      license
    - r154937: Typo fix.
Please resubmit this patch with the relevant LLVM resubmission.
llvm-svn: 155048 | 
| | 
| 
| 
| 
| 
| | rdar://11220251
llvm-svn: 154893 | 
| | 
| 
| 
| 
| 
| 
| | EmitFinalDestCopy (and thus pass EmitAggregateCopy the correct alignment).
rdar://11220251
llvm-svn: 154883 | 
| | 
| 
| 
| | llvm-svn: 154880 | 
| | 
| 
| 
| | llvm-svn: 154851 | 
| | 
| 
| 
| 
| 
| | up to this yet.
llvm-svn: 154835 | 
| | 
| 
| 
| | llvm-svn: 154828 | 
| | 
| 
| 
| | llvm-svn: 154824 | 
| | 
| 
| 
| | llvm-svn: 154789 | 
| | 
| 
| 
| | llvm-svn: 154767 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | initialize an array of unsigned char. Outside C++11 mode, this bug was benign,
and just resulted in us emitting a constant which was double the required
length, padded with 0s. In C++11, it resulted in us generating an array whose
first element was something like  i8 ptrtoint ([n x i8]* @str to i8).
llvm-svn: 154756 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | thinking of generalizing it to be able to specify other freedoms beyond accuracy
(such as that NaN's don't have to be respected).  I'd like the 3.1 release (the
first one with this metadata) to have the more generic name already rather than
having to auto-upgrade it in 3.2.
llvm-svn: 154745 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | attached. Since we do not support any attributes which appertain to a statement
(yet), testing of this is necessarily quite minimal.
Patch by Alexander Kornienko!
llvm-svn: 154723 | 
| | 
| 
| 
| 
| 
| 
| 
| | jump into these scopes, and the cleanup-entering code sometimes wants
to do some operations first (e.g. a GEP), which can leave us with
unparented IR.
llvm-svn: 154684 | 
| | 
| 
| 
| | llvm-svn: 154678 | 
| | 
| 
| 
| 
| 
| 
| | - Handle unions
  - Handle C++ classes
llvm-svn: 154664 | 
| | 
| 
| 
| 
| 
| | GNU __atomic builtins.
llvm-svn: 154659 | 
| | 
| 
| 
| 
| 
| | and add a test case.
llvm-svn: 154653 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | __atomic_test_and_set, __atomic_clear, plus a pile of undocumented __GCC_*
predefined macros.
Implement library fallback for __atomic_is_lock_free and
__c11_atomic_is_lock_free, and implement __atomic_always_lock_free.
Contrary to their documentation, GCC's __atomic_fetch_add family don't
multiply the operand by sizeof(T) when operating on a pointer type.
libstdc++ relies on this quirk. Remove this handling for all but the
__c11_atomic_fetch_add and __c11_atomic_fetch_sub builtins.
Contrary to their documentation, __atomic_test_and_set and __atomic_clear
take a first argument of type 'volatile void *', not 'void *' or 'bool *',
and __atomic_is_lock_free and __atomic_always_lock_free have an argument
of type 'const volatile void *', not 'void *'.
With this change, libstdc++4.7's <atomic> passes libc++'s atomic test suite,
except for a couple of libstdc++ bugs and some cases where libc++'s test
suite tests for properties which implementations have latitude to vary.
llvm-svn: 154640 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | in general (such an atomic has boolean representation) and
specifically for IR generation of __c11_atomic_init. The latter also
means actually using initialization semantics for this initialization,
rather than just creating a store.
On a related note, make sure we actually put in non-atomic-to-atomic
conversions when performing an implicit conversion sequence. IR
generation is far too kind here, but we still want the ASTs to make
sense.
llvm-svn: 154612 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | This is not quite sufficient for libstdc++'s <atomic>: we still need
__atomic_test_and_set and __atomic_clear, and may need a more complete
__atomic_is_lock_free implementation.
We are also missing an implementation of __atomic_always_lock_free,
__atomic_nand_fetch, and __atomic_fetch_nand, but those aren't needed
for libstdc++.
llvm-svn: 154579 | 
| | 
| 
| 
| 
| 
| 
| 
| | FunctionDecl::Create calls as well.
rdar://11079003
llvm-svn: 154578 |