-
Notifications
You must be signed in to change notification settings - Fork 15.2k
Description
| Bugzilla Link | 3759 |
| Resolution | FIXED |
| Resolved on | Mar 10, 2009 14:50 |
| Version | trunk |
| OS | Linux |
| Reporter | LLVM Bugzilla Contributor |
| CC | @lattner |
Extended Description
Hi,
I am trying to build ffmpeg with clang/llvm using r66380.
But I got "getOperand() out of range!" assertion on some files [1][2].
I don't know what you need to investigate the issue (I failed to create a small testcase and -debug produce very large data).
To reproduce the problem :
$ svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
$ cd ffmpeg
$ ./configure --cc=ccc --enable-gpl --cpu=athlon-xp
$ clang -S -disable-free --relocation-model=static --unwind-tables=0 --fmath-errno=0 -DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 -I. -I./ffmpeg -g -O3 -Wundef -std=c99 -o /tmp/tmpiqN2l-.s -x c ./libavcodec/motion_est.c
( using $ make should also show the problem)
[1]
$clang -S -disable-free --relocation-model=static --unwind-tables=0 --fmath-errno=0 -DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 -I. -I/home/mat/appli/ffmpeg -g -O3 -Wundef -std=c99 -o /tmp/tmpiqN2l-.s -x c /home/mat/appli/ffmpeg/libavcodec/motion_est.c
clang: /mnt/data/tmp/llvm/llvm/include/llvm/CodeGen/MachineInstr.h:129: llvm::MachineOperand& llvm::MachineInstr::getOperand(unsigned int): Assertion `i < getNumOperands() && "getOperand() out of range!"' failed.
0 clang 0x08ddf9ee
1 clang 0x08ddff95
2 0xb7f8d400 __kernel_sigreturn + 0
3 libc.so.6 0xb7d07008 abort + 392
4 libc.so.6 0xb7cfe5ce __assert_fail + 238
5 clang 0x08492b22
6 clang 0x08b26f6b
7 clang 0x08b2be55
8 clang 0x08b2e18d
9 clang 0x08adc532
10 clang 0x0848bbf2
11 clang 0x08d6420c
12 clang 0x08d64cfa
13 clang 0x08d64e83
14 clang 0x0807ee8c
15 clang 0x0807ef8a
16 clang 0x082117ba
17 clang 0x080c64a6
18 clang 0x080c8799 main + 2016
19 libc.so.6 0xb7cf0775 __libc_start_main + 229
20 clang 0x080664f1
Stack dump:
0. Program arguments: clang -S -disable-free --relocation-model=static --unwind-tables=0 --fmath-errno=0 -DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 -I. -I/home/mat/appli/ffmpeg -g -O3 -Wundef -std=c99 -o /tmp/tmpiqN2l-.s -x c /home/mat/appli/ffmpeg/libavcodec/motion_est.c -regalloc=local
-
<eof> parser at end of file -
Code generation -
Running pass 'Linear Scan Register Allocator' on function '@sad_hpel_motion_search'
Abandon
[2]
(gdb) r -S -disable-free --relocation-model=static --unwind-tables=0 --fmath-errno=0 -DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 -I. -I/home/mat/appli/ffmpeg -g -O3 -Wundef -std=c99 -o /tmp/tmpiqN2l-.s -x c /home/mat/appli/ffmpeg/libavcodec/motion_est.c
Starting program: /mnt/data/tmp/llvm/llvm/Debug/bin/clang -S -disable-free --relocation-model=static --unwind-tables=0 --fmath-errno=0 -DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 -I. -I/home/mat/appli/ffmpeg -g -O3 -Wundef -std=c99 -o /tmp/tmpiqN2l-.s -x c /home/mat/appli/ffmpeg/libavcodec/motion_est.c
[Thread debugging using libthread_db enabled]
clang: /mnt/data/tmp/llvm/llvm/include/llvm/CodeGen/MachineInstr.h:129: llvm::MachineOperand& llvm::MachineInstr::getOperand(unsigned int): Assertion `i < getNumOperands() && "getOperand() out of range!"' failed.
[New Thread 0xb7cf86d0 (LWP 17051)]
Program received signal SIGABRT, Aborted.
[Switching to Thread 0xb7cf86d0 (LWP 17051)]
0xb7fad424 in __kernel_vsyscall ()
(gdb) bt
#0 0xb7fad424 in __kernel_vsyscall ()
#1 0xb7d25640 in raise () from /lib/i686/cmov/libc.so.6
#2 0xb7d27008 in abort () from /lib/i686/cmov/libc.so.6
#3 0xb7d1e5ce in __assert_fail () from /lib/i686/cmov/libc.so.6
#4 0x08492b22 in llvm::MachineInstr::getOperand (this=0x9ede350, i=21)
at /mnt/data/tmp/llvm/llvm/include/llvm/CodeGen/MachineInstr.h:129
#5 0x08b26f6b in hasLaterNon2AddrUse (MI=@0x9ede350, i=21, VirtReg=1720)
at VirtRegMap.cpp:1328
#6 0x08b2be55 in RewriteMBB (this=0x9cce658, MBB=@0xaf0946c, VRM=@0xad47b90,
Spills=@0xbfbc82d8, RegKills=@0xbfbc836c, KillOps=@0xbfbc8360)
at VirtRegMap.cpp:1658
#7 0x08b2e18d in runOnMachineFunction (this=0x9cce658, MF=@0xb795818,
VRM=@0xad47b90) at VirtRegMap.cpp:605
#8 0x08adc532 in runOnMachineFunction (this=0xa0bd390, fn=@0xb795818)
at RegAllocLinearScan.cpp:315
#9 0x0848bbf2 in llvm::MachineFunctionPass::runOnFunction (this=0xa0bd390,
F=@0x9c570d8)
at /mnt/data/tmp/llvm/llvm/include/llvm/CodeGen/MachineFunctionPass.h:42
#10 0x08d6420c in llvm::FPPassManager::runOnFunction (this=0xa0ab860,
F=@0x9c570d8) at PassManager.cpp:1327
#11 0x08d64cfa in llvm::FunctionPassManagerImpl::run (this=0xa0ab060,
F=@0x9c570d8) at PassManager.cpp:1284
#12 0x08d64e83 in llvm::FunctionPassManager::run (this=0xa07d3b0, F=@0x9c570d8)
---Type to continue, or q to quit---
at PassManager.cpp:1236
#13 0x0807ee8c in EmitAssembly (this=0x9a80f10) at Backend.cpp:420
#14 0x0807ef8a in HandleTranslationUnit (this=0x9a80f10, TU=@0x9a82700)
at Backend.cpp:151
#15 0x082117ba in clang::ParseAST (PP=@0x9a80ac8, Consumer=0x9a80f10,
TU=0x9a82700, PrintStats=false) at ParseAST.cpp:75
#16 0x080c64a6 in ProcessInputFile (PP=@0x9a80ac8, PPF=@0xbfbc8f7c,
InFile=@0x9a84b98, PA=EmitAssembly) at clang.cpp:1387
#17 0x080c8799 in main (argc=22, argv=0xbfbc90d4) at clang.cpp:1586
(gdb) p this
No symbol "this" in current context.
(gdb) up 3
#3 0xb7d1e5ce in __assert_fail () from /lib/i686/cmov/libc.so.6
(gdb) up
#4 0x08492b22 in llvm::MachineInstr::getOperand (this=0x9ede350, i=21)
at /mnt/data/tmp/llvm/llvm/include/llvm/CodeGen/MachineInstr.h:129
129 assert(i < getNumOperands() && "getOperand() out of range!");
(gdb) p this
$1 = (class llvm::MachineInstr * const) 0x9ede350
(gdb) p *this
$2 = {<llvm::ilist_nodellvm::MachineInstr> = {Prev = 0xae8a5f8,
Next = 0x9ede400}, TID = 0x9130e84, NumImplicitOps = 0,
Operands = {<std::_Vector_base<llvm::MachineOperand, std::allocatorllvm::MachineOperand >> = {
_M_impl = {<std::allocatorllvm::MachineOperand> = {<__gnu_cxx::new_allocatorllvm::MachineOperand> = {}, },
_M_start = 0xbf16a70, _M_finish = 0xbf16c14,
_M_end_of_storage = 0xbf16cf0}}, },
MemOperands = {<std::_List_base<llvm::MachineMemOperand, std::allocatorllvm::MachineMemOperand >> = {
_M_impl = {<std::allocator<std::_List_nodellvm::MachineMemOperand >> = {<__gnu_cxx::new_allocator<std::_List_nodellvm::MachineMemOperand >> = {}, }, _M_node = {_M_next = 0x9ede36c,
_M_prev = 0x9ede36c}}}, }, Parent = 0xaf0946c,
debugLoc = {Idx = 4294967295}}