| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 134880
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
is called whenever a tag type is completed. We previously used that
as the sign to layout the codegen representation for the tag type,
which worked but meant that we laid out *every* completed type, whether
it was used or not.
Now we just lay out the type if we've already seen it somehow else.
This means that we lay out types we've used but haven't seen a body
for, but we don't lay out tons of stuff that noone cares about.
llvm-svn: 134866
|
| |
|
|
|
|
|
|
| |
adjustment, allowing
us to revert the other half of r134860. Now things are back to a relatively tidy state.
llvm-svn: 134865
|
| |
|
|
| |
llvm-svn: 134864
|
| |
|
|
|
|
|
|
|
|
| |
caused us to skip layout out a function accurately. If
so, flush the type cache for both the function and struct
case to ensure that any pointers to the functions get
recomputed. This is overconservative, but with this patch
clang can build itself again.
llvm-svn: 134863
|
| |
|
|
|
|
|
| |
type, even when in the struct case. This was one root issue that was
causing type mismatches throughout the compiler.
llvm-svn: 134862
|
| |
|
|
|
|
|
|
|
|
| |
conservative when converting a functiontype to IR when in a "pointer within
a struct" context. This has the unfortunate sideeffect of compiling all
function pointers inside of structs into "{}*" which, though correct, is
ugly. This has the positive side effect of being correct, and it is pretty
straight-forward to improve on this.
llvm-svn: 134861
|
| |
|
|
|
|
|
| |
do an explicit bitcast to whatever ConvertType produces. This will
go with the next patch.
llvm-svn: 134860
|
| |
|
|
| |
llvm-svn: 134855
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
it is a predicate, not an action. Change the return type to be a bool,
not the incomplete member. Enhace it to detect the recursive compilation
case, allowing us to compile Eli's testcase on llvmdev:
struct T {
struct T (*p)(void);
} t;
into:
%struct.T = type { {}* }
@t = common global %struct.T zeroinitializer, align 8
llvm-svn: 134853
|
| |
|
|
|
|
|
| |
the enum has already been converted. If not, there cannot be any types
built on top of it, so there is no need to flush the cache.
llvm-svn: 134841
|
| |
|
|
| |
llvm-svn: 134831
|
| |
|
|
|
|
|
|
| |
expecting so much concentrated oddity on what seemed like a
trivial feature. Thanks to François Pichet for doing the
MSVC legwork here.
llvm-svn: 134813
|
| |
|
|
| |
llvm-svn: 134785
|
| |
|
|
|
|
|
|
|
|
|
|
| |
- Emit default-initialization of arrays that were partially initialized
with initializer lists with a loop, rather than emitting the default
initializer N times;
- support destroying VLAs of non-trivial type, although this is not
yet exposed to users; and
- support the partial destruction of arrays initialized with
initializer lists when an initializer throws an exception.
llvm-svn: 134784
|
| |
|
|
|
|
|
|
|
|
|
|
| |
should not imply -mno-sse.
Note that because we don't usually touch the MMX registers anyway, all -mno-mmx needs to do is tweak the x86-32 calling convention a little for vectors that look like MMX vectors, and prevent the definition of __MMX__.
clang doesn't actually stop the user from using MMX inline asm operands or MMX builtins in -mno-mmx mode; as a QOI issue, it would be nice to diagnose, but I doubt it really matters much.
<rdar://problem/9694837>
llvm-svn: 134770
|
| |
|
|
| |
llvm-svn: 134765
|
| |
|
|
| |
llvm-svn: 134761
|
| |
|
|
| |
llvm-svn: 134754
|
| |
|
|
| |
llvm-svn: 134743
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the normal case.
Before, for this:
$ cat t.c
int test(int x) { return x * 2; }
We would get this:
addl %edi, %edi
jno LBB0_2
## BB#1: ## %overflow
ud2
LBB0_2: ## %nooverflow
movl %edi, %eax
popq %rbp
ret
Now we get this:
addl %edi, %edi
jo LBB0_2
## BB#1: ## %nooverflow
movl %edi, %eax
popq %rbp
ret
LBB0_2: ## %overflow
ud2
<rdar://problem/8283919>
llvm-svn: 134642
|
| |
|
|
|
|
| |
so roll it out.
llvm-svn: 134638
|
| |
|
|
|
|
| |
function. Fixes PR10233!
llvm-svn: 134634
|
| |
|
|
|
|
| |
required to support the transitional ABI.
llvm-svn: 134612
|
| |
|
|
|
|
| |
pure-nonfragile ABI for both ARC and GC mode.
llvm-svn: 134611
|
| |
|
|
|
|
|
|
|
|
|
|
| |
where we have an immediate need of a retained value.
As an exception, don't do this when the call is made as the immediate
operand of a __bridge retain. This is more in the way of a workaround
than an actual guarantee, so it's acceptable to be brittle here.
rdar://problem/9504800
llvm-svn: 134605
|
| |
|
|
| |
llvm-svn: 134589
|
| |
|
|
| |
llvm-svn: 134536
|
| |
|
|
|
|
|
| |
exception in Objective-C; in Objective-C++ we still use std::terminate().
This is only available in very recent runtimes.
llvm-svn: 134456
|
| |
|
|
|
|
|
|
|
|
|
|
| |
structure to hold inferred information, then propagate each invididual
bit down to -cc1. Separate the bits of "supports weak" and "has a native
ARC runtime"; make the latter a CodeGenOption.
The tool chain is still driving this decision, because it's the place that
has the required deployment target information on Darwin, but at least it's
better-factored now.
llvm-svn: 134453
|
| |
|
|
|
|
| |
hardwired into the default pass list.
llvm-svn: 134445
|
| |
|
|
|
|
| |
The start of some work on getting -mno-mmx working the way we want it to.
llvm-svn: 134300
|
| |
|
|
|
|
| |
Fixes rdar://9714064
llvm-svn: 134292
|
| |
|
|
|
|
|
| |
initializer. Previously, we only used guard variables for weak static
data members. Fixes <rdar://problem/9692249>.
llvm-svn: 134266
|
| |
|
|
|
|
|
|
| |
trivial default constructors. This generated-code regression was
caused by r131796, which had simplified the handling of default
initialization in Sema. Fixes <rdar://problem/9694300>.
llvm-svn: 134260
|
| |
|
|
| |
llvm-svn: 134140
|
| |
|
|
| |
llvm-svn: 134128
|
| |
|
|
|
|
|
| |
accessibility of an initializer which is a compound
statement. // rdar://9694706
llvm-svn: 134091
|
| |
|
|
|
|
| |
replacing -freset-local-blocks. // rdar://9227352
llvm-svn: 134082
|
| |
|
|
| |
llvm-svn: 134065
|
| |
|
|
|
|
|
|
|
|
| |
address takes up an integer register (if one is available). Make sure the x86-64 ABI implementation takes that into account properly.
The fixed implementation is compatible with the implementation both gcc and llvm-gcc use.
rdar://9686430 . (This is the issue that was reported in the thread "[LLVMdev] Segfault calling LLVM libs from a clang-compiled executable".)
llvm-svn: 134059
|
| |
|
|
| |
llvm-svn: 134050
|
| |
|
|
|
|
|
| |
wipe out stack blocks when they go out of scope.
// rdar://9227352
llvm-svn: 134045
|
| |
|
|
|
|
| |
Fixes rdar://9281377
llvm-svn: 134016
|
| |
|
|
|
|
|
| |
a vector for collection. Use iterators where needed instead.
// rdar://6817577
llvm-svn: 134015
|
| |
|
|
| |
llvm-svn: 133943
|
| |
|
|
| |
llvm-svn: 133931
|
| |
|
|
| |
llvm-svn: 133864
|
| |
|
|
| |
llvm-svn: 133861
|
| |
|
|
|
|
| |
by removing the redundant type parameter.
llvm-svn: 133860
|