Ping. Il 07/09/2014 14:44, Abramo Bagnara ha scritto: > Il 07/09/2014 13:05, Abramo Bagnara ha scritto: >> Il 07/09/2014 05:25, Richard Smith ha scritto: >>> On Sat, Sep 6, 2014 at 3:27 AM, Abramo Bagnara >>> <[email protected] <mailto:[email protected]>> wrote: >>> >>> Ping >>> >>> Il 04/09/2014 15:13, Abramo Bagnara ha scritto: >>> > >>> > For the following source >>> > >>> > void f() { >>> > char *p; >>> > const char *cp; >>> > p == cp; >>> > p != cp; >>> > p < cp; >>> > p <= cp; >>> > p > cp; >>> > p >= cp; >>> > p - cp; >>> > } >>> > >>> > clang (unexpectedly for me) emits an implicit cast from const char >>> * to >>> > char * (i.e. it remove a qualifier) for all the relational and >>> equality >>> > operator, but it (expectedly) does not emit one for the subtraction. >>> > >>> > AFAIK the C standard does not require any conversion for >>> relational and >>> > equality operator (just like for subtraction). >>> > >>> > Do we have a reason to add the implicit casts or it is a bug? >>> >>> >>> It seems like a minor convenience to have an AST invariant that both >>> operands are of the same type here, but I expect we could remove these >>> implicit casts without any significant repercussions; I'd be mildly in >>> favor of doing that since it improves AST fidelity. >> >> I've attached a patch doing that. >> >> Ok to commit? > > I've attached a patch that follows better what standard requires and > that previously was not done. I've also weakened an assertion to avoid > to have an exceedingly complex condition. > >
-- Abramo Bagnara BUGSENG srl - http://bugseng.com mailto:[email protected] _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
