Description
Bugzilla Link | 2034 |
Resolution | FIXED |
Resolved on | Mar 19, 2008 20:10 |
Version | trunk |
OS | Linux |
Attachments | testcase |
Extended Description
Here's an interesting one:
$ llvm-commit/Debug/bin/opt -anders-aa -instcombine -gvn b.bc -debug-pass=Structure
Now before I get to the output, what's happening is that
a) anders-aa registers all the Values up front
b) instcombine folds together two GEPs (%tmp10 and %tmp11) creating a new one (%tmp11) which anders-aa hasn't seen
c) gvn queries anders-aa about the new %tmp11
instcombine is marked as preserving the CFG, but not any AA stuff, so really anders-aa should be re-run before gvn gets to it. Here's the output:
Pass Arguments: -anders-aa -instcombine -domtree -memdep -gvn -preverify -domtree -verify
Target Data Layout
Basic Alias Analysis (default AA impl)
ModulePass Manager
Andersen's Interprocedural Alias Analysis
FunctionPass Manager
Combine redundant instructions
-- Combine redundant instructions
Dominator Tree Construction
Memory Dependence Analysis
Global Value Numbering
-- Global Value Numbering
-- Dominator Tree Construction
-- Memory Dependence Analysis
Preliminary module verification
Dominator Tree Construction
Module Verifier
-- Dominator Tree Construction
-- Module Verifier
-- Preliminary module verification
-- Andersen's Interprocedural Alias Analysis
-- Target Data Layout
%tmp11 = getelementptr %struct.FULL* %tmp9, i32 0, i32 2, i32 0 ; <float**> [#uses=1]
opt: Andersens.cpp:497: unsigned int::Andersens::getNode(llvm::Value*): Assertion `0 && "Value does not have a node in the points-to graph!"' failed.
llvm-commit/Debug/bin/opt[0x85f97ee]
llvm-commit/Debug/bin/opt[0x85f9ab4]
[0xffffe500]
Aborted