Skip to content
  1. May 30, 2010
  2. May 29, 2010
  3. May 28, 2010
  4. May 27, 2010
  5. May 26, 2010
  6. May 25, 2010
    • Dan Gohman's avatar
      Do one map lookup instead of two. · ce3269b8
      Dan Gohman authored
      llvm-svn: 104645
      ce3269b8
    • 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
Loading