| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
| |
with return values, improving stuff that returns __m128 etc.
llvm-svn: 109731
|
| |
|
|
| |
llvm-svn: 109730
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
for return values too. Instead of compiling something like:
struct foo {
int *X;
float *Y;
};
struct foo test(struct foo *P) { return *P; }
to:
%1 = type { i64, i64 }
define %1 @test(%struct.foo* %P) nounwind {
entry:
%retval = alloca %struct.foo, align 8 ; <%struct.foo*> [#uses=2]
%P.addr = alloca %struct.foo*, align 8 ; <%struct.foo**> [#uses=2]
store %struct.foo* %P, %struct.foo** %P.addr
%tmp = load %struct.foo** %P.addr ; <%struct.foo*> [#uses=1]
%tmp1 = bitcast %struct.foo* %retval to i8* ; <i8*> [#uses=1]
%tmp2 = bitcast %struct.foo* %tmp to i8* ; <i8*> [#uses=1]
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %tmp1, i8* %tmp2, i64 16, i32 8, i1 false)
%0 = bitcast %struct.foo* %retval to %1* ; <%1*> [#uses=1]
%1 = load %1* %0, align 1 ; <%1> [#uses=1]
ret %1 %1
}
We now get the result more type safe, with:
define %struct.foo @test(%struct.foo* %P) nounwind {
entry:
%retval = alloca %struct.foo, align 8 ; <%struct.foo*> [#uses=2]
%P.addr = alloca %struct.foo*, align 8 ; <%struct.foo**> [#uses=2]
store %struct.foo* %P, %struct.foo** %P.addr
%tmp = load %struct.foo** %P.addr ; <%struct.foo*> [#uses=1]
%tmp1 = bitcast %struct.foo* %retval to i8* ; <i8*> [#uses=1]
%tmp2 = bitcast %struct.foo* %tmp to i8* ; <i8*> [#uses=1]
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %tmp1, i8* %tmp2, i64 16, i32 8, i1 false)
%0 = load %struct.foo* %retval ; <%struct.foo> [#uses=1]
ret %struct.foo %0
}
That memcpy is completely terrible, but I don't know how to fix it.
llvm-svn: 109729
|
| |
|
|
|
|
|
| |
improve codegen for vaarg or something, because its codepath is
getting preferred types now.
llvm-svn: 109728
|
| |
|
|
| |
llvm-svn: 109727
|
| |
|
|
|
|
|
| |
compute its own preferred types instead of having CGT compute
them then pass them (circuituously) down into ABIInfo.
llvm-svn: 109726
|
| |
|
|
| |
llvm-svn: 109725
|
| |
|
|
| |
llvm-svn: 109724
|
| |
|
|
|
|
|
| |
things as TargetData, ASTContext, LLVMContext etc. Stop passing
them through so many APIs.
llvm-svn: 109723
|
| |
|
|
|
|
| |
This will simplify a bunch of code, coming up next.
llvm-svn: 109722
|
| |
|
|
|
|
| |
and CharacterLiteral. Fixes an assertion failure reported in PR 7675.
llvm-svn: 109719
|
| |
|
|
|
|
| |
fixes a false path issue reported in <rdar://problem/8243408> and also spurs another cause where the idempotent operations checker fires.
llvm-svn: 109710
|
| |
|
|
| |
llvm-svn: 109709
|
| |
|
|
| |
llvm-svn: 109708
|
| |
|
|
|
|
| |
checks are already done within getConjuredSymbolVal() itself.
llvm-svn: 109707
|
| |
|
|
|
|
|
| |
for AST nodes that aren't actually out-of-line (i.e., require a
nested-name-specifier). Fixes <rdar://problem/8204126>.
llvm-svn: 109704
|
| |
|
|
|
|
|
|
| |
possible. This improves the example to pass <4 x float> instead of
<2 x double> but we still get awful code, and still don't get the
return value right.
llvm-svn: 109700
|
| |
|
|
| |
llvm-svn: 109699
|
| |
|
|
|
|
|
| |
block's synthesized constructor initalizer list.
Fixes radar 8240371.
llvm-svn: 109698
|
| |
|
|
|
|
| |
names used by gcc in debug info. This makes gdb testsuite happy.
llvm-svn: 109694
|
| |
|
|
|
|
| |
remove some now-dead code.
llvm-svn: 109690
|
| |
|
|
|
|
| |
don't get errors similar to PR7714 on the return path.
llvm-svn: 109689
|
| |
|
|
|
|
| |
and making Get8ByteTypeAtOffset always succeed and documented.
llvm-svn: 109685
|
| |
|
|
|
|
| |
qualified name. Fixes <rdar://problem/8231724>.
llvm-svn: 109682
|
| |
|
|
|
|
|
| |
x86-64 abi. This also improves codegen as well. Some refactoring is needed of
this code.
llvm-svn: 109681
|
| |
|
|
| |
llvm-svn: 109680
|
| |
|
|
|
|
|
| |
condition is not of enumeration type, provide code-completion results
containing all values of integral or enumeral type.
llvm-svn: 109677
|
| |
|
|
| |
llvm-svn: 109675
|
| |
|
|
|
|
| |
completely messed up source locations and thus caused a crash whenever a diagnostic was emitted in chained PCH files.
llvm-svn: 109660
|
| |
|
|
|
|
|
| |
block returns structs. Fies radar 8241648.
Executable test added to llvm test suite.
llvm-svn: 109620
|
| |
|
|
| |
llvm-svn: 109607
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
parenthesized, unlike in C++, e.g.,
C has: typeof ( expression)
C++ has: typeof unary-expression
So, once we've parsed a parenthesized expression after typeof, we
should only go on to parse the postfix expression suffix if we're in
C++. Fixes <rdar://problem/8237491>.
llvm-svn: 109606
|
| |
|
|
|
|
|
|
| |
__debug overflow_stack'.
- For testing crash reporting stuff... you'd think I could just use some C++
code but Doug keeps fixing stuff!
llvm-svn: 109587
|
| |
|
|
|
|
|
| |
rebuilder, i.e., remove a silly short-sighted hack from long
ago. Thanks to Abramo Bagnara for the test case/bug report!
llvm-svn: 109583
|
| |
|
|
|
|
|
|
| |
dependent bases, construct a dependent nested-name-specifier rather
than complaining that the name could not be found within the current
instantiation itself. Fixes PR7725.
llvm-svn: 109582
|
| |
|
|
|
|
| |
a fixme mentioning the simplification when CallSite can clone itself
llvm-svn: 109575
|
| |
|
|
|
|
| |
Tested by mi1-var-obj.exp in gdb testsuite.
llvm-svn: 109571
|
| |
|
|
|
|
|
|
|
| |
enclosing normal cleanup, not the top of the EH stack. I'm *really*
surprised this hasn't been causing more problems.
Fixes rdar://problem/8231514.
llvm-svn: 109569
|
| |
|
|
|
|
|
|
|
| |
- Allowed reporting of dead macros
- Added path walking function to search for false positives in conditional statements
- Updated some affected tests
- Added some false positive test cases
llvm-svn: 109561
|
| |
|
|
|
|
| |
their own CheckerHelpers file.
llvm-svn: 109560
|
| |
|
|
|
|
| |
PCHs; tests for this to follow.
llvm-svn: 109554
|
| |
|
|
| |
llvm-svn: 109550
|
| |
|
|
|
|
|
|
|
|
|
|
| |
CodeGenModule::MayDeferGeneration into a new function,
DeclIsRequiredFunctionOrFileScopedVar.
This function is part of the public CodeGen interface since it's essentially a CodeGen predicate that is also
needed by the PCH mechanism to determine whether a decl needs to be deserialized during PCH loading for codegen purposes.
This fixes current (and avoids future) codegen-from-PCH bugs.
llvm-svn: 109546
|
| |
|
|
| |
llvm-svn: 109537
|
| |
|
|
| |
llvm-svn: 109535
|
| |
|
|
| |
llvm-svn: 109532
|
| |
|
|
|
|
| |
binary operator for clearer error reporting. Also remove the 'Idempotent operation' prefix in messages; it's redundant since the bug type is the same.
llvm-svn: 109527
|
| |
|
|
|
|
| |
-ast-print show the decls from the dependent PCH.
llvm-svn: 109524
|
| |
|
|
| |
llvm-svn: 109517
|
| |
|
|
| |
llvm-svn: 109507
|