• Michal Nazarewicz's avatar
    Remove dead loop iterations in regex.c · 0e7eb640
    Michal Nazarewicz authored
    RE_CHAR_TO_MULTIBYTE(c) yields c for ASCII characters and a byte8
    character for c ≥ 0x80.  Furthermore, CHAR_BYTE8_P(c) is true only
    for byte8 characters.  This means that
    
    	c = RE_CHAR_TO_MULTIBYTE (ch);
    	if (! CHAR_BYTE8_P (c) && re_iswctype (c, cc))
    
    is equivalent to:
    
    	c = c;
    	if (! false && re_iswctype (c, cc))
    
    for 0 ⪬ c < 0x80, and
    
    	c = BYTE8_TO_CHAR (c);
    	if (! true && re_iswctype (c, cc))
    
    for 0x80 ⪬ c < 0x100.  In other words, the loop never executes for
    c ≥ 0x80 and RE_CHAR_TO_MULTIBYTE call is unnecessary for c < 0x80.
    
    * src/regex.c (regex_compile): Simplyfy a for loop by eliminating
    dead iterations and unnecessary macro calls.
    0e7eb640
regex.c 189 KB