equal
deleted
inserted
replaced
381 |
381 |
382 //------------------------------PhaseIterGVN----------------------------------- |
382 //------------------------------PhaseIterGVN----------------------------------- |
383 // Phase for iteratively performing local, pessimistic GVN-style optimizations. |
383 // Phase for iteratively performing local, pessimistic GVN-style optimizations. |
384 // and ideal transformations on the graph. |
384 // and ideal transformations on the graph. |
385 class PhaseIterGVN : public PhaseGVN { |
385 class PhaseIterGVN : public PhaseGVN { |
|
386 private: |
|
387 bool _delay_transform; // When true simply register the node when calling transform |
|
388 // instead of actually optimizing it |
|
389 |
386 // Idealize old Node 'n' with respect to its inputs and its value |
390 // Idealize old Node 'n' with respect to its inputs and its value |
387 virtual Node *transform_old( Node *a_node ); |
391 virtual Node *transform_old( Node *a_node ); |
388 protected: |
392 protected: |
389 |
393 |
390 // Idealize new Node 'n' with respect to its inputs and its value |
394 // Idealize new Node 'n' with respect to its inputs and its value |
444 add_users_to_worklist(old); |
448 add_users_to_worklist(old); |
445 hash_delete(old); |
449 hash_delete(old); |
446 subsume_node(old, nn); |
450 subsume_node(old, nn); |
447 } |
451 } |
448 |
452 |
|
453 void set_delay_transform(bool delay) { |
|
454 _delay_transform = delay; |
|
455 } |
|
456 |
449 #ifndef PRODUCT |
457 #ifndef PRODUCT |
450 protected: |
458 protected: |
451 // Sub-quadratic implementation of VerifyIterativeGVN. |
459 // Sub-quadratic implementation of VerifyIterativeGVN. |
452 unsigned long _verify_counter; |
460 unsigned long _verify_counter; |
453 unsigned long _verify_full_passes; |
461 unsigned long _verify_full_passes; |