@@ -431,50 +431,49 @@ enum BasicBlockFlags : uint64_t
431431 BBF_HAS_NULLCHECK = MAKE_BBFLAG ( 9 ), // BB contains a null check
432432 BBF_HAS_SUPPRESSGC_CALL = MAKE_BBFLAG (10 ), // BB contains a call to a method with SuppressGCTransitionAttribute
433433 BBF_RUN_RARELY = MAKE_BBFLAG (11 ), // BB is rarely run (catch clauses, blocks with throws etc)
434- BBF_LOOP_HEAD = MAKE_BBFLAG (12 ), // BB is the head of a loop (can reach a predecessor)
435- BBF_HAS_LABEL = MAKE_BBFLAG (13 ), // BB needs a label
436- BBF_LOOP_ALIGN = MAKE_BBFLAG (14 ), // Block is lexically the first block in a loop we intend to align.
437- BBF_HAS_ALIGN = MAKE_BBFLAG (15 ), // BB ends with 'align' instruction
438- BBF_HAS_JMP = MAKE_BBFLAG (16 ), // BB executes a JMP instruction (instead of return)
439- BBF_GC_SAFE_POINT = MAKE_BBFLAG (17 ), // BB has a GC safe point (e.g. a call)
440- BBF_HAS_IDX_LEN = MAKE_BBFLAG (18 ), // BB contains simple index or length expressions on an SD array local var.
441- BBF_HAS_MD_IDX_LEN = MAKE_BBFLAG (19 ), // BB contains simple index, length, or lower bound expressions on an MD array local var.
442- BBF_HAS_MDARRAYREF = MAKE_BBFLAG (20 ), // Block has a multi-dimensional array reference
443- BBF_HAS_NEWOBJ = MAKE_BBFLAG (21 ), // BB contains 'new' of an object type.
444-
445- BBF_RETLESS_CALL = MAKE_BBFLAG (22 ), // BBJ_CALLFINALLY that will never return (and therefore, won't need a paired
434+ BBF_HAS_LABEL = MAKE_BBFLAG (12 ), // BB needs a label
435+ BBF_LOOP_ALIGN = MAKE_BBFLAG (13 ), // Block is lexically the first block in a loop we intend to align.
436+ BBF_HAS_ALIGN = MAKE_BBFLAG (14 ), // BB ends with 'align' instruction
437+ BBF_HAS_JMP = MAKE_BBFLAG (15 ), // BB executes a JMP instruction (instead of return)
438+ BBF_GC_SAFE_POINT = MAKE_BBFLAG (16 ), // BB has a GC safe point (e.g. a call)
439+ BBF_HAS_IDX_LEN = MAKE_BBFLAG (17 ), // BB contains simple index or length expressions on an SD array local var.
440+ BBF_HAS_MD_IDX_LEN = MAKE_BBFLAG (18 ), // BB contains simple index, length, or lower bound expressions on an MD array local var.
441+ BBF_HAS_MDARRAYREF = MAKE_BBFLAG (19 ), // Block has a multi-dimensional array reference
442+ BBF_HAS_NEWOBJ = MAKE_BBFLAG (20 ), // BB contains 'new' of an object type.
443+
444+ BBF_RETLESS_CALL = MAKE_BBFLAG (21 ), // BBJ_CALLFINALLY that will never return (and therefore, won't need a paired
446445 // BBJ_CALLFINALLYRET); see isBBCallFinallyPair().
447- BBF_COLD = MAKE_BBFLAG (23 ), // BB is cold
448- BBF_PROF_WEIGHT = MAKE_BBFLAG (24 ), // BB weight is computed from profile data
449- BBF_KEEP_BBJ_ALWAYS = MAKE_BBFLAG (25 ), // A special BBJ_ALWAYS block, used by EH code generation. Keep the jump kind
446+ BBF_COLD = MAKE_BBFLAG (22 ), // BB is cold
447+ BBF_PROF_WEIGHT = MAKE_BBFLAG (23 ), // BB weight is computed from profile data
448+ BBF_KEEP_BBJ_ALWAYS = MAKE_BBFLAG (24 ), // A special BBJ_ALWAYS block, used by EH code generation. Keep the jump kind
450449 // as BBJ_ALWAYS. Used on x86 for the final step block out of a finally.
451- BBF_HAS_CALL = MAKE_BBFLAG (26 ), // BB contains a call
452- BBF_DOMINATED_BY_EXCEPTIONAL_ENTRY = MAKE_BBFLAG (27 ), // Block is dominated by exceptional entry.
453- BBF_BACKWARD_JUMP = MAKE_BBFLAG (28 ), // BB is surrounded by a backward jump/switch arc
454- BBF_BACKWARD_JUMP_SOURCE = MAKE_BBFLAG (29 ), // Block is a source of a backward jump
455- BBF_BACKWARD_JUMP_TARGET = MAKE_BBFLAG (30 ), // Block is a target of a backward jump
456- BBF_PATCHPOINT = MAKE_BBFLAG (31 ), // Block is a patchpoint
457- BBF_PARTIAL_COMPILATION_PATCHPOINT = MAKE_BBFLAG (32 ), // Block is a partial compilation patchpoint
458- BBF_HAS_HISTOGRAM_PROFILE = MAKE_BBFLAG (33 ), // BB contains a call needing a histogram profile
459- BBF_TAILCALL_SUCCESSOR = MAKE_BBFLAG (34 ), // BB has pred that has potential tail call
460- BBF_RECURSIVE_TAILCALL = MAKE_BBFLAG (35 ), // Block has recursive tailcall that may turn into a loop
461- BBF_NO_CSE_IN = MAKE_BBFLAG (36 ), // Block should kill off any incoming CSE
462- BBF_CAN_ADD_PRED = MAKE_BBFLAG (37 ), // Ok to add pred edge to this block, even when "safe" edge creation disabled
463- BBF_HAS_VALUE_PROFILE = MAKE_BBFLAG (38 ), // Block has a node that needs a value probing
464- BBF_HAS_NEWARR = MAKE_BBFLAG (39 ), // BB contains 'new' of an array type.
465- BBF_MAY_HAVE_BOUNDS_CHECKS = MAKE_BBFLAG (40 ), // BB *likely* has a bounds check (after rangecheck phase).
466- BBF_ASYNC_RESUMPTION = MAKE_BBFLAG (41 ), // Block is a resumption block in an async method
450+ BBF_HAS_CALL = MAKE_BBFLAG (25 ), // BB contains a call
451+ BBF_DOMINATED_BY_EXCEPTIONAL_ENTRY = MAKE_BBFLAG (26 ), // Block is dominated by exceptional entry.
452+ BBF_BACKWARD_JUMP = MAKE_BBFLAG (27 ), // BB is surrounded by a backward jump/switch arc
453+ BBF_BACKWARD_JUMP_SOURCE = MAKE_BBFLAG (28 ), // Block is a source of a backward jump
454+ BBF_BACKWARD_JUMP_TARGET = MAKE_BBFLAG (29 ), // Block is a target of a backward jump
455+ BBF_PATCHPOINT = MAKE_BBFLAG (30 ), // Block is a patchpoint
456+ BBF_PARTIAL_COMPILATION_PATCHPOINT = MAKE_BBFLAG (31 ), // Block is a partial compilation patchpoint
457+ BBF_HAS_HISTOGRAM_PROFILE = MAKE_BBFLAG (32 ), // BB contains a call needing a histogram profile
458+ BBF_TAILCALL_SUCCESSOR = MAKE_BBFLAG (33 ), // BB has pred that has potential tail call
459+ BBF_RECURSIVE_TAILCALL = MAKE_BBFLAG (34 ), // Block has recursive tailcall that may turn into a loop
460+ BBF_NO_CSE_IN = MAKE_BBFLAG (35 ), // Block should kill off any incoming CSE
461+ BBF_CAN_ADD_PRED = MAKE_BBFLAG (36 ), // Ok to add pred edge to this block, even when "safe" edge creation disabled
462+ BBF_HAS_VALUE_PROFILE = MAKE_BBFLAG (37 ), // Block has a node that needs a value probing
463+ BBF_HAS_NEWARR = MAKE_BBFLAG (38 ), // BB contains 'new' of an array type.
464+ BBF_MAY_HAVE_BOUNDS_CHECKS = MAKE_BBFLAG (39 ), // BB *likely* has a bounds check (after rangecheck phase).
465+ BBF_ASYNC_RESUMPTION = MAKE_BBFLAG (40 ), // Block is a resumption block in an async method
467466
468467 // The following are sets of flags.
469468
470469 // Flags to update when two blocks are compacted
471470
472471 BBF_COMPACT_UPD = BBF_GC_SAFE_POINT | BBF_NEEDS_GCPOLL | BBF_HAS_JMP | BBF_HAS_IDX_LEN | BBF_HAS_MD_IDX_LEN | BBF_BACKWARD_JUMP | \
473- BBF_HAS_NEWOBJ | BBF_HAS_NEWARR | BBF_HAS_NULLCHECK | BBF_HAS_MDARRAYREF | BBF_LOOP_HEAD | BBF_MAY_HAVE_BOUNDS_CHECKS,
472+ BBF_HAS_NEWOBJ | BBF_HAS_NEWARR | BBF_HAS_NULLCHECK | BBF_HAS_MDARRAYREF | BBF_MAY_HAVE_BOUNDS_CHECKS,
474473
475474 // Flags a block should not have had before it is split.
476475
477- BBF_SPLIT_NONEXIST = BBF_LOOP_HEAD | BBF_RETLESS_CALL | BBF_COLD,
476+ BBF_SPLIT_NONEXIST = BBF_RETLESS_CALL | BBF_COLD,
478477
479478 // Flags lost by the top block when a block is split.
480479 // Note, this is a conservative guess.
@@ -1150,10 +1149,6 @@ struct BasicBlock : private LIR::Range
11501149 {
11511150 return HasFlag (BBF_RUN_RARELY);
11521151 }
1153- bool isLoopHead () const
1154- {
1155- return HasFlag (BBF_LOOP_HEAD);
1156- }
11571152
11581153 bool isLoopAlign () const
11591154 {
0 commit comments