diff options
author | Scott Michel <scottm@aero.org> | 2008-03-05 17:49:05 +0000 |
---|---|---|
committer | Scott Michel <scottm@aero.org> | 2008-03-05 17:49:05 +0000 |
commit | 944207423bd4bed699cb5b8e6042888bfb3211a6 (patch) | |
tree | eadb85e8e66dcf98daa2a740d29ac07971baaa4e /clang/CodeGen/CodeGenFunction.cpp | |
parent | 7c08a01698bfc09aba3daa125662a0b3ec8b20f5 (diff) | |
download | bcm5719-llvm-944207423bd4bed699cb5b8e6042888bfb3211a6.tar.gz bcm5719-llvm-944207423bd4bed699cb5b8e6042888bfb3211a6.zip |
This patch fixes a problem encountered by the CellSPU backend where variants
were being pruned in patterns where a variable was used more than once, e.g.:
(or (and R32C:$rA, R32C:$rC), (and R32C:$rB, (not R32C:$rC)))
In this example, $rC is used more than once and is actually significant to
instruction selection pattern matching when commuted variants are produced.
This patch scans the pattern's clauses and collects the variables, creating
a set of variables that are used more than once. TreePatternNode::isIsomorphicTo()
also understands that multiply-used variables are significant.
llvm-svn: 47950
Diffstat (limited to 'clang/CodeGen/CodeGenFunction.cpp')
0 files changed, 0 insertions, 0 deletions