summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Bytecode/Analyzer/BytecodeHandler.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2004-06-10 02:33:20 +0000
committerChris Lattner <sabre@nondot.org>2004-06-10 02:33:20 +0000
commitee59d4bf04602847e974d9285f3567ac08c7742c (patch)
tree1ef2642ca14115c72834d337bd43c6b6143afa79 /llvm/lib/Bytecode/Analyzer/BytecodeHandler.cpp
parentc8e7e298c1bc4c8f48e5a1d621acf6c0b516e34b (diff)
downloadbcm5719-llvm-ee59d4bf04602847e974d9285f3567ac08c7742c.tar.gz
bcm5719-llvm-ee59d4bf04602847e974d9285f3567ac08c7742c.zip
Fix a bug in my checkin from last night that caused miscompilations of
186.crafty, fhourstones and 132.ijpeg. Bugpoint makes really nasty miscompilations embarassingly easy to find. It narrowed it down to the instcombiner and this testcase (from fhourstones): bool %l7153_l4706_htstat_loopentry_2E_4_no_exit_2E_4(int* %i, [32 x int]* %works, int* %tmp.98.out) { newFuncRoot: %tmp.96 = load int* %i ; <int> [#uses=1] %tmp.97 = getelementptr [32 x int]* %works, long 0, int %tmp.96 ; <int*> [#uses=1] %tmp.98 = load int* %tmp.97 ; <int> [#uses=2] %tmp.99 = load int* %i ; <int> [#uses=1] %tmp.100 = and int %tmp.99, 7 ; <int> [#uses=1] %tmp.101 = seteq int %tmp.100, 7 ; <bool> [#uses=2] %tmp.102 = cast bool %tmp.101 to int ; <int> [#uses=0] br bool %tmp.101, label %codeRepl4.exitStub, label %codeRepl3.exitStub codeRepl4.exitStub: ; preds = %newFuncRoot store int %tmp.98, int* %tmp.98.out ret bool true codeRepl3.exitStub: ; preds = %newFuncRoot store int %tmp.98, int* %tmp.98.out ret bool false } ... which only has one combination performed on it: $ llvm-as < t.ll | opt -instcombine -debug | llvm-dis IC: Old = %tmp.101 = seteq int %tmp.100, 7 ; <bool> [#uses=1] New = setne int %tmp.100, 0 ; <bool>:<badref> [#uses=0] IC: MOD = br bool %tmp.101, label %codeRepl3.exitStub, label %codeRepl4.exitStub IC: MOD = %tmp.97 = getelementptr [32 x int]* %works, uint 0, int %tmp.96 ; <int*> [#uses=1] It doesn't get much better than this. :) llvm-svn: 14109
Diffstat (limited to 'llvm/lib/Bytecode/Analyzer/BytecodeHandler.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud