Skip to content
  1. May 26, 2010
  2. May 25, 2010
    • Dan Gohman's avatar
      Do one map lookup instead of two. · ce3269b8
      Dan Gohman authored
      llvm-svn: 104645
      ce3269b8
    • Dan Gohman's avatar
      Fix a missing newline in debug output. · a4abd035
      Dan Gohman authored
      llvm-svn: 104644
      a4abd035
    • Eric Christopher's avatar
      Move the verbose asm output up a bit so it can be used in the special cases · f3925438
      Eric Christopher authored
      as well.
      
      llvm-svn: 104642
      f3925438
    • Bill Wendling's avatar
      Okay, bear with me here... · b04ef0cf
      Bill Wendling authored
      If you have a setjmp/longjmp situation, it's possible for stack slot coloring to
      reuse a stack slot before it's really dead. For instance, if we have something
      like this:
      
      1:  y = g;
          x = sigsetjmp(env, 0);
          switch (x) {
          case 1:
            /* ... */
            goto run;  
          case 0:
        run:
            do_run(); /* marked as "no return" */
            break;
          case 3:
            if (...) {
              /* ... */
              goto run;
            }
            /* ... */
            break;
          }
      
      2:  g = y;
      
      "y" may be put onto the stack, so the expression "g = y" is relying upon the
      fact that the stack slot containing "y" isn't modified between (1) and (2). But
      it can be, because of the "no return" calls in there. A longjmp might come back
      with 3, modify the stack slot, and then go to case 0. And it's perfectly
      acceptable to reuse the stack slot there because there's no CFG flow from case 3
      to (2).
      
      The fix is to disable certain optimizations in these situations. Ideally, we'd
      disable them for all "returns twice" functions. But we don't support that
      attribute. Check for "setjmp" and "sigsetjmp" instead.
      
      llvm-svn: 104640
      b04ef0cf
    • Eric Christopher's avatar
      Add support for initialized global data for darwin tls. Update comments · 19a4b843
      Eric Christopher authored
      and testcases accordingly.
      
      llvm-svn: 104635
      19a4b843
    • Kevin Enderby's avatar
      Changed the encoding of X86 floating point stack operations where both operands · 492d4f40
      Kevin Enderby authored
      are st(0).  These can be encoded using an opcode for storing in st(0) or using
      an opcode for storing in st(i), where i can also be 0.  To allow testing with
      the darwin assembler and get a matching binary the opcode for storing in st(0)
      is now used.  To do this the same logical trick is use from the darwin assembler
      in converting things like this:
      
      fmul %st(0), %st
      
      into this:
      
      fmul %st(0)
      
      by looking for the second operand being X86::ST0 for specific floating point
      mnemonics then removing the second X86::ST0 operand.  This also has the add
      benefit to allow things like:
      
      fmul %st(1), %st
      
      that llvm-mc did not assemble.
      
      llvm-svn: 104634
      492d4f40
    • Jakob Stoklund Olesen's avatar
      Separate unrelated cases that once shared a numeric value · 3311eb50
      Jakob Stoklund Olesen authored
      llvm-svn: 104629
      3311eb50
Loading