| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
binary primitives.
llvm-svn: 55343
|
| |
|
|
| |
llvm-svn: 55341
|
| |
|
|
|
|
| |
done during the preprocess of x86 isel. callseq_start's chain is changed to load's chain node; while load's chain is the last of callseq_start or the loads or copytoreg nodes inserted to move arguments to the right spot.
llvm-svn: 55338
|
| |
|
|
|
|
|
|
| |
generic stuff works fine.
Mark rewritten cmp-and-swap as not using CR1.
llvm-svn: 55336
|
| |
|
|
|
|
|
| |
loads and stores but it's even more important for
it to store the right value.:(
llvm-svn: 55319
|
| |
|
|
| |
llvm-svn: 55318
|
| |
|
|
|
|
| |
instructions on having SSE2.
llvm-svn: 55317
|
| |
|
|
| |
llvm-svn: 55300
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.obj/./gcc/xgcc ... src/libiberty/make-temp-file.c -o make-temp-file.o
Assertion failed: (Node2Index[SU->NodeNum] > Node2Index[I->Dep->NodeNum] && "Wrong topological sorting"), function InitDAGTopologicalSorting, file /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp, line 508.
../../../../llvm-gcc.src/libiberty/hashtab.c:955: internal compiler error: Abort trap
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://developer.apple.com/bugreporter> for instructions.
make[4]: *** [hashtab.o] Error 1
make[4]: *** Waiting for unfinished jobs....
make[3]: *** [multi-do] Error 1
make[2]: *** [all] Error 2
make[1]: *** [all-target-libiberty] Error 2
make: *** [all] Error 2
llvm-svn: 55295
|
| |
|
|
|
|
| |
into the call node.
llvm-svn: 55292
|
| |
|
|
|
|
| |
Suggested by aKor.
llvm-svn: 55282
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
use raw_ostream instead of std::ostream. Among other goodness,
this speeds up llvm-dis of kc++ with a release build from 0.85s
to 0.49s (88% faster).
Other interesting changes:
1) This makes Value::print be non-virtual.
2) AP[S]Int and ConstantRange can no longer print to ostream directly,
use raw_ostream instead.
3) This fixes a bug in raw_os_ostream where it didn't flush itself
when destroyed.
4) This adds a new SDNode::print method, instead of only allowing "dump".
A lot of APIs have both std::ostream and raw_ostream versions, it would
be useful to go through and systematically anihilate the std::ostream
versions.
This passes dejagnu, but there may be minor fallout, plz let me know if
so and I'll fix it.
llvm-svn: 55263
|
| |
|
|
|
|
| |
Is there way to avoid explicit target check?
llvm-svn: 55238
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
process up to a higher level. This allows FastISel to leverage
more of SelectionDAGISel's infastructure, such as updating Machine
PHI nodes.
Also, implement transitioning from SDISel back to FastISel in
the middle of a block, so it's now possible to go back and
forth. This allows FastISel to hand individual CallInsts and other
complicated things off to SDISel to handle, while handling the rest
of the block itself.
To help support this, reorganize the SelectionDAG class so that it
is allocated once and reused throughout a function, instead of
being completely reallocated for each block.
llvm-svn: 55219
|
| |
|
|
| |
llvm-svn: 55203
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
message:
{standard input}:17:bad register name `%sil'
make[4]: *** [libgcc/./_addvsi3.o] Error 1
make[4]: *** Waiting for unfinished jobs....
{standard input}:23:bad register name `%dil'
{standard input}:28:bad register name `%dil'
make[4]: *** [libgcc/./_addvdi3.o] Error 1
{standard input}:18:bad register name `%sil'
make[4]: *** [libgcc/./_subvsi3.o] Error 1
llvm-svn: 55200
|
| |
|
|
|
|
|
|
| |
instructions that define the full 32 or 64-bit value. When anyexting
from i8 to i16 or i32, it's not necessary to zero out the high
portion of the register.
llvm-svn: 55190
|
| |
|
|
| |
llvm-svn: 55186
|
| |
|
|
|
|
|
| |
so that lwarx and stwcx are always executed the same number of times.
This is important for performance, I'm told.
llvm-svn: 55163
|
| |
|
|
|
|
|
|
|
| |
and use it in FastISelEmitter.cpp, and make FastISel
subtarget aware. Among other things, this lets it work
properly on x86 targets that don't have SSE, where it
successfully selects x87 instructions.
llvm-svn: 55156
|
| |
|
|
|
|
| |
into it.
llvm-svn: 55147
|
| |
|
|
| |
llvm-svn: 55146
|
| |
|
|
|
|
|
| |
1. x86-64 byval alignment should be max of 8 and alignment of type. Previously the code was not doing what the commit message was saying.
2. Do not use byte repeat move and store operations. These are slow.
llvm-svn: 55139
|
| |
|
|
| |
llvm-svn: 55135
|
| |
|
|
| |
llvm-svn: 55130
|
| |
|
|
|
|
|
| |
This unbreaks explicit reg vars inside JIT, which are
implemented in such hacky way :)
llvm-svn: 55128
|
| |
|
|
|
|
| |
from all targets.
llvm-svn: 55124
|
| |
|
|
| |
llvm-svn: 55117
|
| |
|
|
| |
llvm-svn: 55112
|
| |
|
|
| |
llvm-svn: 55092
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
out of X86ISelDAGToDAG.cpp C++ code and into tablegen code.
Among other things, using tablegen for these things makes them
friendlier to FastISel.
Tablegen can handle the case of i8 subregs on x86-32, but currently
the C++ code for that case uses MVT::Flag in a tricky way, and it
happens to schedule better in some cases. So for now, leave the
C++ code in place to handle the i8 case on x86-32.
llvm-svn: 55078
|
| |
|
|
|
|
|
|
| |
class hold a MachineRegisterInfo member, and make the
MachineBasicBlock be passed in to SelectInstructions rather
than the FastISel constructor.
llvm-svn: 55076
|
| |
|
|
| |
llvm-svn: 55057
|
| |
|
|
|
|
| |
necessary to use dyn_cast in these predicates.
llvm-svn: 55055
|
| |
|
|
| |
llvm-svn: 55052
|
| |
|
|
| |
llvm-svn: 55047
|
| |
|
|
| |
llvm-svn: 55029
|
| |
|
|
|
|
| |
Just expand it like the other X-bit sub_and_fetches.
llvm-svn: 55023
|
| |
|
|
|
|
| |
was already present, but not hooked up to anything.
llvm-svn: 55018
|
| |
|
|
| |
llvm-svn: 55011
|
| |
|
|
| |
llvm-svn: 55010
|
| |
|
|
|
|
|
|
|
|
| |
builtins on X86.
Change "lock" instructions to be on a separate line.
This is needed to work around a bug in the Darwin
assembler.
llvm-svn: 54999
|
| |
|
|
| |
llvm-svn: 54985
|
| |
|
|
| |
llvm-svn: 54964
|
| |
|
|
| |
llvm-svn: 54950
|
| |
|
|
| |
llvm-svn: 54942
|
| |
|
|
| |
llvm-svn: 54913
|
| |
|
|
|
|
| |
junk in higher bits. Patch by Nate Begeman.
llvm-svn: 54903
|
| |
|
|
| |
llvm-svn: 54902
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In particular, Collector was confusing to implementors. Several
thought that this compile-time class was the place to implement
their runtime GC heap. Of course, it doesn't even exist at runtime.
Specifically, the renames are:
Collector -> GCStrategy
CollectorMetadata -> GCFunctionInfo
CollectorModuleMetadata -> GCModuleInfo
CollectorRegistry -> GCRegistry
Function::getCollector -> getGC (setGC, hasGC, clearGC)
Several accessors and nested types have also been renamed to be
consistent. These changes should be obvious.
llvm-svn: 54899
|