On Thu, 19 Nov 2020, Uecker, Martin wrote: > Here is another version of the patch. The > only difference is the additional the check > using 'tree_ssa_useless_type_conversion'.
The code changes in this one are OK. However, in the test: > +void f(void) > +{ > + const int j; > + typeof((0,j)) i10; i10 = j;; > + typeof(+j) i11; i11 = j;; > + typeof(-j) i12; i12 = j;; > + typeof(1?j:0) i13; i13 = j;; > + typeof((int)j) i14; i14 = j;; > + typeof((const int)j) i15; i15 = j;; > +} This test function seems fine. > +void g(void) > +{ > + volatile int j; > + typeof((0,j)) i21; i21 = j;; > + typeof(+j) i22; i22 = j;; > + typeof(-j) i23; i23 = j;; > + typeof(1?j:0) i24; i24 = j;; > + typeof((int)j) i25; i25 = j;; > + typeof((volatile int)j) i26; i26 = j;; > +} > + > +void h(void) > +{ > + _Atomic int j; > + typeof((0,j)) i32; i32 = j;; > + typeof(+j) i33; i33 = j;; > + typeof(-j) i34; i34 = j;; > + typeof(1?j:0) i35; i35 = j;; > + typeof((int)j) i36; i36 = j;; > + typeof((_Atomic int)j) i37; i37 = j;; > +} > + > +void e(void) > +{ > + int* restrict j; > + typeof((0,j)) i43; i43 = j;; > + typeof(1?j:0) i44; i44 = j;; > + typeof((int*)j) i45; i45 = j;; > + typeof((int* restrict)j) i46; i46 = j;; > +} But these tests don't look like they do anything useful (i.e. verify that typeof loses the qualifier), because testing by assignment like that only works with const. You could do e.g. volatile int j; extern int i; extern typeof((0,j)) i; instead to verify the qualifier is removed. -- Joseph S. Myers jos...@codesourcery.com