| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
| |
machine code generation. That's a good idea, so I made it so.
llvm-svn: 104655
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A Register with subregisters must also provide SubRegIndices for adressing the
subregisters. TableGen automatically inherits indices for sub-subregisters to
minimize typing.
CompositeIndices may be specified for the weirder cases such as the XMM sub_sd
index that returns the same register, and ARM NEON Q registers where both D
subregs have ssub_0 and ssub_1 sub-subregs.
It is now required that all subregisters are named by an index, and a future
patch will also require inherited subregisters to be named. This is necessary to
allow composite subregister indices to be reduced to a single index.
llvm-svn: 104654
|
| |
|
|
|
|
| |
Fixing http://llvm.org/bugs/show_bug.cgi?id=7222.
llvm-svn: 104653
|
| |
|
|
|
|
| |
Fixing http://llvm.org/bugs/show_bug.cgi?id=7221.
llvm-svn: 104652
|
| |
|
|
| |
llvm-svn: 104651
|
| |
|
|
| |
llvm-svn: 104650
|
| |
|
|
|
|
| |
This is used to track variable information.
llvm-svn: 104649
|
| |
|
|
| |
llvm-svn: 104648
|
| |
|
|
| |
llvm-svn: 104646
|
| |
|
|
| |
llvm-svn: 104645
|
| |
|
|
| |
llvm-svn: 104644
|
| |
|
|
|
|
| |
as well.
llvm-svn: 104642
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If you have a setjmp/longjmp situation, it's possible for stack slot coloring to
reuse a stack slot before it's really dead. For instance, if we have something
like this:
1: y = g;
x = sigsetjmp(env, 0);
switch (x) {
case 1:
/* ... */
goto run;
case 0:
run:
do_run(); /* marked as "no return" */
break;
case 3:
if (...) {
/* ... */
goto run;
}
/* ... */
break;
}
2: g = y;
"y" may be put onto the stack, so the expression "g = y" is relying upon the
fact that the stack slot containing "y" isn't modified between (1) and (2). But
it can be, because of the "no return" calls in there. A longjmp might come back
with 3, modify the stack slot, and then go to case 0. And it's perfectly
acceptable to reuse the stack slot there because there's no CFG flow from case 3
to (2).
The fix is to disable certain optimizations in these situations. Ideally, we'd
disable them for all "returns twice" functions. But we don't support that
attribute. Check for "setjmp" and "sigsetjmp" instead.
llvm-svn: 104640
|
| |
|
|
|
|
| |
statements }) in the code-completion results if explicitly requested.
llvm-svn: 104637
|
| |
|
|
|
|
| |
and testcases accordingly.
llvm-svn: 104635
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
are st(0). These can be encoded using an opcode for storing in st(0) or using
an opcode for storing in st(i), where i can also be 0. To allow testing with
the darwin assembler and get a matching binary the opcode for storing in st(0)
is now used. To do this the same logical trick is use from the darwin assembler
in converting things like this:
fmul %st(0), %st
into this:
fmul %st(0)
by looking for the second operand being X86::ST0 for specific floating point
mnemonics then removing the second X86::ST0 operand. This also has the add
benefit to allow things like:
fmul %st(1), %st
that llvm-mc did not assemble.
llvm-svn: 104634
|
| |
|
|
|
|
|
|
|
|
|
| |
This fixes
a massive memory leak when using a BumpPtrAllocator in ASTContext.
Added a FIXME, as the Destroy method for TemplateArgumentList isn't getting called.
This means we will instead leak when using the MallocAllocator.
llvm-svn: 104633
|
| |
|
|
|
|
| |
bug go untested than have a testcase this large. So be it.
llvm-svn: 104632
|
| |
|
|
| |
llvm-svn: 104631
|
| |
|
|
|
|
|
|
| |
This class only supports name mangling (which is apparently used during C/ObjC
codegen). For now only the Itanium C++ ABI is supported. Patches to add a
second C++ ABI are forthcoming.
llvm-svn: 104630
|
| |
|
|
| |
llvm-svn: 104629
|
| |
|
|
| |
llvm-svn: 104628
|
| |
|
|
|
|
|
| |
SubRegIndex instances are now numbered uniquely the same way Register instances
are - in lexicographical order by name.
llvm-svn: 104627
|
| |
|
|
| |
llvm-svn: 104626
|
| |
|
|
|
|
|
|
| |
Mon Ping provided; unfortunately bugpoint failed to
reduce it, but I think it's important to have a test for
this in the suite. 8023512.
llvm-svn: 104624
|
| |
|
|
|
|
| |
.s printer or .o writer.
llvm-svn: 104623
|
| |
|
|
| |
llvm-svn: 104622
|
| |
|
|
|
|
| |
for the 64-bit version of the Bit Test instruction.
llvm-svn: 104621
|
| |
|
|
|
|
|
|
|
|
|
|
| |
(DeclStmt 0x3405550 <line:3:4, col:11>
0x34053a0 "int x")
instead of:
(DeclStmt 0x3405550 <line:3:4, col:11>
0x34053a0 "int x"
which has unbalanced parens (PR7228)
llvm-svn: 104620
|
| |
|
|
|
|
|
| |
(oye, a word which should be better known to people writing tree
traversals, means grandchild.)
llvm-svn: 104619
|
| |
|
|
| |
llvm-svn: 104618
|
| |
|
|
|
|
| |
Fixes rdar://8017638
llvm-svn: 104617
|
| |
|
|
| |
llvm-svn: 104616
|
| |
|
|
|
|
|
|
|
|
|
| |
instead.
This passes lit tests, but I'll give it a go through the buildbots to smoke out
any remaining places that depend on the old SubRegIndex numbering.
Then I'll remove NumberHack entirely.
llvm-svn: 104615
|
| |
|
|
| |
llvm-svn: 104614
|
| |
|
|
| |
llvm-svn: 104613
|
| |
|
|
| |
llvm-svn: 104612
|
| |
|
|
|
|
|
| |
The cases in getMatchingSuperRegClass cannot be broken up until the enums have
unique values.
llvm-svn: 104611
|
| |
|
|
|
|
|
|
|
| |
variables within blocks. We loosely follow GCC's mangling, but since
these are always internal symbols the names don't really matter. I
intend to revisit block mangling later, because GCC's mangling is
rather verbose. <rdar://problem/8015719>.
llvm-svn: 104610
|
| |
|
|
|
|
| |
methods. (Radar 7987817).
llvm-svn: 104608
|
| |
|
|
|
|
| |
derived-to-base conversion on a pointer. Fixes PR7224.
llvm-svn: 104607
|
| |
|
|
| |
llvm-svn: 104606
|
| |
|
|
|
|
| |
(vmrs, vmsr and vmov (immediate))
llvm-svn: 104588
|
| |
|
|
| |
llvm-svn: 104587
|
| |
|
|
| |
llvm-svn: 104586
|
| |
|
|
|
|
|
|
|
|
|
| |
1) Suppress diagnostics as soon as we form the code-completion
token, so we don't get any error/warning spew from the early
end-of-file.
2) If we consume a code-completion token when we weren't expecting
one, go into a code-completion recovery path that produces the best
results it can based on the context that the parser is in.
llvm-svn: 104585
|
| |
|
|
|
|
|
| |
whether the size of the symbolic region is a multiple of the size of T.
Fixes PR6123 and PR7217.
llvm-svn: 104584
|
| |
|
|
|
|
|
| |
I don't know of any particular reason why that would be important, but
neither can I see any reason to disallow it.
llvm-svn: 104583
|
| |
|
|
|
|
|
| |
Thumb2 ADD and SUB instructions: allow RSB instructions be changed to set the
condition codes, and allow RSBS instructions to be predicated.
llvm-svn: 104582
|
| |
|
|
|
|
|
|
|
|
|
|
| |
variables should have that linkage. Otherwise, its static local
variables should have internal linkage. To avoid computing this excessively,
set a function's linkage before we emit code for it.
Previously we were assigning weak linkage to the static variables of
static inline functions in C++, with predictably terrible results. This
fixes that and also gives better linkage than 'weak' when merging is required.
llvm-svn: 104581
|