| Commit message (Collapse) | Author | Age | Files | Lines | 
| ... |  | 
| | 
| 
| 
|  | 
llvm-svn: 95445
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
pslld	69, %mm3                ## encoding: [0x0f,0xf2,0x1c,0x25,0x45,0x00,0x00,0x00]
instead of like this:
	pslld	69, %mm3                ## encoding: [0x0f,0xf2,0x1c,0x25,0x45,0000,0000,0000]
this only affects 0.
llvm-svn: 95441
 | 
| | 
| 
| 
|  | 
llvm-svn: 95440
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Weird code sometimes uses pointer constants other than null. This patch
teaches SimplifyCFG to build switch instructions in those cases.
Code like this:
void f(const char *x) {
  if (!x)
    puts("null");
  else if ((uintptr_t)x == 1)
    puts("one");
  else if (x == (char*)2 || x == (char*)3)
    puts("two");
  else if ((intptr_t)x == 4)
    puts("four");
  else
    puts(x);
}
Now becomes a switch:
define void @f(i8* %x) nounwind ssp {
entry:
  %magicptr23 = ptrtoint i8* %x to i64            ; <i64> [#uses=1]
  switch i64 %magicptr23, label %if.else16 [
    i64 0, label %if.then
    i64 1, label %if.then2
    i64 2, label %if.then9
    i64 3, label %if.then9
    i64 4, label %if.then14
  ]
Note that LLVM's own DenseMap uses magic pointers.
llvm-svn: 95439
 | 
| | 
| 
| 
|  | 
llvm-svn: 95438
 | 
| | 
| 
| 
|  | 
llvm-svn: 95437
 | 
| | 
| 
| 
|  | 
llvm-svn: 95435
 | 
| | 
| 
| 
| 
| 
|  | 
pseudo instructions.
llvm-svn: 95433
 | 
| | 
| 
| 
|  | 
llvm-svn: 95432
 | 
| | 
| 
| 
| 
| 
|  | 
lower the SETB* instructions.
llvm-svn: 95431
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
xform it is checking to actually pass.  There is no need to match
m_SelectCst<0, -1> since instcombine canonicalizes that into not(sext).
Add matches for sext(not(x)) in addition to not(sext(x)).
llvm-svn: 95420
 | 
| | 
| 
| 
|  | 
llvm-svn: 95414
 | 
| | 
| 
| 
|  | 
llvm-svn: 95410
 | 
| | 
| 
| 
| 
| 
| 
|  | 
container data. This prevents it from holding onto dangling
pointers and potentially behaving unpredictably.
llvm-svn: 95409
 | 
| | 
| 
| 
|  | 
llvm-svn: 95408
 | 
| | 
| 
| 
| 
| 
|  | 
malloc caller in a profile.
llvm-svn: 95407
 | 
| | 
| 
| 
| 
| 
|  | 
TSFlags directly instead of a TargetInstrDesc.
llvm-svn: 95405
 | 
| | 
| 
| 
|  | 
llvm-svn: 95403
 | 
| | 
| 
| 
| 
| 
|  | 
that in mind.
llvm-svn: 95402
 | 
| | 
| 
| 
|  | 
llvm-svn: 95397
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
llc.cpp also defined these flags, meaning that when I linked all of LLVM's
libraries into a single shared library, llc crashed on startup with duplicate
flag definitions.  This patch passes them through the EngineBuilder into
JIT::selectTarget().
llvm-svn: 95390
 | 
| | 
| 
| 
|  | 
llvm-svn: 95378
 | 
| | 
| 
| 
|  | 
llvm-svn: 95368
 | 
| | 
| 
| 
|  | 
llvm-svn: 95351
 | 
| | 
| 
| 
| 
| 
|  | 
to start limping.
llvm-svn: 95350
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
pushl	%ebp
	movl	%esp, %ebp
	movl	$42, %eax
	popl	%ebp
	ret
llvm-svn: 95344
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
predecessors to the unfolded load. It decides what gets moved to the load by checking whether the new load is using the predecessor as an operand. The check neglects the cases whether the predecessor is a flagged scheduling unit.
rdar://7604000
llvm-svn: 95339
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
following it. However, the EmitGlobalConstant method wasn't emitting a body for
the constant. The assembler doesn't like that. Before, we were generating this:
  .zerofill __DATA, __common, __cmd, 1, 3
This fix puts us back to that semantic.
llvm-svn: 95336
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
short-circuited conditions to AND/OR expressions, and those expressions
are often converted back to a short-circuited form in code gen.  The
original source order may have been optimized to take advantage of the
expected values, and if we reassociate them, we change the order and
subvert that optimization.  Radar 7497329.
llvm-svn: 95333
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
Instruction selection for X86 now can choose an instruction
sequence that will fit any address of any symbol, no matter
the pointer width. X86-64 uses a mov+call-via-reg sequence
for this.
llvm-svn: 95323
 | 
| | 
| 
| 
|  | 
llvm-svn: 95322
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
This makes the inliner about as agressive as it was before my changes to the
inliner cost calculations. These levels give the same performance and slightly
smaller code than before.
llvm-svn: 95320
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
operand.
ProcessImplicitDefs would only mark one operand per instruction with <undef>.
This fixed PR6086.
llvm-svn: 95319
 | 
| | 
| 
| 
|  | 
llvm-svn: 95299
 | 
| | 
| 
| 
|  | 
llvm-svn: 95295
 | 
| | 
| 
| 
| 
| 
|  | 
failure.
llvm-svn: 95294
 | 
| | 
| 
| 
| 
| 
|  | 
64-bit sparc codegen.  Patch by Nathan Keynes!
llvm-svn: 95293
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
"Attached patch removes the extra NUL bytes from the output and changes
test/Archive/MacOSX.toc from a binary to a text file (removes
svn:mime-type=application/octet-stream and adds svn:eol-style=native).  I can't
figure out how to get SVN to include the new contents of the file in the patch
so I'm attaching it separately."
Patch by James Abbatiello!
llvm-svn: 95292
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Fix bugs where we would compute out of bounds as in bounds, and where
we couldn't know that the linker could override the size of an array.
Add a few new testcases, change existing testcase to use a private
global array instead of extern.
llvm-svn: 95283
 | 
| | 
| 
| 
| 
| 
|  | 
optimization even if the caller / callee attributes completely match. The callee may have been bitcast'ed (or otherwise lied about what it's doing).
llvm-svn: 95282
 | 
| | 
| 
| 
| 
| 
| 
|  | 
than int. This will make it more convenient for LSR, which does
a lot of things with int64_t offsets.
llvm-svn: 95281
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
after callee register pops. X86 isel lowering is using EAX / R11 and it was somehow adding that to function live out. That prevented the real function return register from being added to the function live out list and bad things happen.
This fixes 483.xalancbmk (with tail call opt).
llvm-svn: 95280
 | 
| | 
| 
| 
|  | 
llvm-svn: 95272
 | 
| | 
| 
| 
| 
| 
| 
|  | 
again, so it more or less handles long double.
Restore \n removed in latest MC frenzy.
llvm-svn: 95271
 | 
| | 
| 
| 
| 
| 
|  | 
that it refers to; fix is to not enumerate operands of function-local metadata until after all instructions have been enumerated
llvm-svn: 95269
 | 
| | 
| 
| 
| 
| 
|  | 
particular size, we just don't know what the length is yet.
llvm-svn: 95266
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
instructions with no operands.  It can now handle
define void @test2() nounwind { ret void }
llvm-svn: 95261
 | 
| | 
| 
| 
|  | 
llvm-svn: 95260
 | 
| | 
| 
| 
| 
| 
|  | 
down a self-hosting issue.
llvm-svn: 95259
 | 
| | 
| 
| 
| 
| 
|  | 
-enable-new-x86-encoder until its stable.
llvm-svn: 95256
 |