Improper implicit pointer cast in AST

Abramo Bagnara abramo.bagnara at bugseng.com
Thu Sep 4 06:13:56 PDT 2014


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?

-- 
Abramo Bagnara

BUGSENG srl - http://bugseng.com
mailto:abramo.bagnara at bugseng.com



More information about the cfe-commits mailing list