diff --git a/llvm/test/Regression/Transforms/Reassociate/2002-05-15-SubReassociate.ll b/llvm/test/Regression/Transforms/Reassociate/2002-05-15-SubReassociate.ll new file mode 100644 index 000000000000..fcbd723c0993 --- /dev/null +++ b/llvm/test/Regression/Transforms/Reassociate/2002-05-15-SubReassociate.ll @@ -0,0 +1,14 @@ +; With sub reassociation, constant folding can eliminate all of the constants. +; +; RUN: if as < %s | opt -reassociate -constprop -instcombine -dce | dis | grep add +; RUN: then exit 1 +; RUN: else exit 0 +; RUN: fi + +int "test"(int %A, int %B) { + %W = add int -5, %B + %X = add int -7, %A + %Y = sub int %X, %W + %Z = add int %Y, 12 + ret int %Z +} diff --git a/llvm/test/Regression/Transforms/Reassociate/2002-05-15-SubReassociate2.ll b/llvm/test/Regression/Transforms/Reassociate/2002-05-15-SubReassociate2.ll new file mode 100644 index 000000000000..aa0066a1ff37 --- /dev/null +++ b/llvm/test/Regression/Transforms/Reassociate/2002-05-15-SubReassociate2.ll @@ -0,0 +1,15 @@ +; With sub reassociation, constant folding can eliminate the two 12 constants. +; +; RUN: if as < %s | opt -reassociate -constprop -dce | dis | grep 12 +; RUN: then exit 1 +; RUN: else exit 0 +; RUN: fi + +int "test"(int %A, int %B, int %C, int %D) { + %M = add int %A, 12 + %N = add int %M, %B + %O = add int %N, %C + %P = sub int %D, %O + %Q = add int %P, 12 + ret int %Q +}