Asmprinter emits cast of constant wrong #1225
Labels
bugzilla
Issues migrated from bugzilla
compile-fail
Use [accepts-invalid] and [rejects-valid] instead
llvm:codegen
Extended Description
ribrdb@ribox:/tmp$ cat >inner.cc
#include
class B : std::ostrstream{
public:
B() {}
B(char* buf, int len, int ctr) : std::ostrstream(buf, len) { }
virtual int foo() { return 0; }
};
class A {
public:
A() : b((char*)0, 0, 0) { }
B b;
};
class C : public B {
public:
virtual int foo();
};
int C::foo() { return 5;};
int main() {
A *a = new A();
B b = new B((char)0, 0, 0);
b->foo();
a->b.foo();
return 0;
}
^D
ribrdb@ribox:/tmp$ gcc-3.4 -Wno-deprecated -S inner.cc
ribrdb@ribox:/tmp$ /usr/local/llvm/cfrontend/install/bin/llvm-gcc
-Wno-deprecated -S inner.cc -o inner-llvm.s
inner.cc:29: note: LLVM does not support aliases yet
inner.cc:29: note: LLVM does not support aliases yet
inner.cc:29: note: LLVM does not support aliases yet
inner.cc:29: note: LLVM does not support aliases yet
inner.s contains this vtable:
_ZTV1B:
.long 56
.long 0
.long _ZTI1B
.long _ZN1BD1Ev
.long _ZN1BD0Ev
.long _ZN1B3fooEv
.long -56
.long -56
.long _ZTI1B
.long _ZTv0_n12_N1BD1Ev
.long _ZTv0_n12_N1BD0Ev
but inner-llvm.s contains this vtable:
_ZTV1B: # _ZTV1B
.size _ZTV1B, 44
.long 56
.zero 4
.long _ZTI1B
.long _ZN1BD1Ev
.long _ZN1BD0Ev
.long _ZN1B3fooEv
.long 18446744073709551560
.long -56
.long _ZTI1B
.long _ZTv0_n12_N1BD1Ev
.long _ZTv0_n12_N1BD0Ev
The text was updated successfully, but these errors were encountered: