The optimization a + (-0.0f) -> a was being misapplied to a + (+0.0f) in the vector...
authorDavid Tweed <david.tweed@arm.com>
Mon, 18 Mar 2013 11:54:44 +0000 (11:54 +0000)
committerDavid Tweed <david.tweed@arm.com>
Mon, 18 Mar 2013 11:54:44 +0000 (11:54 +0000)
commitec7eb55cc4c35318ff0ec4e04c0d42e5a65e1811
tree552e8711a2f857dc6e99290b0d514f07ddba1fe8
parentb9e8678025891a3eb5431c652df541b632902fc6
 The optimization a + (-0.0f) -> a was being misapplied to a + (+0.0f) in the vector case (because
we weren't differntiating floating-point zeroinitializers from other zero-initializers)
which was causing problems for code relying upon a + (+0.0f) to, eg, flush denormals to
0. Make the scalar and vector cases have the same behaviour.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177279 91177308-0d34-0410-b5e6-96231b3b80d8
lib/IR/Constants.cpp