[cfe-commits] r94208 - in /cfe/trunk: lib/AST/RecordLayoutBuilder.cpp test/CodeGenCXX/virt.cpp
Chris Lattner
clattner at apple.com
Fri Jan 22 12:39:06 PST 2010
On Jan 22, 2010, at 12:27 PM, Mike Stump wrote:
> Author: mrs
> Date: Fri Jan 22 14:27:17 2010
> New Revision: 94208
>
> URL: http://llvm.org/viewvc/llvm-project?rev=94208&view=rev
> Log:
> Be sure to select primary bases among the nearly empties in preorder,
> not just among the direct bases. Before we where missing nearly
> empties that were bases of virtual base classes.
hi Mike,
Thanks for improving this area. However, please either switch
virt.cpp to use -emit-llvm (or some other way of verifying the output)
or start adding new testcases to a virt2.cpp that doesn't grep the .s
file. Continuing to make virt.cpp worse is not good.
-Chris
>
> Modified:
> cfe/trunk/lib/AST/RecordLayoutBuilder.cpp
> cfe/trunk/test/CodeGenCXX/virt.cpp
>
> Modified: cfe/trunk/lib/AST/RecordLayoutBuilder.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/RecordLayoutBuilder.cpp?rev=94208&r1=94207&r2=94208&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- cfe/trunk/lib/AST/RecordLayoutBuilder.cpp (original)
> +++ cfe/trunk/lib/AST/RecordLayoutBuilder.cpp Fri Jan 22 14:27:17 2010
> @@ -119,6 +119,11 @@
> return;
> }
> }
> + if (i->isVirtual()) {
> + SelectPrimaryVBase(Base, FirstPrimary);
> + if (PrimaryBase.getBase())
> + return;
> + }
> }
> }
>
>
> Modified: cfe/trunk/test/CodeGenCXX/virt.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/virt.cpp?rev=94208&r1=94207&r2=94208&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- cfe/trunk/test/CodeGenCXX/virt.cpp (original)
> +++ cfe/trunk/test/CodeGenCXX/virt.cpp Fri Jan 22 14:27:17 2010
> @@ -1091,6 +1091,45 @@
> // CHECK-LP64-NEXT: .quad __ZThn8_N8test22_D4dtorEv
>
>
> +class test23_s1 {
> + virtual void fun1(char *t) { }
> +};
> +class test23_s2 {
> + virtual void fun2(char *t) { }
> +};
> +class test23_s3 {
> + virtual void fun3(char *t) { }
> +};
> +class test23_s4: virtual test23_s1, test23_s2, test23_s3 {
> + virtual void fun4(char *t) { }
> +};
> +class test23_D: virtual test23_s4 {
> + virtual void fun5(char *t) { }
> +};
> +
> +
> +// CHECK-LP64: __ZTV8test23_D:
> +// CHECK-LP64-NEXT: .quad 0
> +// CHECK-LP64-NEXT: .quad 8
> +// CHECK-LP64-NEXT: .quad 0
> +// CHECK-LP64-NEXT: .quad 0
> +// CHECK-LP64-NEXT: .quad __ZTI8test23_D
> +// CHECK-LP64-NEXT: .quad __ZN9test23_s14fun1EPc
> +// CHECK-LP64-NEXT: .quad __ZN8test23_D4fun5EPc
> +// CHECK-LP64-NEXT .quad 8
> +// CHECK-LP64: .quad 0
> +// CHECK-LP64-NEXT: .quad 0
> +// CHECK-LP64: .quad 18446744073709551608
> +// CHECK-LP64-NEXT: .quad 18446744073709551608
> +// CHECK-LP64-NEXT: .quad __ZTI8test23_D
> +// CHECK-LP64-NEXT: .quad __ZN9test23_s24fun2EPc
> +// CHECK-LP64-NEXT: .quad __ZN9test23_s44fun4EPc
> +// CHECK-LP64-NEXT: .quad 18446744073709551600
> +// CHECK-LP64-NEXT: .quad __ZTI8test23_D
> +// CHECK-LP64-NEXT: .quad __ZN9test23_s34fun3EPc
> +
> +
> +test23_D d23;
> test22_D d22;
> test21_D d21;
> test20_D d20;
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
More information about the cfe-commits
mailing list