Mercurial > hg > graal-jvmci-8
comparison src/share/vm/opto/loopopts.cpp @ 850:fd50a67f97d1
6860469: remix_address_expressions sets incorrect control causing crash in split_if_with_block_post
Reviewed-by: never, kvn
Contributed-by: yamauchi@google.com, rasbold@google.com
author | never |
---|---|
date | Wed, 15 Jul 2009 13:37:35 -0700 |
parents | 0f2d888530e7 |
children | 18f526145aea |
comparison
equal
deleted
inserted
replaced
849:83906a156fc0 | 850:fd50a67f97d1 |
---|---|
344 if( n_loop == add_invar_loop || !add_invar_loop->is_member( n_loop ) ) | 344 if( n_loop == add_invar_loop || !add_invar_loop->is_member( n_loop ) ) |
345 return NULL; // No invariant part of the add? | 345 return NULL; // No invariant part of the add? |
346 | 346 |
347 // Yes! Reshape address expression! | 347 // Yes! Reshape address expression! |
348 Node *inv_scale = new (C, 3) LShiftINode( add_invar, scale ); | 348 Node *inv_scale = new (C, 3) LShiftINode( add_invar, scale ); |
349 register_new_node( inv_scale, add_invar_ctrl ); | 349 Node *inv_scale_ctrl = |
350 dom_depth(add_invar_ctrl) > dom_depth(scale_ctrl) ? | |
351 add_invar_ctrl : scale_ctrl; | |
352 register_new_node( inv_scale, inv_scale_ctrl ); | |
350 Node *var_scale = new (C, 3) LShiftINode( add_var, scale ); | 353 Node *var_scale = new (C, 3) LShiftINode( add_var, scale ); |
351 register_new_node( var_scale, n_ctrl ); | 354 register_new_node( var_scale, n_ctrl ); |
352 Node *var_add = new (C, 3) AddINode( var_scale, inv_scale ); | 355 Node *var_add = new (C, 3) AddINode( var_scale, inv_scale ); |
353 register_new_node( var_add, n_ctrl ); | 356 register_new_node( var_add, n_ctrl ); |
354 _igvn.hash_delete( n ); | 357 _igvn.hash_delete( n ); |