// { dg-lto-do assemble }
|
// { dg-lto-do assemble }
|
// { dg-lto-options {{-fpreprocessed -O2 -fwhopr -funsigned-char}} }
|
// { dg-lto-options {{-fpreprocessed -O2 -fwhopr -funsigned-char}} }
|
typedef unsigned char uint8;
|
typedef unsigned char uint8;
|
extern const uint8 array[256];
|
extern const uint8 array[256];
|
static inline bool
|
static inline bool
|
g (unsigned char c)
|
g (unsigned char c)
|
{
|
{
|
return array[c] & 0x80;
|
return array[c] & 0x80;
|
}
|
}
|
|
|
class Class1
|
class Class1
|
{
|
{
|
static bool f1 (char **dst, const char *end, char c);
|
static bool f1 (char **dst, const char *end, char c);
|
static bool f2 (const char *map, const char **src, char **dst,
|
static bool f2 (const char *map, const char **src, char **dst,
|
const char *end);
|
const char *end);
|
static bool f3 (const char *src, char *dst, const char *end);
|
static bool f3 (const char *src, char *dst, const char *end);
|
};
|
};
|
|
|
enum JTipL
|
enum JTipL
|
{
|
{
|
KXHR8 = 0, KXNU3, KX_HASH, KXYYZ, KXFI9, KXX3, KXAFA, KXV4Z, KXZ11,
|
KXHR8 = 0, KXNU3, KX_HASH, KXYYZ, KXFI9, KXX3, KXAFA, KXV4Z, KXZ11,
|
};
|
};
|
|
|
static const char
|
static const char
|
p9t42[256] = { KXYYZ, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3,
|
p9t42[256] = { KXYYZ, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3,
|
KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3,
|
KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3,
|
KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3,
|
KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3,
|
KXX3, KXX3, KXX3, KXX3, KXX3, KXAFA, KXX3, KX_HASH, KXAFA,
|
KXX3, KXX3, KXX3, KXX3, KXX3, KXAFA, KXX3, KX_HASH, KXAFA,
|
KXFI9, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXV4Z, KXAFA, KXAFA,
|
KXFI9, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXV4Z, KXAFA, KXAFA,
|
KXAFA, KXV4Z, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA,
|
KXAFA, KXV4Z, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA,
|
KXAFA, KXAFA, KXAFA, KXAFA, KXHR8, KXX3, KXV4Z, KXX3, KXNU3,
|
KXAFA, KXAFA, KXAFA, KXAFA, KXHR8, KXX3, KXV4Z, KXX3, KXNU3,
|
KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA,
|
KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA,
|
KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA,
|
KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA,
|
KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA,
|
KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA,
|
KXX3, KXX3, KXX3, KXX3, KXAFA, KXX3, KXAFA, KXAFA, KXAFA, KXAFA,
|
KXX3, KXX3, KXX3, KXX3, KXAFA, KXX3, KXAFA, KXAFA, KXAFA, KXAFA,
|
KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA,
|
KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA,
|
KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA,
|
KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA, KXAFA,
|
KXAFA, KXAFA, KXAFA, KXAFA, KXX3, KXX3, KXX3, KXAFA, KXX3, KXX3,
|
KXAFA, KXAFA, KXAFA, KXAFA, KXX3, KXX3, KXX3, KXAFA, KXX3, KXX3,
|
KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3,
|
KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3,
|
KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3,
|
KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3,
|
KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3,
|
KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3,
|
KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3,
|
KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3,
|
KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3,
|
KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3,
|
KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3,
|
KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3,
|
KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3,
|
KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3,
|
KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3,
|
KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3,
|
KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3,
|
KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3,
|
KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3,
|
KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3,
|
KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3,
|
KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3,
|
KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3,
|
KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3,
|
KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3,
|
KXX3, KXX3, KXX3, KXX3, KXX3, KXX3, KXX3,
|
};
|
};
|
|
|
inline bool
|
inline bool
|
Class1::f2 (const char *map, const char **src, char **dst,
|
Class1::f2 (const char *map, const char **src, char **dst,
|
const char *end)
|
const char *end)
|
{
|
{
|
if (g ((*src)[1]) && g ((*src)[2]))
|
if (g ((*src)[1]) && g ((*src)[2]))
|
{
|
{
|
char c = (static_cast < unsigned char >((*src)[1])) & 0xf;
|
char c = (static_cast < unsigned char >((*src)[1])) & 0xf;
|
if (map[c] == KXAFA)
|
if (map[c] == KXAFA)
|
{
|
{
|
}
|
}
|
else if (f1 (dst, end, c))
|
else if (f1 (dst, end, c))
|
{
|
{
|
}
|
}
|
}
|
}
|
return true;
|
return true;
|
}
|
}
|
|
|
bool
|
bool
|
Class1::f3 (const char *src, char *dst, const char *end)
|
Class1::f3 (const char *src, char *dst, const char *end)
|
{
|
{
|
while (dst < end)
|
while (dst < end)
|
{
|
{
|
char c = *src;
|
char c = *src;
|
char m = p9t42[c];
|
char m = p9t42[c];
|
switch (m)
|
switch (m)
|
{
|
{
|
case KXYYZ:
|
case KXYYZ:
|
*dst = '\0';
|
*dst = '\0';
|
case KXFI9:
|
case KXFI9:
|
if (!f2 (p9t42, &src, &dst, end))
|
if (!f2 (p9t42, &src, &dst, end))
|
;
|
;
|
}
|
}
|
}
|
}
|
return false;
|
return false;
|
}
|
}
|
|
|