src/share/vm/opto/loopopts.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/opto/loopopts.cpp Mon Dec 14 16:16:51 2015
--- new/src/share/vm/opto/loopopts.cpp Mon Dec 14 16:16:50 2015
*** 24,33 ****
--- 24,34 ----
#include "precompiled.hpp"
#include "memory/allocation.inline.hpp"
#include "opto/addnode.hpp"
#include "opto/connode.hpp"
+ #include "opto/castnode.hpp"
#include "opto/divnode.hpp"
#include "opto/loopnode.hpp"
#include "opto/matcher.hpp"
#include "opto/mulnode.hpp"
#include "opto/movenode.hpp"
*** 898,907 ****
--- 899,916 ----
// Attempt to remix address expressions for loop invariants
Node *m = remix_address_expressions( n );
if( m ) return m;
+ if (n->is_ConstraintCast()) {
+ Node* dom_cast = n->as_ConstraintCast()->dominating_cast(this);
+ if (dom_cast != NULL) {
+ _igvn.replace_node(n, dom_cast);
+ return dom_cast;
+ }
+ }
+
// Determine if the Node has inputs from some local Phi.
// Returns the block to clone thru.
Node *n_blk = has_local_phi_input( n );
if( !n_blk ) return n;
src/share/vm/opto/loopopts.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File