| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 128096
|
| |
|
|
| |
llvm-svn: 128095
|
| |
|
|
| |
llvm-svn: 128094
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Support argument passing simple, common, prototypes directly. More
complicated scenarios will require building up a stub function, which the
MC-JIT isn't set up to handle yet.
Add Intercept.cpp, which is just a copy from ExecutionEngine/JIT for now,
to handle looking looking up external symbol names. This probably more
properly belongs as part of RuntimeDyld. It'll migrate there as things
flesh out more fully.
llvm-svn: 128090
|
| |
|
|
| |
llvm-svn: 128086
|
| |
|
|
| |
llvm-svn: 128085
|
| |
|
|
| |
llvm-svn: 128084
|
| |
|
|
| |
llvm-svn: 128077
|
| |
|
|
|
|
| |
the buildbot failure earlier.
llvm-svn: 128071
|
| |
|
|
| |
llvm-svn: 128068
|
| |
|
|
|
|
| |
investigate further why this works on my machine and not on others.
llvm-svn: 128065
|
| |
|
|
|
|
|
|
| |
Lots of cleanup to make the interfaces prettier, use the JITMemoryManager,
handle multiple functions and modules, etc.. This gets far enough that
the MCJIT compiles and runs code, though.
llvm-svn: 128052
|
| |
|
|
|
|
| |
This is likely to fix the segfault in llvm-gcc-x86_64-darwin10-cross-mingw32.
llvm-svn: 128051
|
| |
|
|
| |
llvm-svn: 128049
|
| |
|
|
| |
llvm-svn: 128048
|
| |
|
|
|
|
|
|
|
|
| |
These ranges get completely jumbled by the post-ra scheduler, and it is not
really reasonable to expect it to make sense of them.
Instead, teach DwarfDebug to notice when user variables in registers are
clobbered, and terminate the ranges there.
llvm-svn: 128045
|
| |
|
|
|
|
| |
outside of the current basic block. This fixes PR9500, rdar://9156159.
llvm-svn: 128041
|
| |
|
|
|
|
|
|
| |
constant folded very early.
This fixes SPASS with -integrated-as. <rdar://problem/9165399>
llvm-svn: 128037
|
| |
|
|
| |
llvm-svn: 128035
|
| |
|
|
|
|
|
|
|
| |
Move the dynamic linking functionality of the llvm-rtdyld program into an
ExecutionEngine support library. Update llvm-rtdyld to just load an object
file into memory, use the library to process it, then run the _main()
function, if one is found.
llvm-svn: 128031
|
| |
|
|
| |
llvm-svn: 128030
|
| |
|
|
| |
llvm-svn: 128028
|
| |
|
|
|
|
| |
running while crash recovery cleanups are being processed.
llvm-svn: 128008
|
| |
|
|
| |
llvm-svn: 128004
|
| |
|
|
| |
llvm-svn: 127997
|
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
| |
This can happen when multiple sibling registers are spilled after live range
splitting.
llvm-svn: 127965
|
| |
|
|
|
|
| |
some redundant lookups.
llvm-svn: 127964
|
| |
|
|
| |
llvm-svn: 127960
|
| |
|
|
| |
llvm-svn: 127959
|
| |
|
|
|
|
| |
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: 127944
|
| |
|
|
| |
llvm-svn: 127943
|
| |
|
|
| |
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
|