Skip to content
  1. Feb 13, 2010
  2. Feb 05, 2010
    • Jakob Stoklund Olesen's avatar
      Teach SimplifyCFG about magic pointer constants. · 916f48a0
      Jakob Stoklund Olesen authored
      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
      916f48a0
    • Dan Gohman's avatar
      Use a SmallSetVector instead of a SetVector; this code showed up as a · 8abb67df
      Dan Gohman authored
      malloc caller in a profile.
      
      llvm-svn: 95407
      8abb67df
  3. Feb 01, 2010
  4. Jan 30, 2010
  5. Jan 29, 2010
  6. Jan 27, 2010
  7. Jan 26, 2010
  8. Jan 25, 2010
  9. Jan 24, 2010
  10. Jan 23, 2010
  11. Jan 22, 2010
  12. Jan 21, 2010
  13. Jan 20, 2010
  14. Jan 18, 2010
  15. Jan 15, 2010
  16. Jan 12, 2010
  17. Jan 10, 2010
  18. Jan 09, 2010
  19. Jan 05, 2010
Loading