For internal messages, use <command-line> and <built-in> to match GCC.

This commit is contained in:
Wilson Snyder 2019-06-29 07:39:17 -04:00
parent ef02678305
commit ba9af4aabf
7 changed files with 110 additions and 111 deletions

View File

@ -6118,7 +6118,7 @@ private:
AstExecGraph* m_execGraphp; // Execution MTask graph for threads>1 mode
public:
AstNetlist()
: AstNode(new FileLine("AstRoot", 0))
: AstNode(new FileLine(FileLine::builtInFilename(), 0))
, m_typeTablep(NULL)
, m_dollarUnitPkgp(NULL)
, m_evalp(NULL)

View File

@ -28,6 +28,7 @@
# include "V3Global.h"
# include "V3Stats.h"
# include "V3Config.h"
# include "V3File.h"
#endif
#include <cstdarg>
@ -68,13 +69,12 @@ int FileLineSingleton::nameToNumber(const string& filename) {
}
//! Support XML output
//! Experimental. Updated to also put out the language.
void FileLineSingleton::fileNameNumMapDumpXml(std::ostream& os) {
os<<"<files>\n";
for (FileNameNumMap::const_iterator it = m_namemap.begin(); it != m_namemap.end(); ++it) {
os<<"<file id=\""<<filenameLetters(it->second)
<<"\" filename=\""<<it->first
<<"\" filename=\""<<V3OutFormatter::quoteNameControls(it->first, V3OutFormatter::LA_XML)
<<"\" language=\""<<numberToLang(it->second).ascii()<<"\"/>\n";
}
os<<"</files>\n";
@ -86,7 +86,7 @@ void FileLineSingleton::fileNameNumMapDumpXml(std::ostream& os) {
FileLine::FileLine(FileLine::EmptySecret) {
// Sort of a singleton
m_lineno = 0;
m_filenameno = singleton().nameToNumber("AstRoot");
m_filenameno = singleton().nameToNumber(FileLine::builtInFilename());
m_parent = NULL;
m_warnOn = 0;

View File

@ -130,7 +130,7 @@ public:
string ascii() const;
const string filename() const { return singleton().numberToName(m_filenameno); }
bool filenameIsGlobal() const { return (filename() == commandLineFilename()
|| filename() == internalDefineFilename()); }
|| filename() == builtInFilename()); }
const string filenameLetters() const { return singleton().filenameLetters(m_filenameno); }
const string filebasename() const;
const string filebasenameNoExt() const;
@ -155,8 +155,9 @@ public:
void tracingOn(bool flag) { warnOn(V3ErrorCode::I_TRACING, flag); }
// METHODS - Global
static string commandLineFilename() { return "COMMAND_LINE"; }
static string internalDefineFilename() { return "INTERNAL_VERILATOR_DEFINE"; }
// <command-line> and <built-in> match what GCC outputs
static string commandLineFilename() { return "<command-line>"; }
static string builtInFilename() { return "<built-in>"; }
static void globalWarnLintOff(bool flag) {
defaultFileLine().warnLintOff(flag); }
static void globalWarnStyleOff(bool flag) {

View File

@ -38,7 +38,7 @@ void test(const string& lhss, const string& op, const string& rhss, const string
char* r1 = strdup(rhss.c_str());
char* e1 = strdup(exps.c_str());
FileLine fl = new FileLine(FileLine::internalDefineFinename(), 0);
FileLine fl = new FileLine(FileLine::builtInFinename(), 0);
V3Number lhnum (fl, l1);
V3Number rhnum (fl, r1);

View File

@ -64,7 +64,7 @@ protected:
s_preprocp = V3PreProc::createPreProc(cmdfl);
s_preprocp->debug(debug());
// Default defines
FileLine* prefl = new FileLine(FileLine::internalDefineFilename(), 0);
FileLine* prefl = new FileLine(FileLine::builtInFilename(), 0);
s_preprocp->defineCmdLine(prefl, "VERILATOR", "1"); // LEAK_OK
s_preprocp->defineCmdLine(prefl, "verilator", "1"); // LEAK_OK
s_preprocp->defineCmdLine(prefl, "verilator3", "1"); // LEAK_OK

View File

@ -2,78 +2,77 @@
<!-- DESCRIPTION: Verilator output: XML representation of netlist -->
<verilator_xml>
<files>
<file id="a" filename="AstRoot" language="1800-2017"/>
<file id="b" filename="COMMAND_LINE" language="1800-2017"/>
<file id="c" filename="INTERNAL_VERILATOR_DEFINE" language="1800-2017"/>
<file id="d" filename="input.vc" language="1800-2017"/>
<file id="e" filename="t/t_xml_first.v" language="1800-2017"/>
<file id="a" filename="&lt;built-in&gt;" language="1800-2017"/>
<file id="b" filename="&lt;command-line&gt;" language="1800-2017"/>
<file id="c" filename="input.vc" language="1800-2017"/>
<file id="d" filename="t/t_xml_first.v" language="1800-2017"/>
</files>
<module_files>
<file id="e" filename="t/t_xml_first.v" language="1800-2017"/>
<file id="d" filename="t/t_xml_first.v" language="1800-2017"/>
</module_files>
<cells>
<cell fl="e6" name="t" submodname="t" hier="t">
<cell fl="e18" name="cell1" submodname="mod1" hier="t.cell1"/>
<cell fl="e24" name="cell2" submodname="mod2" hier="t.cell2"/>
<cell fl="d6" name="t" submodname="t" hier="t">
<cell fl="d18" name="cell1" submodname="mod1" hier="t.cell1"/>
<cell fl="d24" name="cell2" submodname="mod2" hier="t.cell2"/>
</cell>
</cells>
<netlist>
<module fl="e6" name="t" origName="t" topModule="1">
<var fl="e12" name="clk" dtype_id="1" dir="input" vartype="logic" origName="clk"/>
<var fl="e13" name="d" dtype_id="2" dir="input" vartype="logic" origName="d"/>
<var fl="e14" name="q" dtype_id="2" dir="output" vartype="logic" origName="q"/>
<var fl="e16" name="between" dtype_id="2" vartype="logic" origName="between"/>
<instance fl="e18" name="cell1" defName="mod1" origName="cell1">
<port fl="e18" name="q" direction="out" portIndex="1">
<varref fl="e18" name="between" dtype_id="2"/>
<module fl="d6" name="t" origName="t" topModule="1">
<var fl="d12" name="clk" dtype_id="1" dir="input" vartype="logic" origName="clk"/>
<var fl="d13" name="d" dtype_id="2" dir="input" vartype="logic" origName="d"/>
<var fl="d14" name="q" dtype_id="2" dir="output" vartype="logic" origName="q"/>
<var fl="d16" name="between" dtype_id="2" vartype="logic" origName="between"/>
<instance fl="d18" name="cell1" defName="mod1" origName="cell1">
<port fl="d18" name="q" direction="out" portIndex="1">
<varref fl="d18" name="between" dtype_id="2"/>
</port>
<port fl="e21" name="clk" direction="in" portIndex="2">
<varref fl="e21" name="clk" dtype_id="1"/>
<port fl="d21" name="clk" direction="in" portIndex="2">
<varref fl="d21" name="clk" dtype_id="1"/>
</port>
<port fl="e22" name="d" direction="in" portIndex="3">
<varref fl="e22" name="d" dtype_id="2"/>
<port fl="d22" name="d" direction="in" portIndex="3">
<varref fl="d22" name="d" dtype_id="2"/>
</port>
</instance>
<instance fl="e24" name="cell2" defName="mod2" origName="cell2">
<port fl="e24" name="d" direction="in" portIndex="1">
<varref fl="e24" name="between" dtype_id="2"/>
<instance fl="d24" name="cell2" defName="mod2" origName="cell2">
<port fl="d24" name="d" direction="in" portIndex="1">
<varref fl="d24" name="between" dtype_id="2"/>
</port>
<port fl="e27" name="q" direction="out" portIndex="2">
<varref fl="e27" name="q" dtype_id="2"/>
<port fl="d27" name="q" direction="out" portIndex="2">
<varref fl="d27" name="q" dtype_id="2"/>
</port>
<port fl="e29" name="clk" direction="in" portIndex="3">
<varref fl="e29" name="clk" dtype_id="1"/>
<port fl="d29" name="clk" direction="in" portIndex="3">
<varref fl="d29" name="clk" dtype_id="1"/>
</port>
</instance>
</module>
<module fl="e33" name="mod1" origName="mod1">
<var fl="e35" name="clk" dtype_id="1" dir="input" vartype="logic" origName="clk"/>
<var fl="e36" name="d" dtype_id="2" dir="input" vartype="logic" origName="d"/>
<var fl="e37" name="q" dtype_id="2" dir="output" vartype="logic" origName="q"/>
<always fl="e39">
<sentree fl="e39">
<senitem fl="e39" edgeType="POS">
<varref fl="e39" name="clk" dtype_id="1"/>
<module fl="d33" name="mod1" origName="mod1">
<var fl="d35" name="clk" dtype_id="1" dir="input" vartype="logic" origName="clk"/>
<var fl="d36" name="d" dtype_id="2" dir="input" vartype="logic" origName="d"/>
<var fl="d37" name="q" dtype_id="2" dir="output" vartype="logic" origName="q"/>
<always fl="d39">
<sentree fl="d39">
<senitem fl="d39" edgeType="POS">
<varref fl="d39" name="clk" dtype_id="1"/>
</senitem>
</sentree>
<assigndly fl="e40" dtype_id="2">
<varref fl="e40" name="d" dtype_id="2"/>
<varref fl="e40" name="q" dtype_id="2"/>
<assigndly fl="d40" dtype_id="2">
<varref fl="d40" name="d" dtype_id="2"/>
<varref fl="d40" name="q" dtype_id="2"/>
</assigndly>
</always>
</module>
<module fl="e44" name="mod2" origName="mod2">
<var fl="e46" name="clk" dtype_id="1" dir="input" vartype="logic" origName="clk"/>
<var fl="e47" name="d" dtype_id="2" dir="input" vartype="logic" origName="d"/>
<var fl="e48" name="q" dtype_id="2" dir="output" vartype="logic" origName="q"/>
<contassign fl="e51" dtype_id="2">
<varref fl="e51" name="d" dtype_id="2"/>
<varref fl="e51" name="q" dtype_id="2"/>
<module fl="d44" name="mod2" origName="mod2">
<var fl="d46" name="clk" dtype_id="1" dir="input" vartype="logic" origName="clk"/>
<var fl="d47" name="d" dtype_id="2" dir="input" vartype="logic" origName="d"/>
<var fl="d48" name="q" dtype_id="2" dir="output" vartype="logic" origName="q"/>
<contassign fl="d51" dtype_id="2">
<varref fl="d51" name="d" dtype_id="2"/>
<varref fl="d51" name="q" dtype_id="2"/>
</contassign>
</module>
<typetable fl="a0">
<basicdtype fl="e46" id="1" name="logic"/>
<basicdtype fl="e13" id="2" name="logic" left="3" right="0"/>
<basicdtype fl="d46" id="1" name="logic"/>
<basicdtype fl="d13" id="2" name="logic" left="3" right="0"/>
</typetable>
</netlist>
</verilator_xml>

View File

@ -2,82 +2,81 @@
<!-- DESCRIPTION: Verilator output: XML representation of netlist -->
<verilator_xml>
<files>
<file id="a" filename="AstRoot" language="1800-2017"/>
<file id="b" filename="COMMAND_LINE" language="1800-2017"/>
<file id="c" filename="INTERNAL_VERILATOR_DEFINE" language="1800-2017"/>
<file id="d" filename="input.vc" language="1800-2017"/>
<file id="e" filename="t/t_xml_tag.v" language="1800-2017"/>
<file id="a" filename="&lt;built-in&gt;" language="1800-2017"/>
<file id="b" filename="&lt;command-line&gt;" language="1800-2017"/>
<file id="c" filename="input.vc" language="1800-2017"/>
<file id="d" filename="t/t_xml_tag.v" language="1800-2017"/>
</files>
<module_files>
<file id="e" filename="t/t_xml_tag.v" language="1800-2017"/>
<file id="d" filename="t/t_xml_tag.v" language="1800-2017"/>
</module_files>
<cells>
<cell fl="e11" name="m" submodname="m" hier="m">
<cell fl="e28" name="itop" submodname="ifc" hier="m.itop"/>
<cell fl="d11" name="m" submodname="m" hier="m">
<cell fl="d28" name="itop" submodname="ifc" hier="m.itop"/>
</cell>
</cells>
<netlist>
<module fl="e11" name="m" origName="m" topModule="1">
<var fl="e13" name="clk_ip" tag="clk_ip" dtype_id="1" dir="input" vartype="logic" origName="clk_ip"/>
<var fl="e14" name="rst_ip" dtype_id="1" dir="input" vartype="logic" origName="rst_ip"/>
<var fl="e15" name="foo_op" tag="foo_op" dtype_id="1" dir="output" vartype="logic" origName="foo_op"/>
<typedef fl="e19" name="my_struct" tag="my_struct" dtype_id="2"/>
<instance fl="e28" name="itop" defName="ifc" origName="itop"/>
<var fl="e28" name="itop__Viftop" dtype_id="3" vartype="ifaceref" origName="itop__Viftop"/>
<var fl="e30" name="this_struct" tag="this_struct" dtype_id="4" vartype="" origName="this_struct"/>
<var fl="e32" name="dotted" dtype_id="5" vartype="logic" origName="dotted"/>
<contassign fl="e32" dtype_id="5">
<varxref fl="e32" name="value" dtype_id="6" dotted="itop"/>
<varref fl="e32" name="dotted" dtype_id="5"/>
<module fl="d11" name="m" origName="m" topModule="1">
<var fl="d13" name="clk_ip" tag="clk_ip" dtype_id="1" dir="input" vartype="logic" origName="clk_ip"/>
<var fl="d14" name="rst_ip" dtype_id="1" dir="input" vartype="logic" origName="rst_ip"/>
<var fl="d15" name="foo_op" tag="foo_op" dtype_id="1" dir="output" vartype="logic" origName="foo_op"/>
<typedef fl="d19" name="my_struct" tag="my_struct" dtype_id="2"/>
<instance fl="d28" name="itop" defName="ifc" origName="itop"/>
<var fl="d28" name="itop__Viftop" dtype_id="3" vartype="ifaceref" origName="itop__Viftop"/>
<var fl="d30" name="this_struct" tag="this_struct" dtype_id="4" vartype="" origName="this_struct"/>
<var fl="d32" name="dotted" dtype_id="5" vartype="logic" origName="dotted"/>
<contassign fl="d32" dtype_id="5">
<varxref fl="d32" name="value" dtype_id="6" dotted="itop"/>
<varref fl="d32" name="dotted" dtype_id="5"/>
</contassign>
<func fl="e34" name="f" dtype_id="1">
<var fl="e34" name="f" dtype_id="1" dir="output" vartype="logic" origName="f"/>
<var fl="e34" name="m" dtype_id="7" dir="input" vartype="string" origName="m"/>
<display fl="e35" displaytype="$display">
<sformatf fl="e35" name="%@" dtype_id="7">
<varref fl="e35" name="m" dtype_id="7"/>
<func fl="d34" name="f" dtype_id="1">
<var fl="d34" name="f" dtype_id="1" dir="output" vartype="logic" origName="f"/>
<var fl="d34" name="m" dtype_id="7" dir="input" vartype="string" origName="m"/>
<display fl="d35" displaytype="$display">
<sformatf fl="d35" name="%@" dtype_id="7">
<varref fl="d35" name="m" dtype_id="7"/>
</sformatf>
</display>
</func>
<initial fl="e38">
<begin fl="e38">
<taskref fl="e40" name="f">
<arg fl="e40">
<const fl="e40" name="&quot;&#1;&#2;&#3;&#4;&#5;&#6;&#7;&#8;&#9;&#10;&#11;&#12;&#13;&#14;&#15;&#16;&#17;&#18;&#19;&#20;&#21;&#22;&#23;&#24;&#25;&#26;&#27;&#28;&#29;&#30;&#31; !&quot;#$%&amp;&apos;()*+,-./0123456789:;&lt;=&gt;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~&#127;&#128;&#129;&#130;&#131;&#132;&#133;&#134;&#135;&#136;&#137;&#138;&#139;&#140;&#141;&#142;&#143;&#144;&#145;&#146;&#147;&#148;&#149;&#150;&#151;&#152;&#153;&#154;&#155;&#156;&#157;&#158;&#159;&#160;&#161;&#162;&#163;&#164;&#165;&#166;&#167;&#168;&#169;&#170;&#171;&#172;&#173;&#174;&#175;&#176;&#177;&#178;&#179;&#180;&#181;&#182;&#183;&#184;&#185;&#186;&#187;&#188;&#189;&#190;&#191;&#192;&#193;&#194;&#195;&#196;&#197;&#198;&#199;&#200;&#201;&#202;&#203;&#204;&#205;&#206;&#207;&#208;&#209;&#210;&#211;&#212;&#213;&#214;&#215;&#216;&#217;&#218;&#219;&#220;&#221;&#222;&#223;&#224;&#225;&#226;&#227;&#228;&#229;&#230;&#231;&#232;&#233;&#234;&#235;&#236;&#237;&#238;&#239;&#240;&#241;&#242;&#243;&#244;&#245;&#246;&#247;&#248;&#249;&#250;&#251;&#252;&#253;&#254;&#255;&quot;" dtype_id="7"/>
<initial fl="d38">
<begin fl="d38">
<taskref fl="d40" name="f">
<arg fl="d40">
<const fl="d40" name="&quot;&#1;&#2;&#3;&#4;&#5;&#6;&#7;&#8;&#9;&#10;&#11;&#12;&#13;&#14;&#15;&#16;&#17;&#18;&#19;&#20;&#21;&#22;&#23;&#24;&#25;&#26;&#27;&#28;&#29;&#30;&#31; !&quot;#$%&amp;&apos;()*+,-./0123456789:;&lt;=&gt;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~&#127;&#128;&#129;&#130;&#131;&#132;&#133;&#134;&#135;&#136;&#137;&#138;&#139;&#140;&#141;&#142;&#143;&#144;&#145;&#146;&#147;&#148;&#149;&#150;&#151;&#152;&#153;&#154;&#155;&#156;&#157;&#158;&#159;&#160;&#161;&#162;&#163;&#164;&#165;&#166;&#167;&#168;&#169;&#170;&#171;&#172;&#173;&#174;&#175;&#176;&#177;&#178;&#179;&#180;&#181;&#182;&#183;&#184;&#185;&#186;&#187;&#188;&#189;&#190;&#191;&#192;&#193;&#194;&#195;&#196;&#197;&#198;&#199;&#200;&#201;&#202;&#203;&#204;&#205;&#206;&#207;&#208;&#209;&#210;&#211;&#212;&#213;&#214;&#215;&#216;&#217;&#218;&#219;&#220;&#221;&#222;&#223;&#224;&#225;&#226;&#227;&#228;&#229;&#230;&#231;&#232;&#233;&#234;&#235;&#236;&#237;&#238;&#239;&#240;&#241;&#242;&#243;&#244;&#245;&#246;&#247;&#248;&#249;&#250;&#251;&#252;&#253;&#254;&#255;&quot;" dtype_id="7"/>
</arg>
</taskref>
</begin>
</initial>
</module>
<iface fl="e6" name="ifc" origName="ifc">
<var fl="e7" name="value" dtype_id="6" vartype="integer" origName="value"/>
<modport fl="e8" name="out_modport">
<modportvarref fl="e8" name="value" direction="out"/>
<iface fl="d6" name="ifc" origName="ifc">
<var fl="d7" name="value" dtype_id="6" vartype="integer" origName="value"/>
<modport fl="d8" name="out_modport">
<modportvarref fl="d8" name="value" direction="out"/>
</modport>
</iface>
<typetable fl="a0">
<basicdtype fl="e30" id="5" name="logic" left="31" right="0"/>
<basicdtype fl="e7" id="6" name="integer" left="31" right="0"/>
<basicdtype fl="e13" id="1" name="logic"/>
<structdtype fl="e19" id="2" name="m.my_struct">
<memberdtype fl="e20" id="8" name="clk" tag="this is clk" sub_dtype_id="9"/>
<memberdtype fl="e21" id="10" name="k" sub_dtype_id="11"/>
<memberdtype fl="e22" id="12" name="enable" tag="enable" sub_dtype_id="13"/>
<memberdtype fl="e23" id="14" name="data" tag="data" sub_dtype_id="15"/>
<basicdtype fl="d30" id="5" name="logic" left="31" right="0"/>
<basicdtype fl="d7" id="6" name="integer" left="31" right="0"/>
<basicdtype fl="d13" id="1" name="logic"/>
<structdtype fl="d19" id="2" name="m.my_struct">
<memberdtype fl="d20" id="8" name="clk" tag="this is clk" sub_dtype_id="9"/>
<memberdtype fl="d21" id="10" name="k" sub_dtype_id="11"/>
<memberdtype fl="d22" id="12" name="enable" tag="enable" sub_dtype_id="13"/>
<memberdtype fl="d23" id="14" name="data" tag="data" sub_dtype_id="15"/>
</structdtype>
<basicdtype fl="e20" id="9" name="logic"/>
<basicdtype fl="e21" id="11" name="logic"/>
<basicdtype fl="e22" id="13" name="logic"/>
<basicdtype fl="e23" id="15" name="logic"/>
<ifacerefdtype fl="e28" id="3" modportname=""/>
<unpackarraydtype fl="e30" id="4" sub_dtype_id="2">
<range fl="e30">
<const fl="e30" name="32&apos;h1" dtype_id="5"/>
<const fl="e30" name="32&apos;h0" dtype_id="5"/>
<basicdtype fl="d20" id="9" name="logic"/>
<basicdtype fl="d21" id="11" name="logic"/>
<basicdtype fl="d22" id="13" name="logic"/>
<basicdtype fl="d23" id="15" name="logic"/>
<ifacerefdtype fl="d28" id="3" modportname=""/>
<unpackarraydtype fl="d30" id="4" sub_dtype_id="2">
<range fl="d30">
<const fl="d30" name="32&apos;h1" dtype_id="5"/>
<const fl="d30" name="32&apos;h0" dtype_id="5"/>
</range>
</unpackarraydtype>
<refdtype fl="e30" id="16" name="my_struct" sub_dtype_id="2"/>
<basicdtype fl="e34" id="7" name="string"/>
<refdtype fl="d30" id="16" name="my_struct" sub_dtype_id="2"/>
<basicdtype fl="d34" id="7" name="string"/>
</typetable>
</netlist>
</verilator_xml>