| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
| |
is right --- shouldn't there be a TypeLoc in here somewhere? ---
but at least it doesn't have a redundant QualType and a broken
children() method.
Noticed this while doing things in serialization.
llvm-svn: 135257
|
|
|
|
|
|
|
| |
to prevent recursive compilation problems. This fixes a failure of CodeGen/decl.c
on x86-32 targets that don't fill in the coerce-to type.
llvm-svn: 135256
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
types. Fore xample, we used to lower:
struct bar { int a; };
struct foo {
void (*FP)(struct bar);
} G;
to:
%struct.foo = type { {}* }
since the function pointer would cause recursive translation of bar and
we didn't know if that would get us into trouble. We are now smart enough
to know that it is fine, so we get this type instead:
%struct.foo = type { void (i32)* }
Codegen still needs to be prepared for uncooperative types at any place,
which is why I let the maximally uncooperative code sit around for awhile to
help shake out the bugs.
llvm-svn: 135244
|
|
|
|
|
|
|
|
| |
to represent a fully-substituted non-type template parameter.
This should improve source fidelity, as well as being generically
useful for diagnostics and such.
llvm-svn: 135243
|
|
|
|
|
|
| |
function in LLVM does.
llvm-svn: 135155
|
|
|
|
|
|
| |
failures.
llvm-svn: 135091
|
|
|
|
| |
llvm-svn: 135083
|
|
|
|
| |
llvm-svn: 135054
|
|
|
|
|
|
| |
them, too.
llvm-svn: 135038
|
|
|
|
| |
llvm-svn: 135036
|
|
|
|
|
|
| |
partial destruction.
llvm-svn: 135033
|
|
|
|
|
|
|
| |
i32. They almost always end up this way in the end anyway, and if we get
lucky, this avoids generating some bitcasts.
llvm-svn: 135032
|
|
|
|
|
|
| |
like arguments. Thanks PR10337! :)
llvm-svn: 135030
|
|
|
|
| |
llvm-svn: 135029
|
|
|
|
|
|
|
| |
storage duration, then explicitly exempt ownership-qualified
types from it.
llvm-svn: 135028
|
|
|
|
|
|
| |
which implicitly makes it EH-safe as well.
llvm-svn: 135025
|
|
|
|
|
|
|
|
| |
the complete destructor and then invoke the global delete
operator. Previously, we would invoke the deleting destructor, which
calls the wrong delete operator. Fixes PR10341.
llvm-svn: 135021
|
|
|
|
| |
llvm-svn: 135004
|
|
|
|
|
|
| |
of flags. No functionality change.
llvm-svn: 134997
|
|
|
|
| |
llvm-svn: 134995
|
|
|
|
| |
llvm-svn: 134989
|
|
|
|
|
|
| |
and kill a lot of redundant code.
llvm-svn: 134988
|
|
|
|
|
|
| |
StructType::get() and TargetData::getIntPtrType().
llvm-svn: 134982
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
builds introduced in r134972:
lib/CodeGen/CGExpr.cpp:1294:7: error: no matching function for call to 'EmitBitCastOfLValueToProperType'
lib/CodeGen/CGExpr.cpp:1278:1: note: candidate function not viable: no known conversion from 'CGBuilderTy' (aka 'IRBuilder<false>') to 'llvm::IRBuilder<> &' for 1st argument
This fixes the issue by passing CodeGenFunction on down, and using its
builder directly rather than passing just the builder down.
This may not be the best / cleanest fix, Chris please review. It at
least fixes builds.
llvm-svn: 134977
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
uncompleted struct types. We now do what llvm-gcc does and compile
them into [i8 x 0]. If the type is later completed, we make sure that
it is appropriately cast.
We compile the terrible example to something like this now:
%struct.A = type { i32, i32, i32 }
@g = external global [0 x i8]
define void @_Z1fv() nounwind {
entry:
call void @_Z3fooP1A(%struct.A* bitcast ([0 x i8]* @g to %struct.A*))
ret void
}
declare void @_Z3fooP1A(%struct.A*)
define %struct.A* @_Z2f2v() nounwind {
entry:
ret %struct.A* getelementptr inbounds ([0 x %struct.A]* bitcast ([0 x i8]* @g to [0 x %struct.A]*), i32 0, i64 1)
}
llvm-svn: 134972
|
|
|
|
|
|
| |
fixes the -m32 build of oggenc.
llvm-svn: 134971
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
us to compile
stuff like this:
typedef struct {
int x, y, z;
} foo_t;
foo_t g;
into:
%"struct.<anonymous>" = type { i32, i32, i32 }
we now get:
%struct.foo_t = type { i32, i32, i32 }
This doesn't change the behavior of the compiler, but makes the IR much easier to read.
llvm-svn: 134969
|
|
|
|
| |
llvm-svn: 134966
|
|
|
|
|
|
| |
expectations in EmitCall. Next patch will take this further.
llvm-svn: 134962
|
|
|
|
| |
llvm-svn: 134952
|
|
|
|
|
|
| |
passing.
llvm-svn: 134951
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
an assert on Darwin llvm-gcc builds.
Assertion failed: (castIsValid(op, S, Ty) && "Invalid cast!"), function Create, file /Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.llvm-gcc-i386-darwin9-RA/llvm.src/lib/VMCore/Instructions.cpp, line 2067.
etc.
http://smooshlab.apple.com:8013/builders/llvm-gcc-i386-darwin9-RA/builds/2354
--- Reverse-merging r134888 into '.':
U lib/CodeGen/CodeGenModule.cpp
llvm-svn: 134950
|
|
|
|
|
|
| |
which is: { <4 x float>, <4 x float> } should continue to go through memory.
llvm-svn: 134946
|
|
|
|
|
|
| |
people write useful cleanup classes.
llvm-svn: 134942
|
|
|
|
|
|
| |
add one more testcase.
llvm-svn: 134934
|
|
|
|
| |
llvm-svn: 134913
|
|
|
|
| |
llvm-svn: 134893
|
|
|
|
|
|
|
|
|
|
|
| |
- an off-by-one error in emission of irregular array limits for
InitListExprs
- use an EH partial-destruction cleanup within the normal
array-destruction cleanup
- get the branch destinations right for the empty check
Also some refactoring which unfortunately obscures these changes.
llvm-svn: 134890
|
|
|
|
| |
llvm-svn: 134888
|
|
|
|
| |
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
|