|
@@ -50,7 +50,7 @@ uses
|
|
{ override optimizer switches }
|
|
{ override optimizer switches }
|
|
llvminfo,
|
|
llvminfo,
|
|
{$endif llvm}
|
|
{$endif llvm}
|
|
- globals,verbose,comphook,dirparse,
|
|
|
|
|
|
+ globals,verbose,comphook,dirparse,cclasses,
|
|
fmodule;
|
|
fmodule;
|
|
|
|
|
|
{****************************************************************************
|
|
{****************************************************************************
|
|
@@ -384,6 +384,8 @@ procedure flushpendingswitchesstate;
|
|
var
|
|
var
|
|
tmpproccal: tproccalloption;
|
|
tmpproccal: tproccalloption;
|
|
fstate, pstate : pmessagestaterecord;
|
|
fstate, pstate : pmessagestaterecord;
|
|
|
|
+ msgset : thashset;
|
|
|
|
+ msgfound : boolean;
|
|
begin
|
|
begin
|
|
{ process pending localswitches (range checking, etc) }
|
|
{ process pending localswitches (range checking, etc) }
|
|
if psf_local_switches_changed in pendingstate.flags then
|
|
if psf_local_switches_changed in pendingstate.flags then
|
|
@@ -423,12 +425,17 @@ procedure flushpendingswitchesstate;
|
|
setverbosity(pendingstate.nextverbositystr);
|
|
setverbosity(pendingstate.nextverbositystr);
|
|
pendingstate.nextverbositystr:='';
|
|
pendingstate.nextverbositystr:='';
|
|
end;
|
|
end;
|
|
|
|
+ msgset:=thashset.create(10,false,false);
|
|
fstate:=pendingstate.nextmessagerecord;
|
|
fstate:=pendingstate.nextmessagerecord;
|
|
pstate:=pendingstate.nextmessagerecord;
|
|
pstate:=pendingstate.nextmessagerecord;
|
|
while assigned(pstate) do
|
|
while assigned(pstate) do
|
|
begin
|
|
begin
|
|
pendingstate.nextmessagerecord:=pstate^.next;
|
|
pendingstate.nextmessagerecord:=pstate^.next;
|
|
- SetMessageVerbosity(pstate^.value,pstate^.state);
|
|
|
|
|
|
+ { the message records are ordered newest to oldest, so only apply the newest change }
|
|
|
|
+ msgfound:=false;
|
|
|
|
+ if not assigned(msgset.findoradd(@pstate^.value,sizeof(pstate^.value),msgfound)) or
|
|
|
|
+ not msgfound then
|
|
|
|
+ SetMessageVerbosity(pstate^.value,pstate^.state);
|
|
if not assigned(pstate^.next) then
|
|
if not assigned(pstate^.next) then
|
|
begin
|
|
begin
|
|
pstate^.next:=current_settings.pmessage;
|
|
pstate^.next:=current_settings.pmessage;
|
|
@@ -439,6 +446,7 @@ procedure flushpendingswitchesstate;
|
|
pstate:=pstate^.next;
|
|
pstate:=pstate^.next;
|
|
pendingstate.nextmessagerecord:=nil;
|
|
pendingstate.nextmessagerecord:=nil;
|
|
end;
|
|
end;
|
|
|
|
+ msgset.free;
|
|
{ process pending calling convention changes (calling x) }
|
|
{ process pending calling convention changes (calling x) }
|
|
if pendingstate.nextcallingstr<>'' then
|
|
if pendingstate.nextcallingstr<>'' then
|
|
begin
|
|
begin
|