[llvm-commits] CAUTION: Type != Value

In VMCore/Module.cpp i found line (254):

  ((Value*)Ty)->setName(Name, &ST);

Type is not Value now and for me this code call
llvm::DerivedType::addAbstractTypeUser (I think it have same index in Type
VMT in as setName in Value VMT)
with random argument values and terminated with assert fail:

Assertion failed: (isAbstract() && "addAbstractTypeUser: Current type not
abstract!"), function addAbstractTypeUser, file
/home/wanderer/pkg/build/llvm/src/llvm/include/llvm/DerivedTypes.h, line 73.

In Chris Lattner remove setName from Type class
http://mail.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20040705/015869.html

And then i remove bogus code line as may not correct but tempory workaround
for me.

Vladimir

In VMCore/Module.cpp i found line (254):

  ((Value*)Ty)->setName(Name, &ST);

[skip]

And then i remove bogus code line as may not correct but tempory

workaround

for me.

Now my YAFL frontend can be compiled but it generete invalid code as result
of change.

Vladimir

Vladimir,

As you noted, the cast to Value* from (I presume) Type* is now invalid
as there is no inheritance relationship. You can give a type a name by
converting:

Ty->setName(Name, &ST)

to:

ST.insert(Name, Ty)

Hope that helps.

Reid.

As you noted, the cast to Value* from (I presume) Type* is now invalid
as there is no inheritance relationship. You can give a type a name by
converting:

Ty->setName(Name, &ST)

to:

ST.insert(Name, Ty)

Hope that helps.

This is resolve problem for me.

Is attached patch ok for llvm/lib/VMCore/Module.cpp ?

Vladimir

Module.patch (345 Bytes)

Vladimir,

I thought Chris had already made that patch but apparently not. Anyway,
I've applied it. Thanks very much for noticing this and sorry for the
grief it caused you.

Patch is here:

http://mail.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20040705/015881.html

Reid.