diff options
-rw-r--r-- | lib/Target/X86/README.txt | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/Target/X86/README.txt b/lib/Target/X86/README.txt index cb206f3b04..9410a9acf8 100644 --- a/lib/Target/X86/README.txt +++ b/lib/Target/X86/README.txt @@ -166,3 +166,25 @@ http://gcc.gnu.org/ml/gcc-patches/2004-08/msg02011.html Combine: a = sin(x), b = cos(x) into a,b = sincos(x). +//===---------------------------------------------------------------------===// + +Solve this DAG isel folding deficiency: + +int X, Y; + +void fn1(void) +{ + X = X | (Y << 3); +} + +compiles to + +fn1: + movl Y, %eax + shll $3, %eax + orl X, %eax + movl %eax, X + ret + +The problem is the store's chain operand is not the load X but rather +a TokenFactor of the load X and load Y. This prevents the folding. |