Skip to content
  1. Sep 21, 2009
    • Dan Gohman's avatar
      Add support for rematerializing FsFLD0SS and FsFLD0SD as constant-pool · 69499b13
      Dan Gohman authored
      loads in order to reduce register pressure.
      
      llvm-svn: 82470
      69499b13
    • Dan Gohman's avatar
      Recognize SSE min and max opportunities in even more cases. · 48ade83e
      Dan Gohman authored
      And fix a bug with the behavior of min/max instructions formed from
      fcmp uge comparisons.
      
      Also, use FiniteOnlyFPMath() for this code instead of UnsafeFPMath,
      as it is more specific.
      
      llvm-svn: 82466
      48ade83e
    • Dan Gohman's avatar
      Fix the offset values for these memoperands. For frame objects, the · 757acfea
      Dan Gohman authored
      PseudoSourceValue already effectively represents the offset from the
      frame base, so the actual offset should not be added to it.
      
      llvm-svn: 82465
      757acfea
    • Chris Lattner's avatar
      big endian systems shift by bits too, hopefully this will fix the ppc · 24705386
      Chris Lattner authored
      bootstrap problems.
      
      llvm-svn: 82464
      24705386
    • Dan Gohman's avatar
      Nick pointed out that DominanceFrontier and DominanceTree are preserved · 43d6830e
      Dan Gohman authored
      by setPreservesCFG().
      
      llvm-svn: 82463
      43d6830e
    • Dan Gohman's avatar
      Remove the special-case for constants in PHI nodes; it's not really · af57ae3d
      Dan Gohman authored
      helpful, and it didn't correctly handle the case of constants input
      to PHIs for backedges.
      
      llvm-svn: 82462
      af57ae3d
    • Chris Lattner's avatar
      fix PR5016, a crash I introduced in GVN handing first class · 9045f235
      Chris Lattner authored
      arrays and structs, which cannot be bitcast to integers.
      
      llvm-svn: 82460
      9045f235
    • Dan Gohman's avatar
      Fix this assertion string to mention subreg_to_reg. · a3c45bda
      Dan Gohman authored
      llvm-svn: 82455
      a3c45bda
    • Nuno Lopes's avatar
      initialize SymbolsCanStartWithDigit to false by default · 2c7e72cf
      Nuno Lopes authored
      llvm-svn: 82454
      2c7e72cf
    • Xerxes Ranby's avatar
      Update cmake. · da99be6f
      Xerxes Ranby authored
      llvm-svn: 82449
      da99be6f
    • Jakob Stoklund Olesen's avatar
      Verify that phi instructions refer to MBBs in the CFG. · f6eb7d83
      Jakob Stoklund Olesen authored
      The machine code verifier no longer tolerates phi instructions with noop
      operands. All MBBs on a phi instruction must be in the CFG.
      
      llvm-svn: 82448
      f6eb7d83
    • Chris Lattner's avatar
      enable non-local analysis and PRE of large store -> little load. · 4d8af2f1
      Chris Lattner authored
      This doesn't kick in too much because of phi translation issues,
      but this can be resolved in the future.
      
      llvm-svn: 82447
      4d8af2f1
    • Chris Lattner's avatar
      convert an std::pair to an explicit struct. · 0cdc17eb
      Chris Lattner authored
      llvm-svn: 82446
      0cdc17eb
    • Chris Lattner's avatar
      move some functions, add a comment. · d28f9089
      Chris Lattner authored
      llvm-svn: 82444
      d28f9089
    • Chris Lattner's avatar
      split HandleLoadFromClobberingStore in two pieces: one that does the · 9d7fb295
      Chris Lattner authored
      analysis, one that does the xform.
      
      llvm-svn: 82443
      9d7fb295
    • Chris Lattner's avatar
      add a note · 61858787
      Chris Lattner authored
      llvm-svn: 82442
      61858787
    • Daniel Dunbar's avatar
      Register the MachineModuleInfo for the ARM JIT, and update JITDwarfEmitter to · bc528b16
      Daniel Dunbar authored
      assert if the setModuleInfo hasn't been called.
      
      llvm-svn: 82441
      bc528b16
    • Chris Lattner's avatar
      Improve GVN to be able to forward substitute a small load · 0a9616d9
      Chris Lattner authored
      from a piece of a large store when both are in the same block.
      
      This allows clang to compile the testcase in PR4216 to this code:
      
      _test_bitfield:
      	movl	4(%esp), %eax
      	movl	%eax, %ecx
      	andl	$-65536, %ecx
      	orl	$32962, %eax
      	andl	$40186, %eax
      	orl	%ecx, %eax
      	ret
      
      This is not ideal, but is a whole lot better than the code produced
      by llvm-gcc:
      
      _test_bitfield:
      	movw	$-32574, %ax
      	orw	4(%esp), %ax
      	andw	$-25350, %ax
      	movw	%ax, 4(%esp)
      	movw	7(%esp), %cx
      	shlw	$8, %cx
      	movzbl	6(%esp), %edx
      	orw	%cx, %dx
      	movzwl	%dx, %ecx
      	shll	$16, %ecx
      	movzwl	%ax, %eax
      	orl	%ecx, %eax
      	ret
      
      and dramatically better than that produced by gcc 4.2:
      
      _test_bitfield:
      	pushl	%ebx
      	call	L3
      "L00000000001$pb":
      L3:
      	popl	%ebx
      	movl	8(%esp), %eax
      	leal	0(,%eax,4), %edx
      	sarb	$7, %dl
      	movl	%eax, %ecx
      	andl	$7168, %ecx
      	andl	$-7201, %ebx
      	movzbl	%dl, %edx
      	andl	$1, %edx
      	sall	$5, %edx
      	orl	%ecx, %ebx
      	orl	%edx, %ebx
      	andl	$24, %eax
      	andl	$-58336, %ebx
      	orl	%eax, %ebx
      	orl	$32962, %ebx
      	movl	%ebx, %eax
      	popl	%ebx
      	ret
      
      llvm-svn: 82439
      0a9616d9
    • Evan Cheng's avatar
      Fix PR4986. "r1024 = insert_subreg r1024, undef, 2" cannot be turned in an... · fccbd0af
      Evan Cheng authored
      Fix PR4986. "r1024 = insert_subreg r1024, undef, 2" cannot be turned in an implicit_def. Instead, it's an identity copy so it should be eliminated. Also make sure to update livevariable kill information.
      
      llvm-svn: 82436
      fccbd0af
    • Chris Lattner's avatar
      one case handled, expanded another testcase inline. · 9858859f
      Chris Lattner authored
      llvm-svn: 82427
      9858859f
    • Chris Lattner's avatar
      formatting cleanups, no functionality change. · 1eefa9c4
      Chris Lattner authored
      llvm-svn: 82426
      1eefa9c4
    • Reid Kleckner's avatar
      Implement the JIT side of the GDB JIT debugging interface. To enable this · 9a10db8c
      Reid Kleckner authored
      feature, either build the JIT in debug mode to enable it by default or pass
      -jit-emit-debug to lli.
      
      Right now, the only debug information that this communicates to GDB is call
      frame information, since it's already being generated to support exceptions in
      the JIT.  Eventually, when DWARF generation isn't tied so tightly to AsmPrinter,
      it will be easy to push that information to GDB through this interface.
      
      Here's a step-by-step breakdown of how the feature works:
      
      - The JIT generates the machine code and DWARF call frame info
        (.eh_frame/.debug_frame) for a function into memory.
      - The JIT copies that info into an in-memory ELF file with a symbol for the
        function.
      - The JIT creates a code entry pointing to the ELF buffer and adds it to a
        linked list hanging off of a global descriptor at a special symbol that GDB
        knows about.
      - The JIT calls a function marked noinline that GDB knows about and has put an
        internal breakpoint in.
      - GDB catches the breakpoint and reads the global descriptor to look for new
        code.
      - When sees there is new code, it reads the ELF from the inferior's memory and
        adds it to itself as an object file.
      - The JIT continues, and the next time we stop the program, we are able to
        produce a proper backtrace.
      
      Consider running the following program through the JIT:
      
      #include <stdio.h>
      void baz(short z) {
        long w = z + 1;
        printf("%d, %x\n", w, *((int*)NULL));  // SEGFAULT here
      }
      void bar(short y) {
        int z = y + 1;
        baz(z);
      }
      void foo(char x) {
        short y = x + 1;
        bar(y);
      }
      int main(int argc, char** argv) {
        char x = 1;
        foo(x);
      }
      
      Here is a backtrace before this patch:
      Program received signal SIGSEGV, Segmentation fault.
      [Switching to Thread 0x2aaaabdfbd10 (LWP 25476)]
      0x00002aaaabe7d1a8 in ?? ()
      (gdb) bt
      #0  0x00002aaaabe7d1a8 in ?? ()
      #1  0x0000000000000003 in ?? ()
      #2  0x0000000000000004 in ?? ()
      #3  0x00032aaaabe7cfd0 in ?? ()
      #4  0x00002aaaabe7d12c in ?? ()
      #5  0x00022aaa00000003 in ?? ()
      #6  0x00002aaaabe7d0aa in ?? ()
      #7  0x01000002abe7cff0 in ?? ()
      #8  0x00002aaaabe7d02c in ?? ()
      #9  0x0100000000000001 in ?? ()
      #10 0x00000000014388e0 in ?? ()
      #11 0x00007fff00000001 in ?? ()
      #12 0x0000000000b870a2 in llvm::JIT::runFunction (this=0x1405b70,
      F=0x14024e0, ArgValues=@0x7fffffffe050)
         at /home/rnk/llvm-gdb/lib/ExecutionEngine/JIT/JIT.cpp:395
      #13 0x0000000000baa4c5 in llvm::ExecutionEngine::runFunctionAsMain
      (this=0x1405b70, Fn=0x14024e0, argv=@0x13f06f8, envp=0x7fffffffe3b0)
         at /home/rnk/llvm-gdb/lib/ExecutionEngine/ExecutionEngine.cpp:377
      #14 0x00000000007ebd52 in main (argc=2, argv=0x7fffffffe398,
      envp=0x7fffffffe3b0) at /home/rnk/llvm-gdb/tools/lli/lli.cpp:208
      
      And a backtrace after this patch:
      Program received signal SIGSEGV, Segmentation fault.
      0x00002aaaabe7d1a8 in baz ()
      (gdb) bt
      #0  0x00002aaaabe7d1a8 in baz ()
      #1  0x00002aaaabe7d12c in bar ()
      #2  0x00002aaaabe7d0aa in foo ()
      #3  0x00002aaaabe7d02c in main ()
      #4  0x0000000000b870a2 in llvm::JIT::runFunction (this=0x1405b70,
      F=0x14024e0, ArgValues=...)
         at /home/rnk/llvm-gdb/lib/ExecutionEngine/JIT/JIT.cpp:395
      #5  0x0000000000baa4c5 in llvm::ExecutionEngine::runFunctionAsMain
      (this=0x1405b70, Fn=0x14024e0, argv=..., envp=0x7fffffffe3c0)
         at /home/rnk/llvm-gdb/lib/ExecutionEngine/ExecutionEngine.cpp:377
      #6  0x00000000007ebd52 in main (argc=2, argv=0x7fffffffe3a8,
      envp=0x7fffffffe3c0) at /home/rnk/llvm-gdb/tools/lli/lli.cpp:208
      
      llvm-svn: 82418
      9a10db8c
    • Chris Lattner's avatar
      simplify as daniel suggests · 5a3a8542
      Chris Lattner authored
      llvm-svn: 82415
      5a3a8542
    • Chris Lattner's avatar
      Revert r82404, it is causing a bootstrap miscompile. This is very very · 7e6d56eb
      Chris Lattner authored
      scary, as it indicates a lurking bug. yay.
      
      llvm-svn: 82411
      7e6d56eb
  2. Sep 20, 2009
Loading