Assertion failure during RaiseIR
Hi,
I'm getting an assertion failure that I can't seem to track down. I wondered if you might be able to help me.
I've enabled break on assertions, and it's breaking somewhere in PhaseList.DoPhaseList that I'm running over a ModuleUnit. This is the message:
Phoenix Assertion Failure: e:\sdkjul2007wix\src\phx\types\type-resolve.cpp, Line 763
!newType->IsAggregateType && !operandType->IsAggregateType
in (Function number 159004) GetBranch [line 0] during RaiseIR
in (PEModule) C:\tmp\Project.dll during IR Unit Function Phases
in (Program) <unnamed unit>
Here is the stack trace:
phxd.dll!Phx.Asserts.AssertFailed(string expressionString = "!newType->IsAggregateType && !operandType->IsAggregateType", string messageString = "", string fileNameString = "e:\\sdkjul2007wix\\src\\phx\\types\\type-resolve.cpp", uint line = 763)
phxd.dll!Phx.Types.Resolve.Convert(Phx.Opcode opcode = {ASSIGN}, Phx.IR.Operand operand = {tv402}, Phx.IR.Instruction insertAfterInstruction = {_$merge93: (references=0)}, Phx.Types.Type newType = {Aggregate?})
phxd.dll!Phx.Types.Resolve.Convert(Phx.IR.Operand operand = {tv402}, Phx.IR.Instruction insertAfterInstruction = {_$merge93: (references=0)}, Phx.Types.Type newType = {Aggregate?}) + 0x2f bytes
runtime-vccrt-win-msild.dll!Phx.Targets.Runtimes.Vccrt.Win.Msil.Raise.ConvertOperand(Phx.IR.Instruction instruction = { GOTO $L26}, Phx.Types.Type type = {Aggregate?}, Phx.IR.Operand operand = {tv402})
runtime-vccrt-win-msild.dll!Phx.Targets.Runtimes.Vccrt.Win.Msil.Raise.StackMerge(Phx.Targets.Runtimes.Vccrt.Win.Msil.LabelExtensionObject stackState = {Phx:
bject}, Phx.IR.LabelInstruction labelInstruction = {$L26: (references=3) Offset: 307(0x0133)}, Phx.IR.Instruction lastInstruction = { br $L26})
runtime-vccrt-win-msild.dll!Phx.Targets.Runtimes.Vccrt.Win.Msil.Raise.Function(Phx.FunctionUnitState targetState = {State: HasOriginalLayout HasRaisedEH Mir})
phxd.dll!Phx.FunctionUnit.DisassembleSymbolically(Phx.FunctionUnitState targetState = {State: HasOriginalLayout HasRaisedEH Mir})
phxd.dll!Phx.PEModuleUnit.Raise(Phx.Symbols.FunctionSymbol functionSymbol = {GetBranch}, Phx.FunctionUnitState functionUnitState = {State: HasOriginalLayout HasRaisedEH Mir})
phxd.dll!Phx.PE.RaiseIRPhase.Execute(Phx.Unit unit = {Project.Management.TreeManager::GetBranch (State: HasOriginalLayout HasRaisedEH IsPostFrameGenerated IsPostRegisterAllocated NeedRecoverFrameInfo NeedRecoverSymbolicId Lir)})
phxd.dll!Phx.Phases.Phase.DoPhase(Phx.Unit unit = {Project.Management.TreeManager::GetBranch (State: HasOriginalLayout HasRaisedEH IsPostFrameGenerated IsPostRegisterAllocated NeedRecoverFrameInfo NeedRecoverSymbolicId Lir)})
phxd.dll!Phx.Phases.PhaseList.DoPhaseList(Phx.Unit unit = {Project.Management.TreeManager::GetBranch (State: HasOriginalLayout HasRaisedEH IsPostFrameGenerated IsPostRegisterAllocated NeedRecoverFrameInfo NeedRecoverSymbolicId Lir)})
phxd.dll!Phx.PEModuleUnit.ProcessGlobalSymbols(Phx.PE.UnitListPhaseList unitListPhaseList = {IR Unit Function Phases (no control) [PhaseList]})
phxd.dll!Phx.PE.UnitListPhaseList.Execute(Phx.Unit unit = {C:\tmp\Project.Client.dll})
phxd.dll!Phx.Phases.Phase.DoPhase(Phx.Unit unit = {C:\tmp\Project.Client.dll})
phxd.dll!Phx.Phases.PhaseList.DoPhaseList(Phx.Unit unit = {C:\tmp\Project.Client.dll})
I have tracked down some of the functions being analysed where this failure occurs, but I can't seem to see any reason for this to happen, and I'm not sure which lines in the IR are causing this failure
Any help would be appreciated.
Thanks
Andy

