| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 13417
|
|
|
|
| |
llvm-svn: 13416
|
|
|
|
|
|
|
|
|
| |
%tmp.0 = getelementptr [50 x sbyte]* %ar, uint 0, int 5 ; <sbyte*> [#uses=2]
%tmp.7 = getelementptr sbyte* %tmp.0, int 8 ; <sbyte*> [#uses=1]
together. This patch actually allows us to simplify and generalize the code.
llvm-svn: 13415
|
|
|
|
|
|
|
|
| |
Disable the code that copies long constants to registers - it looks fishy.
Implement some simple casts: integral, smaller than longs, and equal-width
or narrowing only.
llvm-svn: 13413
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
allows us to compile:
store float 10.0, float* %P
into:
mov DWORD PTR [%EAX], 1092616192
instead of:
.CPItest_0: # float 0x4024000000000000
.long 1092616192 # float 10
...
fld DWORD PTR [.CPItest_0]
fstp DWORD PTR [%EAX]
llvm-svn: 13409
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
against zero. In particular, don't emit:
mov %ESI, 0
cmp %ECX, %ESI
instead, emit:
test %ECX, %ECX
llvm-svn: 13407
|
|
|
|
| |
llvm-svn: 13400
|
|
|
|
| |
llvm-svn: 13391
|
|
|
|
| |
llvm-svn: 13388
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When looking at getelementptr instructions, make sure to use a forwarded
type. We want to do this because a DerivedType may drop its uses and then
refine its users, who may then use another user who hasn't been refined yet.
By getting the forwarded type, we always ensure that we're looking at a
Type that isn't in a halfway refined state.
Now, I should be able to put this stuff in PATypeHandle, but it doesn't work
for some reason. This should do for now.
llvm-svn: 13386
|
|
|
|
|
|
| |
workaround, use the C HUGE_VAL macro instead.
llvm-svn: 13377
|
|
|
|
|
|
|
|
|
|
|
| |
the debugging functions that call "dot". These fixed settings have
various problems: for example, the fixed size that is set in the graph
traits classes is not appropriate for turning the dot file into a PNG,
and if TrueType font rendering is being used, the 'Courier' TrueType font
may not be installed. It seems easy enough to specify these things on the
command line, anyhow.
llvm-svn: 13366
|
|
|
|
| |
llvm-svn: 13364
|
|
|
|
| |
llvm-svn: 13363
|
|
|
|
| |
llvm-svn: 13362
|
|
|
|
|
|
|
|
|
| |
constant pool member's name.
This is intended to address Bug 333.
Also, fix an anachronistic usage of "M" as a parameter of type Function *.
llvm-svn: 13357
|
|
|
|
|
|
|
|
|
|
|
| |
fills in a ToolArgs vector in the AbstractInterpreter if it is set. This
ToolArgs vector is used to pass additional arguments to LLI and/or LLC.
This is intended to address Bug 40.
Also, make -debug-only=toolrunner work for the LLC and CBE
AbstractInterpreters.
llvm-svn: 13356
|
|
|
|
| |
llvm-svn: 13355
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
div:
mov %EDX, DWORD PTR [%ESP + 4]
mov %ECX, 64
mov %EAX, %EDX
sar %EDX, 31
idiv %ECX
ret
to this:
div:
mov %EAX, DWORD PTR [%ESP + 4]
mov %ECX, %EAX
sar %ECX, 5
shr %ECX, 26
mov %EDX, %EAX
add %EDX, %ECX
sar %EAX, 6
ret
Note that the intel compiler is currently making this:
div:
movl 4(%esp), %edx #3.5
movl %edx, %eax #4.14
sarl $5, %eax #4.14
shrl $26, %eax #4.14
addl %edx, %eax #4.14
sarl $6, %eax #4.14
ret #4.14
Which has one less register->register copy. (hint hint alkis :)
llvm-svn: 13354
|
|
|
|
| |
llvm-svn: 13352
|
|
|
|
|
|
| |
This fixes PR332 and ADCE/2004-05-04-UnreachableBlock.llx
llvm-svn: 13349
|
|
|
|
| |
llvm-svn: 13346
|
|
|
|
| |
llvm-svn: 13342
|
|
|
|
| |
llvm-svn: 13341
|
|
|
|
| |
llvm-svn: 13340
|
|
|
|
|
|
| |
which case you'll get a null array and zero passed to the profiling function.
llvm-svn: 13336
|
|
|
|
| |
llvm-svn: 13335
|
|
|
|
|
|
| |
acting like a normal pass. :(
llvm-svn: 13318
|
|
|
|
| |
llvm-svn: 13317
|
|
|
|
| |
llvm-svn: 13316
|
|
|
|
| |
llvm-svn: 13315
|
|
|
|
| |
llvm-svn: 13312
|
|
|
|
|
|
| |
Turning "if (A < B && B < C)" into "if (A < B & B < C)"
llvm-svn: 13311
|
|
|
|
|
|
| |
missing opportunities for combination.
llvm-svn: 13309
|
|
|
|
|
|
| |
when replacing them, missing the opportunity to do simplifications
llvm-svn: 13308
|
|
|
|
| |
llvm-svn: 13307
|
|
|
|
| |
llvm-svn: 13306
|
|
|
|
| |
llvm-svn: 13304
|
|
|
|
|
|
| |
Look at all of the pretty minuses. :)
llvm-svn: 13303
|
|
|
|
| |
llvm-svn: 13302
|
|
|
|
|
|
|
|
| |
use MachineBasicBlocks. To do this, we traverse the Machine CFG instead of
the LLVM CFG, which is also *MUCH* more efficient by having fewer levels of
indirections and mappings.
llvm-svn: 13301
|
|
|
|
| |
llvm-svn: 13297
|
|
|
|
|
|
| |
functions with wrappers that either take or return size_ts.
llvm-svn: 13296
|
|
|
|
| |
llvm-svn: 13291
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
is only used by a cast, and the casted type is the same size as the original
allocation, it would eliminate the cast by folding it into the allocation.
Unfortunately, it was placing the new allocation instruction right before
the cast, which could pull (for example) alloca instructions into the body
of a function. This turns statically allocatable allocas into expensive
dynamically allocated allocas, which is bad bad bad.
This fixes the problem by placing the new allocation instruction at the same
place the old one was, duh. :)
llvm-svn: 13289
|
|
|
|
| |
llvm-svn: 13264
|
|
|
|
| |
llvm-svn: 13263
|
|
|
|
|
|
|
|
|
|
| |
* Make contained ostream pointer, not reference
* Allow setting of that ostream via setStream()
class CachedWriter:
* setStream() in turn calls setStream() on the AssemblyWriter
llvm-svn: 13247
|
|
|
|
| |
llvm-svn: 13243
|
|
|
|
| |
llvm-svn: 13228
|