Fix Preprocessor dropping some line directives
git-svn-id: file://localhost/svn/verilator/trunk/verilator@934 77ca24e4-aefa-0310-84f0-b9a241c72d87
This commit is contained in:
parent
dff5d5c4e4
commit
9c968c590c
2
Changes
2
Changes
|
|
@ -9,6 +9,8 @@ indicates the contributor was also the author of the fix; Thanks!
|
||||||
|
|
||||||
**** Support V2K portlists with "input a,b,...". [Mark Nodine]
|
**** Support V2K portlists with "input a,b,...". [Mark Nodine]
|
||||||
|
|
||||||
|
**** Fix Preprocessor dropping some `line directives. [Mark Nodine]
|
||||||
|
|
||||||
* Verilator 3.651 5/22/2007
|
* Verilator 3.651 5/22/2007
|
||||||
|
|
||||||
*** Added verilator_profcfunc utility. [Gene Weber]
|
*** Added verilator_profcfunc utility. [Gene Weber]
|
||||||
|
|
|
||||||
|
|
@ -388,7 +388,7 @@ public:
|
||||||
}
|
}
|
||||||
virtual void visit(AstMulS* nodep, AstNUser* vup) {
|
virtual void visit(AstMulS* nodep, AstNUser* vup) {
|
||||||
if (nodep->widthWords() > VL_MULS_MAX_WORDS) {
|
if (nodep->widthWords() > VL_MULS_MAX_WORDS) {
|
||||||
nodep->v3error("Signed multiply of "<<nodep->width()<<" bits exceeds hardcoded limit VL_MULS_MAX_WORDS in verilatedos.h\n");
|
nodep->v3error("Unsupported: Signed multiply of "<<nodep->width()<<" bits exceeds hardcoded limit VL_MULS_MAX_WORDS in verilatedos.h\n");
|
||||||
}
|
}
|
||||||
visit(nodep->castNodeBiop(), vup);
|
visit(nodep->castNodeBiop(), vup);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,7 @@
|
||||||
#define VP_DEFINE 261
|
#define VP_DEFINE 261
|
||||||
#define VP_ELSE 262
|
#define VP_ELSE 262
|
||||||
#define VP_ELSIF 263
|
#define VP_ELSIF 263
|
||||||
|
#define VP_LINE 264
|
||||||
|
|
||||||
#define VP_SYMBOL 300
|
#define VP_SYMBOL 300
|
||||||
#define VP_STRING 301
|
#define VP_STRING 301
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,8 @@ psl [p]sl
|
||||||
/**************************************************************/
|
/**************************************************************/
|
||||||
%%
|
%%
|
||||||
|
|
||||||
<INITIAL>^{ws}*"`line"{ws}+.*{crnl} { V3PreLex::s_currentLexp->lineDirective(yytext); }
|
<INITIAL>^{ws}*"`line"{ws}+.*{crnl} { V3PreLex::s_currentLexp->lineDirective(yytext);
|
||||||
|
return(VP_LINE); }
|
||||||
|
|
||||||
/* Special directives we recognise */
|
/* Special directives we recognise */
|
||||||
<INITIAL>"`include" { return(VP_INCLUDE); }
|
<INITIAL>"`include" { return(VP_INCLUDE); }
|
||||||
|
|
|
||||||
|
|
@ -328,6 +328,7 @@ const char* V3PreProcImp::tokenName(int tok) {
|
||||||
case VP_DEFINE : return("DEFINE");
|
case VP_DEFINE : return("DEFINE");
|
||||||
case VP_ELSE : return("ELSE");
|
case VP_ELSE : return("ELSE");
|
||||||
case VP_ELSIF : return("ELSIF");
|
case VP_ELSIF : return("ELSIF");
|
||||||
|
case VP_LINE : return("LINE");
|
||||||
case VP_SYMBOL : return("SYMBOL");
|
case VP_SYMBOL : return("SYMBOL");
|
||||||
case VP_STRING : return("STRING");
|
case VP_STRING : return("STRING");
|
||||||
case VP_DEFVALUE : return("DEFVALUE");
|
case VP_DEFVALUE : return("DEFVALUE");
|
||||||
|
|
@ -583,6 +584,10 @@ int V3PreProcImp::getToken() {
|
||||||
for (int len=0; len<yyleng; len++) { if (yytext[len]=='\n') m_lineAdd++; }
|
for (int len=0; len<yyleng; len++) { if (yytext[len]=='\n') m_lineAdd++; }
|
||||||
goto next_tok;
|
goto next_tok;
|
||||||
}
|
}
|
||||||
|
if (tok==VP_LINE) {
|
||||||
|
addLineComment(0);
|
||||||
|
goto next_tok;
|
||||||
|
}
|
||||||
// Deal with some special parser states
|
// Deal with some special parser states
|
||||||
switch (m_state) {
|
switch (m_state) {
|
||||||
case ps_TOP: {
|
case ps_TOP: {
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,8 @@ At file t/t_preproc_inc2.v line 4
|
||||||
|
|
||||||
`line 1 "t/t_preproc_inc3.v" 1
|
`line 1 "t/t_preproc_inc3.v" 1
|
||||||
|
|
||||||
|
`line 2 "inc3_a_filename_from_line_directive" 0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue