LLVM: lib/Support/regexec.c File Reference (original) (raw)

#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <[string.h](string%5F8h%5Fsource.html)>
#include <limits.h>
#include <ctype.h>
#include "[regex_impl.h](regex%5F%5Fimpl%5F8h%5Fsource.html)"
#include "[regutils.h](regutils%5F8h%5Fsource.html)"
#include "[regex2.h](regex2%5F8h%5Fsource.html)"
#include "[regengine.inc](regengine%5F8inc%5Fsource.html)"

Go to the source code of this file.

Macros
#define states1 long /* for later use in llvm_regexec() decision */
#define states states1
#define CLEAR(v)
#define SET0(v, n)
#define SET1(v, n)
#define ISSET(v, n)
#define ASSIGN(d, s)
#define EQ(a, b)
#define STATEVARS long dummy /* dummy version */
#define STATESETUP(m, n)
#define STATETEARDOWN(m)
#define SETUP(v)
#define onestate long
#define INIT(o, n)
#define INC(o)
#define ISSTATEIN(v, o)
#define FWD(dst, src, n)
#define BACK(dst, src, n)
#define ISSETBACK(v, n)
#define SNAMES /* engine.inc looks after details */
#define states char *
#define CLEAR(v)
#define SET0(v, n)
#define SET1(v, n)
#define ISSET(v, n)
#define ASSIGN(d, s)
#define EQ(a, b)
#define STATEVARS long vn; char *space
#define STATESETUP(m, nv)
#define STATETEARDOWN(m)
#define SETUP(v)
#define onestate long
#define INIT(o, n)
#define INC(o)
#define ISSTATEIN(v, o)
#define FWD(dst, src, n)
#define BACK(dst, src, n)
#define ISSETBACK(v, n)
#define LNAMES /* flag */
#define GOODFLAGS(f)

ASSIGN [1/2]

ASSIGN [2/2]

Value:

memmove(d, s, m->g->nstates)

Definition at line 64 of file regexec.c.

BACK [1/2]

#define BACK ( dst,
src,
n )

Value:

((dst) |= ((unsigned long)(src)&(here)) >> (n))

Definition at line 77 of file regexec.c.

BACK [2/2]

#define BACK ( dst,
src,
n )

Value:

((dst)[here-(n)] |= (src)[here])

Definition at line 77 of file regexec.c.

CLEAR [1/2]

CLEAR [2/2]

Value:

memset(v, 0, m->g->nstates)

Definition at line 60 of file regexec.c.

EQ [1/2]

EQ [2/2]

Value:

(memcmp(a, b, m->g->nstates) == 0)

Merge contiguous icmps into a memcmp

Definition at line 65 of file regexec.c.

FWD [1/2]

#define FWD ( dst,
src,
n )

Value:

((dst) |= ((unsigned long)(src)&(here)) << (n))

Definition at line 76 of file regexec.c.

FWD [2/2]

#define FWD ( dst,
src,
n )

Value:

((dst)[here+(n)] |= (src)[here])

Definition at line 76 of file regexec.c.

GOODFLAGS

INC [1/2]

Value:

((o) = (unsigned long)(o) << 1)

Definition at line 72 of file regexec.c.

INC [2/2]

INIT [1/2]

INIT [2/2]

ISSET [1/2]

Value:

(((v) & ((unsigned long)1 << (n))) != 0)

Definition at line 63 of file regexec.c.

ISSET [2/2]

ISSETBACK [1/2]

#define ISSETBACK ( v,
n )

Value:

(((v) & ((unsigned long)here >> (n))) != 0)

Definition at line 78 of file regexec.c.

ISSETBACK [2/2]

#define ISSETBACK ( v,
n )

ISSTATEIN [1/2]

#define ISSTATEIN ( v,
o )

ISSTATEIN [2/2]

#define ISSTATEIN ( v,
o )

LNAMES

#define LNAMES /* flag */

onestate [1/2]

onestate [2/2]

SET0 [1/2]

Value:

((v) &= ~((unsigned long)1 << (n)))

Definition at line 61 of file regexec.c.

SET0 [2/2]

SET1 [1/2]

Value:

((v) |= (unsigned long)1 << (n))

Definition at line 62 of file regexec.c.

SET1 [2/2]

SETUP [1/2]

SETUP [2/2]

Value:

((v) = &m->space[m->vn++ * m->g->nstates])

Definition at line 69 of file regexec.c.

SNAMES

#define SNAMES /* engine.inc looks after details */

states [1/2]

states [2/2]

states1

STATESETUP [1/2]

#define STATESETUP ( m,
n )

STATESETUP [2/2]

#define STATESETUP ( m,
nv )

Value:

{ (m)->space = malloc((nv)*(m)->g->nstates); \

if ((m)->space == NULL) return(REG_ESPACE); \

(m)->vn = 0; }

INLINE void g(uint32_t *state, size_t a, size_t b, size_t c, size_t d, uint32_t x, uint32_t y)

Definition at line 67 of file regexec.c.

STATETEARDOWN [1/2]

#define STATETEARDOWN ( m )

STATETEARDOWN [2/2]

#define STATETEARDOWN ( m )

STATEVARS [1/2]

#define STATEVARS long dummy /* dummy version */

STATEVARS [2/2]

#define STATEVARS long vn; char *space

llvm_regexec()

Definition at line 141 of file regexec.c.

References assert(), g(), GOODFLAGS, MAGIC1, MAGIC2, llvm_regex::re_g, llvm_regex::re_magic, REG_BADPAT, REG_LARGE, REGEX_BAD, and states1.

Referenced by llvm::Regex::match().