| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 128017
|
| |
|
|
|
|
| |
running while crash recovery cleanups are being processed.
llvm-svn: 128008
|
| |
|
|
|
|
| |
referenced object).
llvm-svn: 128007
|
| |
|
|
| |
llvm-svn: 128005
|
| |
|
|
| |
llvm-svn: 128004
|
| |
|
|
| |
llvm-svn: 128002
|
| |
|
|
| |
llvm-svn: 127997
|
| |
|
|
|
|
|
| |
code below it. Even though it looks very similar, it will match more precisely
and geneate better functions in the long run.
llvm-svn: 127991
|
| |
|
|
|
|
|
| |
This is a helper class that will make it easier to say which InstAliases can be
printed and which cannot (because of ambiguity).
llvm-svn: 127990
|
| |
|
|
|
|
| |
* Move the code that emits the reg in reg class matching into its own function.
llvm-svn: 127988
|
| |
|
|
|
|
|
|
|
| |
the alias of an InstAlias instead of the thing being aliased. Because we need to
know the features that are valid for an InstAlias.
This is part of a work-in-progress.
llvm-svn: 127986
|
| |
|
|
|
|
| |
decide whether a destructor is empty or not.
llvm-svn: 127985
|
| |
|
|
| |
llvm-svn: 127984
|
| |
|
|
| |
llvm-svn: 127982
|
| |
|
|
|
|
| |
predecessors; update dominator tree if cfg is modified.
llvm-svn: 127981
|
| |
|
|
| |
llvm-svn: 127976
|
| |
|
|
| |
llvm-svn: 127975
|
| |
|
|
| |
llvm-svn: 127974
|
| |
|
|
| |
llvm-svn: 127973
|
| |
|
|
|
|
|
| |
gun as does. This makes it a lot easier to compare the output of both
as the addresses are now a lot closer.
llvm-svn: 127972
|
| |
|
|
|
|
| |
the function passed is empty.
llvm-svn: 127970
|
| |
|
|
|
|
|
| |
- glibc falls back to fork+exec if a file actions object is present.
- On BSDs this saves a malloc.
llvm-svn: 127969
|
| |
|
|
|
|
| |
used with IntrusiveRefCntPtr.
llvm-svn: 127966
|
| |
|
|
|
|
|
| |
This can happen when multiple sibling registers are spilled after live range
splitting.
llvm-svn: 127965
|
| |
|
|
|
|
| |
some redundant lookups.
llvm-svn: 127964
|
| |
|
|
| |
llvm-svn: 127962
|
| |
|
|
| |
llvm-svn: 127960
|
| |
|
|
| |
llvm-svn: 127959
|
| |
|
|
|
|
|
| |
Some of those POSIX <-> Windows command line conversions ended on
failure.
llvm-svn: 127958
|
| |
|
|
| |
llvm-svn: 127957
|
| |
|
|
| |
llvm-svn: 127956
|
| |
|
|
|
|
| |
to canonicalize IR", it broke a lot of things.
llvm-svn: 127954
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
to have single return block (at least getting there) for optimizations. This
is general goodness but it would prevent some tailcall optimizations.
One specific case is code like this:
int f1(void);
int f2(void);
int f3(void);
int f4(void);
int f5(void);
int f6(void);
int foo(int x) {
switch(x) {
case 1: return f1();
case 2: return f2();
case 3: return f3();
case 4: return f4();
case 5: return f5();
case 6: return f6();
}
}
=>
LBB0_2: ## %sw.bb
callq _f1
popq %rbp
ret
LBB0_3: ## %sw.bb1
callq _f2
popq %rbp
ret
LBB0_4: ## %sw.bb3
callq _f3
popq %rbp
ret
This patch teaches codegenprep to duplicate returns when the return value
is a phi and where the phi operands are produced by tail calls followed by
an unconditional branch:
sw.bb7: ; preds = %entry
%call8 = tail call i32 @f5() nounwind
br label %return
sw.bb9: ; preds = %entry
%call10 = tail call i32 @f6() nounwind
br label %return
return:
%retval.0 = phi i32 [ %call10, %sw.bb9 ], [ %call8, %sw.bb7 ], ... [ 0, %entry ]
ret i32 %retval.0
This allows codegen to generate better code like this:
LBB0_2: ## %sw.bb
jmp _f1 ## TAILCALL
LBB0_3: ## %sw.bb1
jmp _f2 ## TAILCALL
LBB0_4: ## %sw.bb3
jmp _f3 ## TAILCALL
rdar://9147433
llvm-svn: 127953
|
| |
|
|
| |
llvm-svn: 127952
|
| |
|
|
|
|
|
|
| |
not have native support for this operation (such as X86).
The legalized code uses two vector INT_TO_FP operations and is faster
than scalarizing.
llvm-svn: 127951
|
| |
|
|
| |
llvm-svn: 127948
|
| |
|
|
|
|
| |
description updates.
llvm-svn: 127947
|
| |
|
|
|
|
|
| |
update short descriptions to match those from the options, alphabetize table
of contents.
llvm-svn: 127946
|
| |
|
|
| |
llvm-svn: 127945
|
| |
|
|
| |
llvm-svn: 127944
|
| |
|
|
| |
llvm-svn: 127943
|
| |
|
|
| |
llvm-svn: 127941
|
| |
|
|
| |
llvm-svn: 127939
|
| |
|
|
|
|
|
|
| |
The relevant instruction table entries were changed sometime ago to no longer take
<Rt2> as an operand. Modify ARMDisassemblerCore.cpp to accomodate the change and
add a test case.
llvm-svn: 127935
|
| |
|
|
|
|
| |
select between 'delete' and 'destructor' cleanups, and allow the destructor of CrashRecoveryContextCleanupRegister to be pseudo re-entrant.
llvm-svn: 127929
|
| |
|
|
|
|
|
|
| |
'gCrsahRecoveryEnabled' is false. This avoids us needing to go to thread local storage for
the performance sensitive case where we are compiling code.
llvm-svn: 127928
|
| |
|
|
|
|
| |
(one-by-one until valgrind is happy)
llvm-svn: 127925
|
| |
|
|
|
|
| |
LoadInst should also get a corresponding llvm.dbg.value intrinsic.
llvm-svn: 127924
|
| |
|
|
| |
llvm-svn: 127923
|
| |
|
|
| |
llvm-svn: 127922
|