[llvm-commits] Question about /llvm/trunk/lib/CodeGen/MachineScheduler.cpp

Andrew Trick atrick at apple.com
Mon Feb 6 16:05:54 PST 2012


Sergei,

Anything can be a terminator if the target says so. A terminator can only be followed by other terminators in the same block (at least I think that's true throughout the backend).

Empty blocks, or blocks with only a single instruction that not a terminator or some other scheduling boundary should never be seen by the scheduler. Maybe that's your problem. I don't know because I haven't seen your debug output.

-Andy

On Feb 6, 2012, at 3:53 PM, Sergei Larin <slarin at codeaurora.org> wrote:

> 
> Andrew,
> 
>  Asserts are "on", nothing is caught. Debug output offers a single clue -
> the BB in question has a non-jump terminator (STrib == store byte).
> I guess my question then becomes - can a non control flow instruction serve
> as BB terminator (the implicit assumption I was referring to)? If not then
> I'll try to find where the "proper" terminator was lost.
> 
> Thanks.
> 
> Sergei
> 
> --
> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum.
> 
> 
>> -----Original Message-----
>> From: Andrew Trick [mailto:atrick at apple.com]
>> Sent: Monday, February 06, 2012 5:32 PM
>> To: Sergei Larin
>> Cc: llvm-commits at cs.uiuc.edu
>> Subject: Re: Question about
>> /llvm/trunk/lib/CodeGen/MachineScheduler.cpp
>> 
>> Hi Sergei,
>> 
>> Please make sure you run with assertions enabled and look at -debug-
>> only=misched output. -verify-machineinstrs may also be useful.
>> 
>> I'm not sure what the problem is, but crashing is bad. If there are any
>> implicit assumptions, then they should be made explicit.
>> 
>> I'm not sure I understand the CFG output. A block should end in a
>> terminator. BB#7 claims to have a successor, but I don't know what it's
>> terminator is.
>> 
>> -Andy
>> 
>> On Feb 6, 2012, at 10:56 AM, Sergei Larin <slarin at codeaurora.org>
>> wrote:
>> 
>>> 
>>> Andrew,
>>> 
>>> This is something between a bug report and a question. I do not
>> provide
>>> enough context to reproduce the failure, but hope it is fresh enough
>> in your
>>> memory :)
>>> 
>>> In lib/CodeGen/MachineScheduler.cpp
>>> 
>>> In bool MachineScheduler::runOnMachineFunction(MachineFunction &mf)
>> {}
>>> 
>>> While iterating over following MBB, for the following fragment
>>> ...
>>> BB#6: derived from LLVM BB %sw.bb6, ADDRESS TAKEN
>>>   Predecessors according to CFG: BB#1
>>>       %vreg10<def> = TFRI 1; IntRegs:%vreg10
>>>       STrib %vreg1<kill>, 0, %vreg10<kill>; mem:ST1[%Enum_Ref_Par]
>>> IntRegs:%vreg1,%vreg10
>>>       JMP <BB#8>
>>>   Successors according to CFG: BB#8
>>> 
>>> BB#7: derived from LLVM BB %sw.bb7, ADDRESS TAKEN
>>>   Predecessors according to CFG: BB#1
>>>       %vreg9<def> = TFRI 2; IntRegs:%vreg9
>>>       STrib %vreg1<kill>, 0, %vreg9<kill>; mem:ST1[%Enum_Ref_Par]
>>> IntRegs:%vreg1,%vreg9
>>>   Successors according to CFG: BB#8
>>> 
>>> BB#8: derived from LLVM BB %sw.epilog, ADDRESS TAKEN
>>>   Predecessors according to CFG: BB#0 BB#1 BB#7 BB#6 BB#5 BB#4 BB#2
>>>       JMPR %PC<imp-def,dead>, %R31<imp-use>, %R0<imp-use,undef>
>>> ...
>>> 
>>> BB#7 seems to cause a problem when iterating over it with RegionEnd
>> pointing
>>> somewhere wrong. Am I breaking some implicit assumption in BB
>> formation?
>>> Want MBB->end() suppose to return for the BB#7?
>>> 
>>> *** Final schedule ***
>>> 
>>> MachineScheduling Proc_6:BB#7
>>> From: %vreg9<def> = TFRI 2; IntRegs:%vreg9
>>>   To:
>>> Program received signal SIGSEGV, Segmentation fault.
>>> 0x0000000001a0c814 in llvm::MachineOperand::isReg (this=0x7) at
>>> /local/mnt/workspace/slarin/tools/llvm-mainline-
>> merged/include/llvm/CodeGen/
>>> MachineOperand.h:204
>>> 204       bool isReg() const { return OpKind == MO_Register; }
>>> (gdb) bt
>>> #0  0x0000000001a0c814 in llvm::MachineOperand::isReg (this=0x7) at
>>> /local/mnt/workspace/slarin/tools/llvm-mainline-
>> merged/include/llvm/CodeGen/
>>> MachineOperand.h:204
>>> #1  0x00000000021ca720 in llvm::MachineInstr::print (this=0x3e2c9f0,
>> OS=...,
>>> TM=0x0) at
>>> /local/mnt/workspace/slarin/tools/llvm-mainline-
>> merged/lib/CodeGen/MachineIn
>>> str.cpp:1462
>>> #2  0x0000000001a970fe in llvm::operator<< (OS=..., MI=...) at
>>> /local/mnt/workspace/slarin/tools/llvm-mainline-
>> merged/include/llvm/CodeGen/
>>> MachineInstr.h:934
>>> #3  0x00000000022e4c18 in (anonymous
>>> namespace)::MachineScheduler::runOnMachineFunction (this=0x3dcc1c0,
>> mf=...)
>>>   at
>>> /local/mnt/workspace/slarin/tools/llvm-mainline-
>> merged/lib/CodeGen/MachineSc
>>> heduler.cpp:297
>>> #4  0x00000000021c41e5 in llvm::MachineFunctionPass::runOnFunction
>>> (this=0x3dcc1c0, F=...) at
>>> /local/mnt/workspace/slarin/tools/llvm-mainline-
>> merged/lib/CodeGen/MachineFu
>>> nctionPass.cpp:33
>>> #5  0x0000000002789db6 in llvm::FPPassManager::runOnFunction
>>> (this=0x3dcb820, F=...) at
>>> /local/mnt/workspace/slarin/tools/llvm-mainline-
>> merged/lib/VMCore/PassManage
>>> r.cpp:1498
>>> #6  0x000000000278a001 in llvm::FPPassManager::runOnModule
>> (this=0x3dcb820,
>>> M=...) at
>>> /local/mnt/workspace/slarin/tools/llvm-mainline-
>> merged/lib/VMCore/PassManage
>>> r.cpp:1520
>>> #7  0x000000000278a344 in llvm::MPPassManager::runOnModule
>> (this=0x3dc8ec0,
>>> M=...) at
>>> /local/mnt/workspace/slarin/tools/llvm-mainline-
>> merged/lib/VMCore/PassManage
>>> r.cpp:1574
>>> #8  0x000000000278a85a in llvm::PassManagerImpl::run (this=0x3dc8b70,
>> M=...)
>>> at
>>> /local/mnt/workspace/slarin/tools/llvm-mainline-
>> merged/lib/VMCore/PassManage
>>> r.cpp:1658
>>> #9  0x000000000278ab55 in llvm::PassManager::run (this=0x3d7f140,
>> M=...) at
>>> /local/mnt/workspace/slarin/tools/llvm-mainline-
>> merged/lib/VMCore/PassManage
>>> r.cpp:1687
>>> #10 0x0000000000c9488d in (anonymous
>>> namespace)::EmitAssemblyHelper::EmitAssembly (this=0x7fffffffa2e0,
>>> Action=clang::Backend_EmitAssembly, OS=0x3d13660)
>>>   at
>>> /local/mnt/workspace/slarin/tools/llvm-mainline-
>> merged/tools/clang/lib/CodeG
>>> en/BackendUtil.cpp:497
>>> #11 0x0000000000c94968 in clang::EmitBackendOutput (Diags=...,
>> CGOpts=...,
>>> TOpts=..., LOpts=..., M=0x3d1a3c0,
>> Action=clang::Backend_EmitAssembly,
>>> OS=0x3d13660)
>>>   at
>>> /local/mnt/workspace/slarin/tools/llvm-mainline-
>> merged/tools/clang/lib/CodeG
>>> en/BackendUtil.cpp:509
>>> #12 0x0000000000c9042c in
>> clang::BackendConsumer::HandleTranslationUnit
>>> (this=0x3d123a0, C=...)
>>>   at
>>> /local/mnt/workspace/slarin/tools/llvm-mainline-
>> merged/tools/clang/lib/CodeG
>>> en/CodeGenAction.cpp:155
>>> #13 0x0000000000e3cf61 in clang::ParseAST (S=..., PrintStats=false)
>> at
>>> /local/mnt/workspace/slarin/tools/llvm-mainline-
>> merged/tools/clang/lib/Parse
>>> /ParseAST.cpp:110
>>> #14 0x0000000000b00725 in clang::ASTFrontendAction::ExecuteAction
>>> (this=0x3cf1740) at
>>> /local/mnt/workspace/slarin/tools/llvm-mainline-
>> merged/tools/clang/lib/Front
>>> end/FrontendAction.cpp:414
>>> #15 0x0000000000c8ef9c in clang::CodeGenAction::ExecuteAction
>>> (this=0x3cf1740) at
>>> /local/mnt/workspace/slarin/tools/llvm-mainline-
>> merged/tools/clang/lib/CodeG
>>> en/CodeGenAction.cpp:407
>>> #16 0x0000000000b00377 in clang::FrontendAction::Execute
>> (this=0x3cf1740) at
>>> /local/mnt/workspace/slarin/tools/llvm-mainline-
>> merged/tools/clang/lib/Front
>>> end/FrontendAction.cpp:334
>>> #17 0x0000000000ad8e63 in clang::CompilerInstance::ExecuteAction
>>> (this=0x3ced2d0, Act=...)
>>>   at
>>> /local/mnt/workspace/slarin/tools/llvm-mainline-
>> merged/tools/clang/lib/Front
>>> end/CompilerInstance.cpp:653
>>> #18 0x0000000000aaa8e4 in clang::ExecuteCompilerInvocation
>> (Clang=0x3ced2d0)
>>>   at
>>> /local/mnt/workspace/slarin/tools/llvm-mainline-
>> merged/tools/clang/lib/Front
>>> endTool/ExecuteCompilerInvocation.cpp:175
>>> #19 0x0000000000a99618 in cc1_main (ArgBegin=0x7fffffffaf10,
>>> ArgEnd=0x7fffffffb108, Argv0=0x3cebaf8
>>> "/prj/qct/sunray-austin/scratch/slarin/qdsp6_hex/bin/qc/bin/clang",
>>> MainAddr=0xaa4654)
>>>   at
>>> /local/mnt/workspace/slarin/tools/llvm-mainline-
>> merged/tools/clang/tools/dri
>>> ver/cc1_main.cpp:165
>>> #20 0x0000000000aa5e77 in main (argc_=65, argv_=0x7fffffffc058) at
>>> /local/mnt/workspace/slarin/tools/llvm-mainline-
>> merged/tools/clang/tools/dri
>>> ver/driver.cpp:353
>>> 
>>> 
>>> Thanks.
>>> 
>>> Sergei
>>> 
> 
> 




More information about the llvm-commits mailing list