Skip to content
  1. Jul 13, 2004
    • Chris Lattner's avatar
      A couple of substantial cleanup fixes: · 2ed776bb
      Chris Lattner authored
        1. Split setValueName into two separate functions, one that is only used
           at function scope and doesn't have to deal with duplicates, and one
           that can be used either at global or function scope but that does deal
           with conflicts.  Conflicts were only in there because of the crappy old
           CFE and probably should be entirely eliminated.
        2. Insert BasicBlock's into the parent functions when they are created
           instead of when they are complete.  This effects name lookup (for the
           better), which will be exploited in the next patch.
      
      llvm-svn: 14787
      2ed776bb
    • Brian Gaeke's avatar
      Fix warning on SparcV9, where sizeof (int) != sizeof (void *). · b88d2a44
      Brian Gaeke authored
      llvm-svn: 14786
      b88d2a44
    • Chris Lattner's avatar
      Replace a bunch of complex ConstantPointerRef referring code with simple · cc459c9d
      Chris Lattner authored
      code.
      
      llvm-svn: 14785
      cc459c9d
    • Chris Lattner's avatar
      Factor some code to handle "load (constantexpr cast foo)" just like · 35e24774
      Chris Lattner authored
      "load (cast foo)".  This allows us to compile C++ code like this:
      
      class Bclass {
        public: virtual int operator()() { return 666; }
      };
      
      class Dclass: public Bclass {
        public: virtual int operator()() { return 667; }
      } ;
      
      int main(int argc, char** argv) {
        Dclass x;
        return x();
      }
      
      Into this:
      
      int %main(int %argc, sbyte** %argv) {
      entry:
              call void %__main( )
              ret int 667
      }
      
      Instead of this:
      
      int %main(int %argc, sbyte** %argv) {
      entry:
              %x = alloca "struct.std::bad_typeid"            ; <"struct.std::bad_typeid"*> [#uses=3]
              call void %__main( )
              %tmp.1.i.i = getelementptr "struct.std::bad_typeid"* %x, uint 0, uint 0, uint 0         ; <int (...)***> [#uses=1]
              store int (...)** getelementptr ([3 x int (...)*]*  %vtable for Bclass, int 0, long 2), int (...)*** %tmp.1.i.i
              %tmp.3.i = getelementptr "struct.std::bad_typeid"* %x, int 0, uint 0, uint 0            ; <int (...)***> [#uses=1]
              store int (...)** getelementptr ([3 x int (...)*]*  %vtable for Dclass, int 0, long 2), int (...)*** %tmp.3.i
              %tmp.5 = load int ("struct.std::bad_typeid"*)** cast (int (...)** getelementptr ([3 x int (...)*]*  %vtable for Dclass, int 0, long 2) to int
      ("struct.std::bad_typeid"*)**)          ; <int ("struct.std::bad_typeid"*)*> [#uses=1]
              %tmp.6 = call int %tmp.5( "struct.std::bad_typeid"* %x )                ; <int> [#uses=1]
      	ret int %tmp.6
              ret int 0
      }
      
      In order words, we now resolve the virtual function call.
      
      llvm-svn: 14783
      35e24774
    • Misha Brukman's avatar
      Correctly load FP constants out of the constant pool. · be1b680f
      Misha Brukman authored
      llvm-svn: 14782
      be1b680f
    • Misha Brukman's avatar
      9dacda65
    • Misha Brukman's avatar
      dcb0eec8
  2. Jul 12, 2004
  3. Jul 11, 2004
  4. Jul 10, 2004
  5. Jul 09, 2004
Loading