C++ Casting

In compiling my software to use LLVM, I have noticed many occurrences of
C style casting in LLVM header files. Since I compile with the
-Wold-style-cast flag to g++, I get warnings about each of them. This
isn't a big deal but I try to keep my code compilations both error
and warning free (makes spotting true errors easier).

I'm wondering why a new C++ (LLVM) would choose to use C style casting?
Wouldn't it be safer/clearer to use C++ style casting?

These occur pretty much only in Support/Casting.h and llvm/Use.h. They
may occur elsewhere but these are the only ones I've found so far.

A case in point:
/proj/work/llvm/include/Support/Casting.h: In static member function `static
   typename llvm::cast_retty<To, From>::ret_type llvm::cast_convert_val<To,
   FromTy, FromTy>::doit(const FromTy&)':
/proj/work/llvm/include/Support/Casting.h:181: warning: use of old-style cast

The offending code looks like:

template<class To, class FromTy> struct cast_convert_val<To,FromTy,FromTy> {
  // This _is_ a simple type, just cast it.
  static typename cast_retty<To, FromTy>::ret_type doit(const FromTy &Val) {
    return (typename cast_retty<To, FromTy>::ret_type)Val; }
};

Shouldn't the return statement look like:

return static_cast<typename cast_retty<To, FromTy>::ret_type>(Val);

?

Just curious ...

Sorry if this is an old issue ...

Reid.

In compiling my software to use LLVM, I have noticed many occurrences of
C style casting in LLVM header files. Since I compile with the
-Wold-style-cast flag to g++, I get warnings about each of them. This
isn't a big deal but I try to keep my code compilations both error
and warning free (makes spotting true errors easier).

Ah, ok, we never have used that flag. :slight_smile:

I'm wondering why a new C++ (LLVM) would choose to use C style casting?
Wouldn't it be safer/clearer to use C++ style casting?

Force of habit I gues...

These occur pretty much only in Support/Casting.h and llvm/Use.h. They
may occur elsewhere but these are the only ones I've found so far.

I have no problem with fixing this, though I would prefer to do it
incrementally as opposed to a monster patch. If you want to prepare
a patch for just the header files, I would have no problem with it...

-Chris

Consider it done. I really only care about the header files anyway :slight_smile:

Reid