Hi! On unsigned_char targets, the cast stmt to unsigned char is obviously not needed (and shouldn't be there). But it doesn't hurt to test the rest also on targets where char is unsigned.
Tested on x86_64-linux and with cross to powerpc64le-linux, committed to trunk. 2021-03-10 Jakub Jelinek <ja...@redhat.com> PR tree-optimization/99305 PR testsuite/99498 * g++.dg/opt/pr99305.C: Don't expect cast to unsigned char on unsigned_char effective targets. --- gcc/testsuite/g++.dg/opt/pr99305.C.jj 2021-03-09 19:13:03.359524234 +0100 +++ gcc/testsuite/g++.dg/opt/pr99305.C 2021-03-10 17:31:58.495527765 +0100 @@ -1,7 +1,7 @@ // PR tree-optimization/99305 // { dg-do compile } // { dg-options "-O3 -fno-ipa-icf -fdump-tree-optimized" } -// { dg-final { scan-tree-dump-times " = \\\(unsigned char\\\) c_\[0-9]*\\\(D\\\);" 3 "optimized" } } +// { dg-final { scan-tree-dump-times " = \\\(unsigned char\\\) c_\[0-9]*\\\(D\\\);" 3 "optimized" { target { ! unsigned_char } } } } // { dg-final { scan-tree-dump-times " = \[^\n\r]* \\+ \[0-9]*;" 3 "optimized" } } // { dg-final { scan-tree-dump-times " = \[^\n\r]* <= 9;" 3 "optimized" } } // { dg-final { scan-tree-dump-not "if \\\(c_\[0-9]*\\\(D\\\) \[!=]= 0\\\)" "optimized" } } Jakub