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)
commit5493feed251b00413a1978fc13a4a00fb7ec4e9e
treec6c781fb550580e30f1520361909c0a13bb31a2a
parent15bee188c4c141c3f82a86df3c3f4eba172c1706
 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.

llvm-svn: 177279
llvm/lib/IR/Constants.cpp