| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The MS ABI has a notion of 'required alignment' for fields; this
alignment supercedes pragma pack directives.
MSVC takes into account alignment attributes on typedefs when
determining whether or not a field has a certain required alignment.
Do the same in clang by tracking whether or not we saw such an attribute
when calculating the type's bitwidth and alignment.
This fixes PR20418.
Reviewers: rnk
Differential Revision: http://reviews.llvm.org/D4714
llvm-svn: 214274
|
|
|
|
|
|
| |
if the two arguments are equal.
llvm-svn: 214008
|
|
|
|
|
|
| |
each different enum value here.
llvm-svn: 213996
|
|
|
|
|
|
|
| |
We no longer plan to use __except_hander3 and rather use custom
personality functions per __try block.
llvm-svn: 213971
|
|
|
|
|
|
|
| |
diffing. This removes extra "struct"/"class" in the type names and gives
"bool" instead of "_Bool" for booleans.
llvm-svn: 213912
|
|
|
|
|
|
| |
printing of other types.
llvm-svn: 213902
|
|
|
|
|
|
| |
directive.
llvm-svn: 213846
|
|
|
|
|
|
| |
directive.
llvm-svn: 213842
|
|
|
|
| |
llvm-svn: 213840
|
|
|
|
|
|
|
| |
isOnePastTheEnd on an invalid designator, so assert and push the check into the
one caller that wasn't already checking.
llvm-svn: 213820
|
|
|
|
|
|
|
|
|
|
|
| |
The class seems to have an invariant that Entries is non-empty if
Invalid is false. It appears this method was previously private, and
all internal uses checked Invalid. Now there is an external caller, so
check Invalid to avoid array OOB underflow.
Fixes PR20420.
llvm-svn: 213816
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The main subtlety here is that the Darwin tools still need to be given "-arch
arm64" rather than "-arch aarch64". Fortunately this already goes via a custom
function to handle weird edge-cases in other architectures, and it tested.
I removed a few arm64_be tests because that really isn't an interesting thing
to worry about. No-one using big-endian is also referring to the target as
arm64 (at least as far as toolchains go). Mostly they date from when arm64 was
a separate target and we *did* need a parallel name simply to test it at all.
Now aarch64_be is sufficient.
llvm-svn: 213744
|
|
|
|
|
|
| |
directive.
llvm-svn: 213735
|
|
|
|
|
|
| |
directive.
llvm-svn: 213728
|
|
|
|
| |
llvm-svn: 213719
|
|
|
|
|
|
|
|
| |
being declared, not at the end. When pretty-printing a non-type template
parameter, put the name of the parameter in the middle of the type, not at the
end.
llvm-svn: 213718
|
|
|
|
|
|
| |
directive.
llvm-svn: 213717
|
|
|
|
| |
llvm-svn: 213639
|
|
|
|
| |
llvm-svn: 213616
|
|
|
|
| |
llvm-svn: 213613
|
|
|
|
| |
llvm-svn: 213611
|
|
|
|
|
|
| |
a template argument.
llvm-svn: 213609
|
|
|
|
| |
llvm-svn: 213512
|
|
|
|
| |
llvm-svn: 213510
|
|
|
|
|
|
|
|
| |
This field is never inspected in the object state initialized by this
constructor; however, initializing it seems reasonable, since it has
a meaningful value.
llvm-svn: 213499
|
|
|
|
|
|
|
| |
The enum is part of ArrayType, so there is no functional change, but comparing
to ArrayType::Static for non-VLAs makes more sense.
llvm-svn: 213446
|
|
|
|
|
|
|
|
|
|
| |
C99 array parameters can have index-type CVR qualifiers, and the TypePrinter
should print them when present (and we were not for constant-sized arrays).
Otherwise, we'd drop the restrict in:
int foo(int a[restrict static 3]) { ... }
llvm-svn: 213445
|
|
|
|
|
|
|
|
|
| |
Assigns indices to try blocks. These indices will used in constructing
tables that the mscrt function __except_handler3 reads during SEH.
Testing will occur once we actually emit the tables, in a subsequent
patch.
llvm-svn: 213437
|
|
|
|
|
|
|
|
|
|
|
| |
In C99, an array parameter declarator might have the form: direct-declarator
'[' 'static' type-qual-list[opt] assign-expr ']'
and when the size of the array is a constant, don't omit the static keyword
when printing the type. Also, in the VLA case, put a space after the static
keyword (some assignment expression must follow it).
llvm-svn: 213424
|
|
|
|
|
|
|
|
| |
is unused (this is match behavior when property-dot syntax is used to
use same getter). rdar://17514245
Patch by Anders Carlsson with minor refactoring by me.
llvm-svn: 213423
|
|
|
|
| |
llvm-svn: 213363
|
|
|
|
| |
llvm-svn: 213360
|
|
|
|
| |
llvm-svn: 213355
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
members (PR20140)
This makes us emit dllexported in-class initialized static data members (which
are treated as definitions in MSVC), even when they're not referenced.
It also makes their special linkage reflected in the GVA linkage instead of
getting massaged in CodeGen.
Differential Revision: http://reviews.llvm.org/D4563
llvm-svn: 213304
|
|
|
|
|
|
|
|
| |
This is a follow-up to an IRC conversation with Richard last night; __assume
does not evaluate its argument, and so the argument should not contribute to
whether (__assume(e), constant) can be used where a constant is required.
llvm-svn: 213267
|
|
|
|
| |
llvm-svn: 213262
|
|
|
|
| |
llvm-svn: 213257
|
|
|
|
| |
llvm-svn: 213237
|
|
|
|
| |
llvm-svn: 213232
|
|
|
|
|
|
|
|
|
|
|
|
| |
-- a constructor list initialization that unpacked an initializer list into
constructor arguments and
-- a list initialization that created as std::initializer_list and passed it
as the first argument to a constructor
in the AST. Use this flag while instantiating templates to provide the right
semantics for the resulting initialization.
llvm-svn: 213224
|
|
|
|
|
|
| |
Only alignment is changed, not required alignment.
llvm-svn: 213217
|
|
|
|
|
|
| |
for my last patch. // rdar://17631257
llvm-svn: 213185
|
|
|
|
|
|
|
| |
With this change the memory of buffer in NestedNameSpecifierLocBuilder
is allocated in one place. It also prevents from allocation of tiny blocks.
llvm-svn: 213178
|
|
|
|
|
|
|
|
|
| |
to be applied to class or protocols. This will direct IRGen
for Objective-C metadata to use the new name in various places
where class and protocol names are needed.
rdar:// 17631257
llvm-svn: 213167
|
|
|
|
|
|
|
|
|
|
| |
We would correctly insert sufficiently aligned padding between vbases
when our leading base was empty, however we would neglect to increase
the required alignment of the most derived class.
This fixes PR20315.
llvm-svn: 213123
|
|
|
|
|
|
| |
No functionality changed, it just makes the code a little less brittle.
llvm-svn: 213122
|
|
|
|
|
|
|
|
|
|
|
| |
No functionality changed, just some cleanups:
- Switch some loops to range-based for.
- Name some iterators with a more creative name than "I".
- Reduce dependence on auto. Does RD->bases() give you a list of
CXXBaseSpecifiers or CXXRecordDecls? It's more clear to just say which
upfront.
llvm-svn: 213121
|
|
|
|
|
|
| |
range-based for loops instead. No functional changes intended.
llvm-svn: 213095
|
|
|
|
|
|
| |
No funcionality changed, just a simplification of the existing code.
llvm-svn: 213044
|
|
|
|
|
|
|
|
|
|
|
| |
While we previously supported __uuidof applied to a template
specialization, we would only find the uuid attribute if it was applied
to the template argument. We would erroneously ignore the uuid
attribute on the specialization itself.
This is required to parse Windows Runtime C++ Template Library headers.
llvm-svn: 213016
|