| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
An alias to a function should use pc relative addressing.
llvm-svn: 168199
|
| |
|
|
| |
llvm-svn: 158409
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is mostly to test the waters. I'd like to get results from FNT
build bots and other bots running on non-x86 platforms.
This feature has been pretty heavily tested over the last few months by
me, and it fixes several of the execution time regressions caused by the
inlining work by preventing inlining decisions from radically impacting
block layout.
I've seen very large improvements in yacr2 and ackermann benchmarks,
along with the expected noise across all of the benchmark suite whenever
code layout changes. I've analyzed all of the regressions and fixed
them, or found them to be impossible to fix. See my email to llvmdev for
more details.
I'd like for this to be in 3.1 as it complements the inliner changes,
but if any failures are showing up or anyone has concerns, it is just
a flag flip and so can be easily turned off.
I'm switching it on tonight to try and get at least one run through
various folks' performance suites in case SPEC or something else has
serious issues with it. I'll watch bots and revert if anything shows up.
llvm-svn: 154816
|
| |
|
|
| |
llvm-svn: 153890
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Removed test/lib/llvm.exp - it is no longer needed
* Deleted the dg.exp reading code from test/lit.cfg. There are no dg.exp files
left in the test suite so this code is no longer required. test/lit.cfg is
now much shorter and clearer
* Removed a lot of duplicate code in lit.local.cfg files that need access to
the root configuration, by adding a "root" attribute to the TestingConfig
object. This attribute is dynamically computed to provide the same
information as was previously provided by the custom getRoot functions.
* Documented the config.root attribute in docs/CommandGuide/lit.pod
llvm-svn: 153408
|
| |
|
|
|
|
|
|
| |
run with LIT now and now Dejagnu. dg.exp is no longer needed.
Patch reviewed by Daniel Dunbar. It will be followed by additional cleanup patches.
llvm-svn: 150664
|
| |
|
|
| |
llvm-svn: 147580
|
| |
|
|
|
|
| |
instead of 'volatile load', which is archaic.
llvm-svn: 145171
|
| |
|
|
|
|
| |
This can happen if the address + addend is less than the start of the cp / dp.
llvm-svn: 143459
|
| |
|
|
|
|
| |
single test.
llvm-svn: 143458
|
| |
|
|
| |
llvm-svn: 143457
|
| |
|
|
|
|
| |
This information is required if we want LDWCP to be hoisted out of loops.
llvm-svn: 139495
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
init.trampoline and adjust.trampoline intrinsics, into two intrinsics
like in GCC. While having one combined intrinsic is tempting, it is
not natural because typically the trampoline initialization needs to
be done in one function, and the result of adjust trampoline is needed
in a different (nested) function. To get around this llvm-gcc hacks the
nested function lowering code to insert an additional parent variable
holding the adjust.trampoline result that can be accessed from the child
function. Dragonegg doesn't have the luxury of tweaking GCC code, so it
stored the result of adjust.trampoline in the memory GCC set aside for
the trampoline itself (this is always available in the child function),
and set up some new memory (using an alloca) to hold the trampoline.
Unfortunately this breaks Go which allocates trampoline memory on the
heap and wants to use it even after the parent has exited (!). Rather
than doing even more hacks to get Go working, it seemed best to just use
two intrinsics like in GCC. Patch mostly by Sanjoy Das.
llvm-svn: 139140
|
| |
|
|
|
|
| |
variable sized alloca.
llvm-svn: 138433
|
| |
|
|
| |
llvm-svn: 137938
|
| |
|
|
| |
llvm-svn: 136623
|
| |
|
|
| |
llvm-svn: 135476
|
| |
|
|
| |
llvm-svn: 135475
|
| |
|
|
| |
llvm-svn: 135474
|
| |
|
|
|
|
|
|
| |
been
needed since llvm-gcc 3.4 days.
llvm-svn: 133248
|
| |
|
|
| |
llvm-svn: 132340
|
| |
|
|
| |
llvm-svn: 132336
|
| |
|
|
| |
llvm-svn: 132335
|
| |
|
|
| |
llvm-svn: 130816
|
| |
|
|
|
|
| |
Add an extra run with -regalloc=basic to keep them honest.
llvm-svn: 128654
|
| |
|
|
| |
llvm-svn: 128633
|
| |
|
|
| |
llvm-svn: 127821
|
| |
|
|
| |
llvm-svn: 127761
|
| |
|
|
|
|
| |
can event.
llvm-svn: 127741
|
| |
|
|
| |
llvm-svn: 127680
|
| |
|
|
| |
llvm-svn: 127678
|
| |
|
|
| |
llvm-svn: 127366
|
| |
|
|
|
|
| |
that contain only letters, digits and the characters "_" and ".".
llvm-svn: 127028
|
| |
|
|
| |
llvm-svn: 126963
|
| |
|
|
| |
llvm-svn: 126384
|
| |
|
|
| |
llvm-svn: 126322
|
| |
|
|
|
|
|
| |
events on the thread and wait until a resource is ready to event. The vector
of the resource that is ready is returned.
llvm-svn: 126320
|
| |
|
|
| |
llvm-svn: 126315
|
| |
|
|
| |
llvm-svn: 126313
|
| |
|
|
| |
llvm-svn: 126132
|
| |
|
|
| |
llvm-svn: 125186
|
| |
|
|
| |
llvm-svn: 124794
|
| |
|
|
| |
llvm-svn: 124722
|
| |
|
|
| |
llvm-svn: 124587
|
| |
|
|
| |
llvm-svn: 123591
|
| |
|
|
|
|
| |
message instead of creating DBG_VALUE for undefined value in reg0.
llvm-svn: 121059
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
define double @foo(double %x, double %y, i1 %c) nounwind {
%a = fdiv double %x, 3.2
%z = select i1 %c, double %a, double %y
ret double %z
}
Was:
_foo:
divsd LCPI0_0(%rip), %xmm0
testb $1, %dil
jne LBB0_2
movaps %xmm1, %xmm0
LBB0_2:
ret
Now:
_foo:
testb $1, %dil
je LBB0_2
divsd LCPI0_0(%rip), %xmm0
ret
LBB0_2:
movaps %xmm1, %xmm0
ret
This avoids the divsd when early exit is taken.
rdar://8454886
llvm-svn: 114372
|
| |
|
|
| |
llvm-svn: 101638
|
| |
|
|
|
|
| |
those who don't build all targets.
llvm-svn: 100688
|
| |
|
|
|
|
|
| |
label instead of trying to form one based on the BB name (which
causes collisions if the name is empty). This fixes PR6608
llvm-svn: 98495
|