[llvm-commits] [llvm] r118936 - /llvm/trunk/lib/Target/ARM/ARMFastISel.cpp
Evan Cheng
evan.cheng at apple.com
Fri Nov 12 15:48:44 PST 2010
Is this related to:
******************** TEST 'LLVM :: CodeGen/ARM/fast-isel.ll' FAILED ********************
Script:
--
llc < /Volumes/Ebi/echeng/llvm/test/CodeGen/ARM/fast-isel.ll -O0 -fast-isel-abort -mtriple=armv7-apple-darwin
llc < /Volumes/Ebi/echeng/llvm/test/CodeGen/ARM/fast-isel.ll -O0 -fast-isel-abort -mtriple=thumbv7-apple-darwin
--
Exit Code: 132
Command Output (stderr):
--
FastISel miss: %t8 = getelementptr i32* %t7, i32 %t6
FastISel didn't select the entire block
UNREACHABLE executed at SelectionDAGISel.cpp:899!
0 llc 0x0000000106505ac5 PrintStackTrace(void*) + 53
1 llc 0x00000001065060d3 SignalHandler(int) + 371
2 libsystem_c.dylib 0x00007fff8048179a _sigtramp + 26
3 libsystem_c.dylib 0x00007fff80446725 szone_free_definite_size + 3888
4 llc 0x0000000106505d9b raise + 27
5 llc 0x0000000106505e5a abort + 26
6 llc 0x00000001064d595c llvm::llvm_unreachable_internal(char const*, char const*, unsigned int) + 220
7 llc 0x0000000105e9c0cf llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) + 2111
8 llc 0x0000000105e9adea llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) + 842
9 llc 0x0000000105ffcd21 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) + 97
10 llc 0x00000001063ee64f llvm::FPPassManager::runOnFunction(llvm::Function&) + 383
11 llc 0x00000001063ee9d1 llvm::FPPassManager::runOnModule(llvm::Module&) + 129
12 llc 0x00000001063eec09 llvm::MPPassManager::runOnModule(llvm::Module&) + 473
13 llc 0x00000001063ef316 llvm::PassManagerImpl::run(llvm::Module&) + 182
14 llc 0x00000001063ef76d llvm::PassManager::run(llvm::Module&) + 29
15 llc 0x00000001058c7a80 main + 3072
16 llc 0x00000001058c6e34 start + 52
Stack dump:
0. Program arguments: llc -O0 -fast-isel-abort -mtriple=armv7-apple-darwin
1. Running pass 'Function Pass Manager' on module '<stdin>'.
2. Running pass 'ARM Instruction Selection' on function '@foo'
Evan
On Nov 12, 2010, at 2:52 PM, Eric Christopher wrote:
> Author: echristo
> Date: Fri Nov 12 16:52:32 2010
> New Revision: 118936
>
> URL: http://llvm.org/viewvc/llvm-project?rev=118936&view=rev
> Log:
> Make this happen for ARM like x86. Don't entirely bail out when
> an address is in a different block, get it into a register and go
> from there.
>
> Modified:
> llvm/trunk/lib/Target/ARM/ARMFastISel.cpp
>
> Modified: llvm/trunk/lib/Target/ARM/ARMFastISel.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMFastISel.cpp?rev=118936&r1=118935&r2=118936&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/ARMFastISel.cpp (original)
> +++ llvm/trunk/lib/Target/ARM/ARMFastISel.cpp Fri Nov 12 16:52:32 2010
> @@ -590,10 +590,11 @@
> // Don't walk into other basic blocks; it's possible we haven't
> // visited them yet, so the instructions may not yet be assigned
> // virtual registers.
> - if (FuncInfo.MBBMap[I->getParent()] != FuncInfo.MBB)
> - return false;
> - Opcode = I->getOpcode();
> - U = I;
> + if (FuncInfo.StaticAllocaMap.count(static_cast<const AllocaInst *>(Obj)) ||
> + FuncInfo.MBBMap[I->getParent()] == FuncInfo.MBB) {
> + Opcode = I->getOpcode();
> + U = I;
> + }
> } else if (const ConstantExpr *C = dyn_cast<ConstantExpr>(Obj)) {
> Opcode = C->getOpcode();
> U = C;
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list