Fix PowerPC runtime error, bug288
This commit is contained in:
parent
f9bbf31d65
commit
3fae8ade05
2
Changes
2
Changes
|
|
@ -5,6 +5,8 @@ indicates the contributor was also the author of the fix; Thanks!
|
||||||
|
|
||||||
* Verilator 3.821****
|
* Verilator 3.821****
|
||||||
|
|
||||||
|
**** Fix PowerPC runtime error, bug288. [Ahmed El-Mahmoudy]
|
||||||
|
|
||||||
**** Fix internal error on integer casts, bug374. [Chandan Egbert]
|
**** Fix internal error on integer casts, bug374. [Chandan Egbert]
|
||||||
|
|
||||||
* Verilator 3.820 2011/07/28
|
* Verilator 3.820 2011/07/28
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,7 @@ pkgdatadir = @pkgdatadir@
|
||||||
|
|
||||||
# Compile options
|
# Compile options
|
||||||
CFG_WITH_DEFENV = @CFG_WITH_DEFENV@
|
CFG_WITH_DEFENV = @CFG_WITH_DEFENV@
|
||||||
CPPFLAGSNOWALL += @CPPFLAGS@
|
CPPFLAGS += @CPPFLAGS@
|
||||||
LDFLAGS += @LDFLAGS@
|
LDFLAGS += @LDFLAGS@
|
||||||
|
|
||||||
#### End of system configuration section. ####
|
#### End of system configuration section. ####
|
||||||
|
|
@ -85,17 +85,18 @@ endif
|
||||||
# -lfl not needed as Flex invoked with %nowrap option
|
# -lfl not needed as Flex invoked with %nowrap option
|
||||||
LIBS = -lm
|
LIBS = -lm
|
||||||
|
|
||||||
CPPFLAGSNOWALL += -MMD
|
CPPFLAGS += -MMD
|
||||||
CPPFLAGSNOWALL += -I. -I$(bldsrc) -I$(srcdir) -I$(incdir)
|
CPPFLAGS += -I. -I$(bldsrc) -I$(srcdir) -I$(incdir)
|
||||||
CPPFLAGSNOWALL += -DYYDEBUG # Required to get nice error messages
|
CPPFLAGS += -DYYDEBUG # Required to get nice error messages
|
||||||
#CPPFLAGSNOWALL += -DVL_LEAK_CHECKS # If running valgrind or other hunting tool
|
#CPPFLAGS += -DVL_LEAK_CHECKS # If running valgrind or other hunting tool
|
||||||
CPPFLAGSNOWALL += $(COPT)
|
CPPFLAGS += $(COPT)
|
||||||
CPPFLAGS = $(CPPFLAGSNOWALL)
|
CPPFLAGS += -MP # Only works on recent GCC versions
|
||||||
ifeq ($(VERILATOR_AUTHOR_SITE),1) # Local... Else don't burden users
|
ifeq ($(VERILATOR_AUTHOR_SITE),1) # Local... Else don't burden users
|
||||||
CPPFLAGSNOWALL += -MP # Only works on recent GCC versions
|
|
||||||
CPPFLAGS += -W -Wall -Wno-unused-parameter -Wno-char-subscripts -Werror
|
CPPFLAGS += -W -Wall -Wno-unused-parameter -Wno-char-subscripts -Werror
|
||||||
#CPPFLAGS += -pedantic-errors
|
#CPPFLAGS += -pedantic-errors
|
||||||
endif
|
endif
|
||||||
|
CPPFLAGSWALL = $(CPPFLAGS)
|
||||||
|
CPPFLAGSNOWALL = $(CPPFLAGS)
|
||||||
|
|
||||||
ifneq ($(SYSTEMPERL),) # Intuit SYSTEMPERL_INCLUDE as it's new
|
ifneq ($(SYSTEMPERL),) # Intuit SYSTEMPERL_INCLUDE as it's new
|
||||||
SYSTEMPERL_INCLUDE ?= $(SYSTEMPERL)/src
|
SYSTEMPERL_INCLUDE ?= $(SYSTEMPERL)/src
|
||||||
|
|
@ -262,9 +263,9 @@ V3Number_test: V3Number_test.o
|
||||||
$(PERL) $(ASTGEN) -I$(srcdir) $*.cpp
|
$(PERL) $(ASTGEN) -I$(srcdir) $*.cpp
|
||||||
|
|
||||||
%.o: %.cpp
|
%.o: %.cpp
|
||||||
$(OBJCACHE) ${CXX} ${CPPFLAGS} -c $<
|
$(OBJCACHE) ${CXX} ${CPPFLAGSWALL} -c $<
|
||||||
%.o: %.c
|
%.o: %.c
|
||||||
$(OBJCACHE) ${CC} ${CPPFLAGS} -c $<
|
$(OBJCACHE) ${CC} ${CPPFLAGSWALL} -c $<
|
||||||
|
|
||||||
V3ParseLex.o: V3ParseLex.cpp V3Lexer.yy.cpp V3ParseBison.c
|
V3ParseLex.o: V3ParseLex.cpp V3Lexer.yy.cpp V3ParseBison.c
|
||||||
$(OBJCACHE) ${CXX} ${CPPFLAGSNOWALL} -c $<
|
$(OBJCACHE) ${CXX} ${CPPFLAGSNOWALL} -c $<
|
||||||
|
|
|
||||||
|
|
@ -3465,7 +3465,7 @@ struct AstBufIf1 : public AstNodeBiop {
|
||||||
virtual void numberOperate(V3Number& out, const V3Number& lhs, const V3Number& rhs) { out.opBufIf1(lhs,rhs); }
|
virtual void numberOperate(V3Number& out, const V3Number& lhs, const V3Number& rhs) { out.opBufIf1(lhs,rhs); }
|
||||||
virtual string emitVerilog() { return "bufif(%r,%l)"; }
|
virtual string emitVerilog() { return "bufif(%r,%l)"; }
|
||||||
virtual string emitC() { V3ERROR_NA; return "";} // Lclean || Rclean
|
virtual string emitC() { V3ERROR_NA; return "";} // Lclean || Rclean
|
||||||
virtual string emitSimpleOperator() { V3ERROR_NA; return false;} // Lclean || Rclean
|
virtual string emitSimpleOperator() { V3ERROR_NA; return "";} // Lclean || Rclean
|
||||||
virtual bool cleanOut() {V3ERROR_NA; return "";} // Lclean || Rclean
|
virtual bool cleanOut() {V3ERROR_NA; return "";} // Lclean || Rclean
|
||||||
virtual bool cleanLhs() {return false;} virtual bool cleanRhs() {return false;}
|
virtual bool cleanLhs() {return false;} virtual bool cleanRhs() {return false;}
|
||||||
virtual bool sizeMattersLhs() {return false;} virtual bool sizeMattersRhs() {return false;}
|
virtual bool sizeMattersLhs() {return false;} virtual bool sizeMattersRhs() {return false;}
|
||||||
|
|
|
||||||
|
|
@ -316,7 +316,7 @@ public:
|
||||||
public:
|
public:
|
||||||
// CREATORS
|
// CREATORS
|
||||||
V3ParseImp(AstNetlist* rootp, V3InFilter* filterp)
|
V3ParseImp(AstNetlist* rootp, V3InFilter* filterp)
|
||||||
: m_sym(rootp), m_filterp(filterp) {
|
: m_filterp(filterp), m_sym(rootp) {
|
||||||
m_fileline = NULL;
|
m_fileline = NULL;
|
||||||
m_rootp = rootp; m_lexerp = NULL;
|
m_rootp = rootp; m_lexerp = NULL;
|
||||||
m_inCellDefine = false;
|
m_inCellDefine = false;
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,7 @@ public:
|
||||||
void V3ParseImp::stateExitPsl() { parsep()->m_lexerp->stateExitPsl(); }
|
void V3ParseImp::stateExitPsl() { parsep()->m_lexerp->stateExitPsl(); }
|
||||||
void V3ParseImp::statePushVlg() { parsep()->m_lexerp->stateExitPsl(); }
|
void V3ParseImp::statePushVlg() { parsep()->m_lexerp->stateExitPsl(); }
|
||||||
void V3ParseImp::statePop() { parsep()->m_lexerp->statePop(); }
|
void V3ParseImp::statePop() { parsep()->m_lexerp->statePop(); }
|
||||||
int V3ParseImp::yylexThis() { parsep()->m_lexerp->yylex(); }
|
int V3ParseImp::yylexThis() { return parsep()->m_lexerp->yylex(); }
|
||||||
|
|
||||||
//######################################################################
|
//######################################################################
|
||||||
// Read class functions
|
// Read class functions
|
||||||
|
|
|
||||||
|
|
@ -538,6 +538,7 @@ void V3PreLex::unused() {
|
||||||
if (0) {
|
if (0) {
|
||||||
// Prevent unused warnings
|
// Prevent unused warnings
|
||||||
yy_top_state();
|
yy_top_state();
|
||||||
|
yyerror((char*)"");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -963,7 +963,8 @@ double V3ParseImp::parseDouble(const char* textp, size_t length) {
|
||||||
*dp++ = '\0';
|
*dp++ = '\0';
|
||||||
char* endp = strgp;
|
char* endp = strgp;
|
||||||
double d = strtod(strgp, &endp);
|
double d = strtod(strgp, &endp);
|
||||||
if ((endp-strgp) != length) { yyerrorf("Syntax error parsing real: %s",strgp); }
|
size_t parsed_len = endp-strgp;
|
||||||
|
if (parsed_len != length) { yyerrorf("Syntax error parsing real: %s",strgp); }
|
||||||
delete strgp;
|
delete strgp;
|
||||||
return d;
|
return d;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -71,7 +71,7 @@ public:
|
||||||
m_varIO = AstVarType::UNKNOWN;
|
m_varIO = AstVarType::UNKNOWN;
|
||||||
m_varDTypep = NULL;
|
m_varDTypep = NULL;
|
||||||
m_pinNum = -1;
|
m_pinNum = -1;
|
||||||
m_instModule;
|
m_instModule = "";
|
||||||
m_instParamp = NULL;
|
m_instParamp = NULL;
|
||||||
m_modp = NULL;
|
m_modp = NULL;
|
||||||
m_modTypeImpNum = 0;
|
m_modTypeImpNum = 0;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue