LLVM 22.0.0git
regexec.c File Reference
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <limits.h>
#include <ctype.h>
#include "regex_impl.h"
#include "regutils.h"
#include "regex2.h"
#include "regengine.inc"

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)

Functions

int llvm_regexec (const llvm_regex_t *preg, const char *string, size_t nmatch, llvm_regmatch_t pmatch[], int eflags)

Macro Definition Documentation

◆ ASSIGN [1/2]

#define ASSIGN ( d,
s )
Value:
((d) = (s))

Definition at line 64 of file regexec.c.

◆ ASSIGN [2/2]

#define ASSIGN ( d,
s )
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]

#define CLEAR ( v)
Value:
((v) = 0)

Definition at line 60 of file regexec.c.

◆ CLEAR [2/2]

#define CLEAR ( v)
Value:
memset(v, 0, m->g->nstates)

Definition at line 60 of file regexec.c.

◆ EQ [1/2]

#define EQ ( a,
b )
Value:
((a) == (b))

Definition at line 65 of file regexec.c.

Referenced by CCMaskForCondCode(), tomp::type::DefinedOperatorT< I, E >::ENUM(), and LowerVSETCC().

◆ EQ [2/2]

#define EQ ( a,
b )
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

#define GOODFLAGS ( f)
Value:
#define REG_STARTEND
Definition regex_impl.h:88
#define REG_NOTEOL
Definition regex_impl.h:87
#define REG_NOTBOL
Definition regex_impl.h:86

Referenced by llvm_regexec().

◆ INC [1/2]

#define INC ( o)
Value:
((o) = (unsigned long)(o) << 1)

Definition at line 72 of file regexec.c.

◆ INC [2/2]

#define INC ( o)
Value:
((o)++)

Definition at line 72 of file regexec.c.

◆ INIT [1/2]

#define INIT ( o,
n )
Value:
((o) = (unsigned long)1 << (n))

Definition at line 71 of file regexec.c.

Referenced by tokenizeWindowsCommandLineImpl().

◆ INIT [2/2]

#define INIT ( o,
n )
Value:
((o) = (n))

Definition at line 71 of file regexec.c.

◆ ISSET [1/2]

#define ISSET ( v,
n )
Value:
(((v) & ((unsigned long)1 << (n))) != 0)

Definition at line 63 of file regexec.c.

◆ ISSET [2/2]

#define ISSET ( v,
n )
Value:
((v)[n])

Definition at line 63 of file regexec.c.

◆ 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 )
Value:
((v)[here - (n)])

Definition at line 78 of file regexec.c.

◆ ISSTATEIN [1/2]

#define ISSTATEIN ( v,
o )
Value:
(((v) & (o)) != 0)

Definition at line 73 of file regexec.c.

◆ ISSTATEIN [2/2]

#define ISSTATEIN ( v,
o )
Value:
((v)[o])

Definition at line 73 of file regexec.c.

◆ LNAMES

#define LNAMES   /* flag */

Definition at line 129 of file regexec.c.

◆ onestate [1/2]

#define onestate   long

Definition at line 70 of file regexec.c.

◆ onestate [2/2]

#define onestate   long

Definition at line 70 of file regexec.c.

◆ SET0 [1/2]

#define SET0 ( v,
n )
Value:
((v) &= ~((unsigned long)1 << (n)))

Definition at line 61 of file regexec.c.

◆ SET0 [2/2]

#define SET0 ( v,
n )
Value:
((v)[n] = 0)

Definition at line 61 of file regexec.c.

◆ SET1 [1/2]

#define SET1 ( v,
n )
Value:
((v) |= (unsigned long)1 << (n))

Definition at line 62 of file regexec.c.

◆ SET1 [2/2]

#define SET1 ( v,
n )
Value:
((v)[n] = 1)

Definition at line 62 of file regexec.c.

◆ SETUP [1/2]

#define SETUP ( v)
Value:
((v) = 0)

Definition at line 69 of file regexec.c.

◆ SETUP [2/2]

#define SETUP ( v)
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 */

Definition at line 80 of file regexec.c.

◆ states [1/2]

#define states   states1

Definition at line 59 of file regexec.c.

◆ states [2/2]

#define states   char *

Definition at line 59 of file regexec.c.

◆ states1

#define states1   long /* for later use in llvm_regexec() decision */

Definition at line 58 of file regexec.c.

Referenced by llvm_regexec().

◆ STATESETUP [1/2]

#define STATESETUP ( m,
n )
Value:
/* nothing */

Definition at line 67 of file regexec.c.

◆ 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)
#define REG_ESPACE
Definition regex_impl.h:77

Definition at line 67 of file regexec.c.

◆ STATETEARDOWN [1/2]

#define STATETEARDOWN ( m)
Value:
/* nothing */

Definition at line 68 of file regexec.c.

◆ STATETEARDOWN [2/2]

#define STATETEARDOWN ( m)
Value:
{ free((m)->space); }

Definition at line 68 of file regexec.c.

◆ STATEVARS [1/2]

#define STATEVARS   long dummy /* dummy version */

Definition at line 66 of file regexec.c.

◆ STATEVARS [2/2]

#define STATEVARS   long vn; char *space

Definition at line 66 of file regexec.c.

Function Documentation

◆ llvm_regexec()

int llvm_regexec ( const llvm_regex_t * preg,
const char * string,
size_t nmatch,
llvm_regmatch_t pmatch[],
int eflags )