Skip to content
  1. Jul 13, 2004
    • 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