Extend store merging to support the 'if/then' version in addition to if/then/else.
authorChris Lattner <sabre@nondot.org>
Sun, 15 Apr 2007 01:02:18 +0000 (01:02 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 15 Apr 2007 01:02:18 +0000 (01:02 +0000)
commit31755a024d8056947d9500233f8bd2e41b06c132
tree98a6f2ff99704b917732dc7b0cf9b7568034c56b
parent9838939b3a5118bd6f8cd74654126c28c61adec7
Extend store merging to support the 'if/then' version in addition to if/then/else.

This sinks the two stores in this example into a single store in cond_next.  In this
case, it allows elimination of the load as well:

        store double 0.000000e+00, double* @s.3060
        %tmp3 = fcmp ogt double %tmp1, 5.000000e-01             ; <i1> [#uses=1]
        br i1 %tmp3, label %cond_true, label %cond_next
cond_true:              ; preds = %entry
        store double 1.000000e+00, double* @s.3060
        br label %cond_next
cond_next:              ; preds = %entry, %cond_true
        %tmp6 = load double* @s.3060            ; <double> [#uses=1]

This implements Transforms/InstCombine/store-merge.ll:test2

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36040 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/Scalar/InstructionCombining.cpp