]> granicus.if.org Git - clang/commitdiff
Revert r230448, "Reland r230314 "Fix codegen for virtual methods that are (re-) expor...
authorNAKAMURA Takumi <geek4civic@gmail.com>
Wed, 25 Feb 2015 10:49:59 +0000 (10:49 +0000)
committerNAKAMURA Takumi <geek4civic@gmail.com>
Wed, 25 Feb 2015 10:49:59 +0000 (10:49 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@230477 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AST/VTableBuilder.cpp
test/Modules/Inputs/merge-vtable-codegen/a.h [deleted file]
test/Modules/Inputs/merge-vtable-codegen/b.h [deleted file]
test/Modules/Inputs/merge-vtable-codegen/c.h [deleted file]
test/Modules/Inputs/merge-vtable-codegen/merge-vtable-codegen.modulemap [deleted file]
test/Modules/merge-vtable-codegen.cpp [deleted file]

index 4e7715d7f02fde62be2076cfc867be0b061ba7e5..8632ff81fab0871670247bd48480eef2ecc1b32a 100644 (file)
@@ -411,8 +411,7 @@ void FinalOverriders::dump(raw_ostream &Out, BaseSubobject Base,
   for (const auto *MD : RD->methods()) {
     if (!MD->isVirtual())
       continue;
-    MD = MD->getCanonicalDecl();
-
+  
     OverriderInfo Overrider = getOverrider(MD, Base.getBaseOffset());
 
     Out << "  ";
@@ -696,7 +695,6 @@ void VCallAndVBaseOffsetBuilder::AddVCallOffsets(BaseSubobject Base,
   for (const auto *MD : RD->methods()) {
     if (!MD->isVirtual())
       continue;
-    MD = MD->getCanonicalDecl();
 
     CharUnits OffsetOffset = getCurrentOffsetOffset();
     
@@ -1516,7 +1514,6 @@ void ItaniumVTableBuilder::AddMethods(
   for (const auto *MD : RD->methods()) {
     if (!MD->isVirtual())
       continue;
-    MD = MD->getCanonicalDecl();
 
     // Get the final overrider.
     FinalOverriders::OverriderInfo Overrider = 
@@ -2199,7 +2196,6 @@ void ItaniumVTableBuilder::dumpLayout(raw_ostream &Out) {
     // We only want virtual member functions.
     if (!MD->isVirtual())
       continue;
-    MD = MD->getCanonicalDecl();
 
     std::string MethodName =
       PredefinedExpr::ComputeName(PredefinedExpr::PrettyFunctionNoVirtual,
diff --git a/test/Modules/Inputs/merge-vtable-codegen/a.h b/test/Modules/Inputs/merge-vtable-codegen/a.h
deleted file mode 100644 (file)
index c288537..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifndef A_H
-#define A_H
-
-struct A {
-  virtual void x();
-};
-
-#endif
diff --git a/test/Modules/Inputs/merge-vtable-codegen/b.h b/test/Modules/Inputs/merge-vtable-codegen/b.h
deleted file mode 100644 (file)
index 770e460..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifndef B_H
-#define B_H
-
-#include "a.h"
-
-class B : virtual public A {
-  virtual void x() {}
-};
-
-void b(A* p) {
-  p->x();
-  // Instantiating a class that virtually inherits 'A'
-  // triggers calculation of the vtable offsets in 'A'.
-  B b;
-}
-
-#endif
diff --git a/test/Modules/Inputs/merge-vtable-codegen/c.h b/test/Modules/Inputs/merge-vtable-codegen/c.h
deleted file mode 100644 (file)
index 40cbbb0..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef C_H
-#define C_H
-
-#include "a.h"
-
-#endif
diff --git a/test/Modules/Inputs/merge-vtable-codegen/merge-vtable-codegen.modulemap b/test/Modules/Inputs/merge-vtable-codegen/merge-vtable-codegen.modulemap
deleted file mode 100644 (file)
index 1edaa07..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-module "a" {
-  textual header "a.h"
-}
-
-module "b" {
-  header "b.h"
-}
-
-module "c" {
-  header "c.h"
-}
diff --git a/test/Modules/merge-vtable-codegen.cpp b/test/Modules/merge-vtable-codegen.cpp
deleted file mode 100644 (file)
index 7372073..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-// RUN: rm -rf %t
-
-// First, build two modules that both re-export the same header.
-// RUN: %clang_cc1 -x c++ -std=c++11 -fmodules -fmodule-name=b -o %t/b.pcm -fmodule-maps \
-// RUN:     -emit-module %S/Inputs/merge-vtable-codegen/merge-vtable-codegen.modulemap \
-// RUN:     -I %S/Inputs/merge-vtable-codegen
-// RUN: %clang_cc1 -x c++ -std=c++11 -fmodules -fmodule-name=c -o %t/c.pcm -fmodule-maps \
-// RUN:     -emit-module %S/Inputs/merge-vtable-codegen/merge-vtable-codegen.modulemap \
-// RUN:     -I %S/Inputs/merge-vtable-codegen
-
-// Use the two modules in a single compile.
-// RUN: %clang_cc1 -x c++ -std=c++11 -fmodules -fmodule-file=%t/b.pcm -fmodule-file=%t/c.pcm \
-// RUN:     -fmodule-map-file=%S/Inputs/merge-vtable-codegen/merge-vtable-codegen.modulemap \
-// RUN:     -emit-llvm -o %t/test.o %s
-
-// Note that order is important:
-// Module 'c' just reexports A, while module 'b' defines a method that uses a
-// virtual method of A.
-#include "Inputs/merge-vtable-codegen/c.h"
-#include "Inputs/merge-vtable-codegen/b.h"
-
-void t() {
-  b(nullptr);
-}