[cfe-dev] [llvm-dev] Spurious cast warning for C++?

Brennan Vincent via cfe-dev cfe-dev at lists.llvm.org
Mon Apr 10 06:46:27 PDT 2017


-llvm-dev



Actually, maybe "spurious cast" is too broad and ambitious. Maybe it's
better to focus specifically on std::move.


The only thing I am really interested in is stuff like



class A {

public:

    A &operator=(const A &a) {

        // do some copy ...

        return *this;

    }

}



int f() {

    A a;

    A b;

    b = std::move(a);

}



, which can be a source of unforeseen performance bugs (e.g., people
think they are moving big vectors but really copying them)


On Mon, Apr 10, 2017, at 02:39 AM, mats petersson wrote:

> What does "have no effect" mean in this case? In my mind, there are
> many casts that have no effect - other than allowing the code to
> compile, which is quite an important effect in itself (e.g. casting a
> 32-bit unsigned to a pointer on your typical 32-bit system).
> Are you seeking to warn for:

>    int a;

>    int b;

>    a = (int) b;

> and similar things?

> 

> --

> Mats

> 

> On 9 April 2017 at 20:35, Craig Topper via llvm-dev <llvm-
> dev at lists.llvm.org> wrote:
>> This is question is probably better on the clang  cfe-dev list. 

>> 

>> On Sun, Apr 9, 2017 at 12:01 PM Brennan Vincent via llvm-dev <llvm-
>> dev at lists.llvm.org> wrote:
>>> How difficult would it be to add a warning to Clang when the
>>> programmer
>>>  performs a cast that provably has no effect?

>>> 

>>>  A particular case I have in mind is someone getting confused and
>>>  calling
>>>  std::move on an argument to a copy-constructor for a class that
>>>  doesn't
>>>  implement move semantics.

>>> 

>>>  I would be grateful if someone either (1) told me why this is

>>>  difficult/impossible, or (2) gave me some pointers to where I could
>>>  start trying to implement it...

>>>  _______________________________________________

>>>  LLVM Developers mailing list

>>> llvm-dev at lists.llvm.org

>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev

>> 

>> -- 

>> ~Craig

>> 

>> _______________________________________________

>>  LLVM Developers mailing list

>> llvm-dev at lists.llvm.org

>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev

>> 


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20170410/8349b14c/attachment.html>


More information about the cfe-dev mailing list