| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
| |
rdar://8560647
llvm-svn: 120650
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
a global is larger than 32 bytes and has fewer than 6 non-zero values in the
initializer. Previously we'd turn something like this:
char test8(int X) {
char str[10000] = "abc";
into a 10K global variable which we then memcpy'd from. Now we generate:
%str = alloca [10000 x i8], align 16
%tmp = getelementptr inbounds [10000 x i8]* %str, i64 0, i64 0
call void @llvm.memset.p0i8.i64(i8* %tmp, i8 0, i64 10000, i32 16, i1 false)
store i8 97, i8* %tmp, align 16
%0 = getelementptr [10000 x i8]* %str, i64 0, i64 1
store i8 98, i8* %0, align 1
%1 = getelementptr [10000 x i8]* %str, i64 0, i64 2
store i8 99, i8* %1, align 2
Which is much smaller in space and also likely faster.
This is part of PR279
llvm-svn: 120645
|
| |
|
|
|
|
|
|
| |
ObjCPropertyRefExpr
into the latter.
llvm-svn: 120643
|
| |
|
|
| |
llvm-svn: 120555
|
| |
|
|
|
|
|
|
| |
http://llvm.org/bugs/show_bug.cgi?id=279#c3 better.
No functionality change yet.
llvm-svn: 120530
|
| |
|
|
|
|
| |
using ConstantInt::get.
llvm-svn: 120527
|
| |
|
|
|
|
|
| |
refer to opaque types, they must be held via PATypeHolders. I'm
not sure why this hasn't blown up before.
llvm-svn: 120491
|
| |
|
|
| |
llvm-svn: 120489
|
| |
|
|
|
|
|
| |
literal declaration caused crash in CodeGen.
This patch fixes it. pr8707
llvm-svn: 120486
|
| |
|
|
| |
llvm-svn: 120433
|
| |
|
|
|
|
| |
about the reliability of this yet.
llvm-svn: 120422
|
| |
|
|
|
|
| |
type info for its component types
llvm-svn: 120401
|
| |
|
|
| |
llvm-svn: 120297
|
| |
|
|
| |
llvm-svn: 120268
|
| |
|
|
| |
llvm-svn: 120257
|
| |
|
|
| |
llvm-svn: 120252
|
| |
|
|
| |
llvm-svn: 120251
|
| |
|
|
| |
llvm-svn: 120250
|
| |
|
|
| |
llvm-svn: 120249
|
| |
|
|
| |
llvm-svn: 120153
|
| |
|
|
| |
llvm-svn: 120140
|
| |
|
|
| |
llvm-svn: 120133
|
| |
|
|
| |
llvm-svn: 120132
|
| |
|
|
| |
llvm-svn: 120129
|
| |
|
|
| |
llvm-svn: 120118
|
| |
|
|
|
|
| |
for anonymous tag types.
llvm-svn: 120113
|
| |
|
|
| |
llvm-svn: 120112
|
| |
|
|
|
|
| |
a name to the type.
llvm-svn: 120110
|
| |
|
|
| |
llvm-svn: 120109
|
| |
|
|
| |
llvm-svn: 120108
|
| |
|
|
|
|
| |
exist. This matches ASTContext::getASTRecordLayout and is less confusing.
llvm-svn: 120107
|
| |
|
|
| |
llvm-svn: 120106
|
| |
|
|
| |
llvm-svn: 120084
|
| |
|
|
|
|
| |
that aren't i8 arrays.
llvm-svn: 119980
|
| |
|
|
| |
llvm-svn: 119957
|
| |
|
|
| |
llvm-svn: 119956
|
| |
|
|
| |
llvm-svn: 119955
|
| |
|
|
| |
llvm-svn: 119924
|
| |
|
|
| |
llvm-svn: 119814
|
| |
|
|
|
|
|
| |
types was not being generated for objc pointers.
// rdar://8681766.
llvm-svn: 119751
|
| |
|
|
|
|
|
|
|
|
|
| |
-Move the stuff of Diagnostic related to creating/querying diagnostic IDs into a new DiagnosticIDs class.
-DiagnosticIDs can be shared among multiple Diagnostics for multiple translation units.
-The rest of the state in Diagnostic object is considered related and tied to one translation unit.
-Have Diagnostic point to the SourceManager that is related with. Diagnostic can now accept just a
SourceLocation instead of a FullSourceLoc.
-Reflect the changes to various interfaces.
llvm-svn: 119730
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
store it on the expression node. Also store an "object kind",
which distinguishes ordinary "addressed" l-values (like
variable references and pointer dereferences) and bitfield,
@property, and vector-component l-values.
Currently we're not using these for much, but I aim to switch
pretty much everything calculating l-valueness over to them.
For now they shouldn't necessarily be trusted.
llvm-svn: 119685
|
| |
|
|
| |
llvm-svn: 119678
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
of all the lines of the inline asm. With the refactoring and enhancement
of the backend, we can now reports errors on the correct source line when
an asm contains multiple lines of text. For something like this:
void foo() {
asm("push %rax\n"
".code32\n");
}
we used to get this: (note that the line 4 in t.c isn't helpful)
t.c:4:7: error: warning: ignoring directive for now
asm("push %rax\n"
^
<inline asm>:2:1: note: instantiated into assembly here
.code32
^
now we get:
t.c:5:8: error: warning: ignoring directive for now
".code32\n"
^
<inline asm>:2:1: note: instantiated into assembly here
.code32
^
Note that we're pointing to line 5 properly now. This implements
rdar://7839391 - inline asm errors should point to the right line in the asm
and makes the error message in PR8595 much less confusing.
llvm-svn: 119489
|
| |
|
|
| |
llvm-svn: 119487
|
| |
|
|
| |
llvm-svn: 119464
|
| |
|
|
|
|
| |
about a __block cxx object.
llvm-svn: 119411
|
| |
|
|
|
|
| |
branches. Fixes PR8623.
llvm-svn: 119408
|
| |
|
|
|
|
|
| |
case based on CodeGen/volatile-1.c which tests the current C++
semantics, and note the many, many places we fall short of them.
llvm-svn: 119402
|
| |
|
|
|
|
|
| |
issue with runtime which I am discussing it with Blaine.
This is wip (so no test yet).
llvm-svn: 119368
|