diff --git a/src/V3PreProc.cpp b/src/V3PreProc.cpp index 2fd43fa54..87fbf38ef 100644 --- a/src/V3PreProc.cpp +++ b/src/V3PreProc.cpp @@ -335,12 +335,15 @@ void V3PreProcImp::define(FileLine* fl, const string& name, const string& value, if (!(defValue(name) == value && defParams(name) == params)) { // Duplicate defs are OK fl->v3warn(REDEFMACRO, "Redefining existing define: '" - << name << "', with different value: " << value - << (params == "" ? "" : " ") << params); - defFileline(name)->v3warn(REDEFMACRO, "Previous definition is here, with value: " - << defValue(name) - << (defParams(name).empty() ? "" : " ") - << defParams(name)); + << name << "', with different value: '" << value + << (params == "" ? "" : " ") << params << "'\n" + << fl->warnContextPrimary() << '\n' + << defFileline(name)->warnOther() + << "... Location of previous definition, with value: '" + << defValue(name) + << (defParams(name).empty() ? "" : " ") + << defParams(name) << "'\n" + << defFileline(name)->warnContextSecondary()); } undef(name); } diff --git a/test_regress/t/t_pp_dupdef_bad.out b/test_regress/t/t_pp_dupdef_bad.out index 82ffa436e..cb207f1d3 100644 --- a/test_regress/t/t_pp_dupdef_bad.out +++ b/test_regress/t/t_pp_dupdef_bad.out @@ -1,6 +1,6 @@ -%Warning-REDEFMACRO: t/t_pp_dupdef.v:11:20: Redefining existing define: 'DUP', with different value: barney +%Warning-REDEFMACRO: t/t_pp_dupdef.v:11:20: Redefining existing define: 'DUP', with different value: 'barney' + t/t_pp_dupdef.v:11:20: ... Location of previous definition, with value: 'fred' ... Use "/* verilator lint_off REDEFMACRO */" and lint_on around source to disable this message. -%Warning-REDEFMACRO: t/t_pp_dupdef.v:11:20: Previous definition is here, with value: fred -%Warning-REDEFMACRO: t/t_pp_dupdef.v:14:33: Redefining existing define: 'DUPP', with different value: paramed(x,z) (x*z) -%Warning-REDEFMACRO: t/t_pp_dupdef.v:14:33: Previous definition is here, with value: paramed(x) (x) +%Warning-REDEFMACRO: t/t_pp_dupdef.v:14:33: Redefining existing define: 'DUPP', with different value: 'paramed(x,z) (x*z)' + t/t_pp_dupdef.v:14:33: ... Location of previous definition, with value: 'paramed(x) (x)' %Error: Exiting due to