modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/builtins/strncmp-2.c (about) 1 /* Copyright (C) 2000, 2001, 2003, 2005 Free Software Foundation. 2 3 Ensure all expected transformations of builtin strncmp occur and 4 perform correctly. 5 6 Written by Kaveh R. Ghazi, 11/26/2000. */ 7 8 extern void abort (void); 9 typedef __SIZE_TYPE__ size_t; 10 extern int strncmp (const char *, const char *, size_t); 11 12 void 13 main_test (void) 14 { 15 #if !defined(__OPTIMIZE__) || ((defined(__sh__) || defined(__i386__) || defined (__x86_64__)) && !defined(__OPTIMIZE_SIZE__)) 16 /* These tests work on platforms which support cmpstrsi. We test it 17 at -O0 on all platforms to ensure the strncmp logic is correct. */ 18 const char *const s1 = "hello world"; 19 const char *s2; 20 int n = 6, x; 21 22 s2 = s1; 23 if (strncmp (++s2, "ello", 3) != 0 || s2 != s1+1) 24 abort(); 25 s2 = s1; 26 if (strncmp ("ello", ++s2, 3) != 0 || s2 != s1+1) 27 abort(); 28 s2 = s1; 29 if (strncmp (++s2, "ello", 4) != 0 || s2 != s1+1) 30 abort(); 31 s2 = s1; 32 if (strncmp ("ello", ++s2, 4) != 0 || s2 != s1+1) 33 abort(); 34 s2 = s1; 35 if (strncmp (++s2, "ello", 5) <= 0 || s2 != s1+1) 36 abort(); 37 s2 = s1; 38 if (strncmp ("ello", ++s2, 5) >= 0 || s2 != s1+1) 39 abort(); 40 s2 = s1; 41 if (strncmp (++s2, "ello", 6) <= 0 || s2 != s1+1) 42 abort(); 43 s2 = s1; 44 if (strncmp ("ello", ++s2, 6) >= 0 || s2 != s1+1) 45 abort(); 46 47 s2 = s1; 48 if (strncmp (++s2, "zllo", 3) >= 0 || s2 != s1+1) 49 abort(); 50 s2 = s1; 51 if (strncmp ("zllo", ++s2, 3) <= 0 || s2 != s1+1) 52 abort(); 53 s2 = s1; 54 if (strncmp (++s2, "zllo", 4) >= 0 || s2 != s1+1) 55 abort(); 56 s2 = s1; 57 if (strncmp ("zllo", ++s2, 4) <= 0 || s2 != s1+1) 58 abort(); 59 s2 = s1; 60 if (strncmp (++s2, "zllo", 5) >= 0 || s2 != s1+1) 61 abort(); 62 s2 = s1; 63 if (strncmp ("zllo", ++s2, 5) <= 0 || s2 != s1+1) 64 abort(); 65 s2 = s1; 66 if (strncmp (++s2, "zllo", 6) >= 0 || s2 != s1+1) 67 abort(); 68 s2 = s1; 69 if (strncmp ("zllo", ++s2, 6) <= 0 || s2 != s1+1) 70 abort(); 71 72 s2 = s1; 73 if (strncmp (++s2, "allo", 3) <= 0 || s2 != s1+1) 74 abort(); 75 s2 = s1; 76 if (strncmp ("allo", ++s2, 3) >= 0 || s2 != s1+1) 77 abort(); 78 s2 = s1; 79 if (strncmp (++s2, "allo", 4) <= 0 || s2 != s1+1) 80 abort(); 81 s2 = s1; 82 if (strncmp ("allo", ++s2, 4) >= 0 || s2 != s1+1) 83 abort(); 84 s2 = s1; 85 if (strncmp (++s2, "allo", 5) <= 0 || s2 != s1+1) 86 abort(); 87 s2 = s1; 88 if (strncmp ("allo", ++s2, 5) >= 0 || s2 != s1+1) 89 abort(); 90 s2 = s1; 91 if (strncmp (++s2, "allo", 6) <= 0 || s2 != s1+1) 92 abort(); 93 s2 = s1; 94 if (strncmp ("allo", ++s2, 6) >= 0 || s2 != s1+1) 95 abort(); 96 97 s2 = s1; n = 2; x = 1; 98 if (strncmp (++s2, s1+(x&3), ++n) != 0 || s2 != s1+1 || n != 3) 99 abort(); 100 s2 = s1; n = 2; x = 1; 101 if (strncmp (s1+(x&3), ++s2, ++n) != 0 || s2 != s1+1 || n != 3) 102 abort(); 103 s2 = s1; n = 3; x = 1; 104 if (strncmp (++s2, s1+(x&3), ++n) != 0 || s2 != s1+1 || n != 4) 105 abort(); 106 s2 = s1; n = 3; x = 1; 107 if (strncmp (s1+(x&3), ++s2, ++n) != 0 || s2 != s1+1 || n != 4) 108 abort(); 109 s2 = s1; n = 4; x = 1; 110 if (strncmp (++s2, s1+(x&3), ++n) != 0 || s2 != s1+1 || n != 5) 111 abort(); 112 s2 = s1; n = 4; x = 1; 113 if (strncmp (s1+(x&3), ++s2, ++n) != 0 || s2 != s1+1 || n != 5) 114 abort(); 115 s2 = s1; n = 5; x = 1; 116 if (strncmp (++s2, s1+(x&3), ++n) != 0 || s2 != s1+1 || n != 6) 117 abort(); 118 s2 = s1; n = 5; x = 1; 119 if (strncmp (s1+(x&3), ++s2, ++n) != 0 || s2 != s1+1 || n != 6) 120 abort(); 121 122 s2 = s1; n = 2; 123 if (strncmp (++s2, "zllo", ++n) >= 0 || s2 != s1+1 || n != 3) 124 abort(); 125 s2 = s1; n = 2; x = 1; 126 if (strncmp ("zllo", ++s2, ++n) <= 0 || s2 != s1+1 || n != 3) 127 abort(); 128 s2 = s1; n = 3; x = 1; 129 if (strncmp (++s2, "zllo", ++n) >= 0 || s2 != s1+1 || n != 4) 130 abort(); 131 s2 = s1; n = 3; x = 1; 132 if (strncmp ("zllo", ++s2, ++n) <= 0 || s2 != s1+1 || n != 4) 133 abort(); 134 s2 = s1; n = 4; x = 1; 135 if (strncmp (++s2, "zllo", ++n) >= 0 || s2 != s1+1 || n != 5) 136 abort(); 137 s2 = s1; n = 4; x = 1; 138 if (strncmp ("zllo", ++s2, ++n) <= 0 || s2 != s1+1 || n != 5) 139 abort(); 140 s2 = s1; n = 5; x = 1; 141 if (strncmp (++s2, "zllo", ++n) >= 0 || s2 != s1+1 || n != 6) 142 abort(); 143 s2 = s1; n = 5; x = 1; 144 if (strncmp ("zllo", ++s2, ++n) <= 0 || s2 != s1+1 || n != 6) 145 abort(); 146 147 s2 = s1; n = 2; 148 if (strncmp (++s2, "allo", ++n) <= 0 || s2 != s1+1 || n != 3) 149 abort(); 150 s2 = s1; n = 2; x = 1; 151 if (strncmp ("allo", ++s2, ++n) >= 0 || s2 != s1+1 || n != 3) 152 abort(); 153 s2 = s1; n = 3; x = 1; 154 if (strncmp (++s2, "allo", ++n) <= 0 || s2 != s1+1 || n != 4) 155 abort(); 156 s2 = s1; n = 3; x = 1; 157 if (strncmp ("allo", ++s2, ++n) >= 0 || s2 != s1+1 || n != 4) 158 abort(); 159 s2 = s1; n = 4; x = 1; 160 if (strncmp (++s2, "allo", ++n) <= 0 || s2 != s1+1 || n != 5) 161 abort(); 162 s2 = s1; n = 4; x = 1; 163 if (strncmp ("allo", ++s2, ++n) >= 0 || s2 != s1+1 || n != 5) 164 abort(); 165 s2 = s1; n = 5; x = 1; 166 if (strncmp (++s2, "allo", ++n) <= 0 || s2 != s1+1 || n != 6) 167 abort(); 168 s2 = s1; n = 5; x = 1; 169 if (strncmp ("allo", ++s2, ++n) >= 0 || s2 != s1+1 || n != 6) 170 abort(); 171 172 #endif 173 }