@@ -392,43 +392,41 @@ enum BasicBlockFlags : unsigned __int64
392
392
BBF_HAS_SUPPRESSGC_CALL = MAKE_BBFLAG (12 ), // BB contains a call to a method with SuppressGCTransitionAttribute
393
393
BBF_RUN_RARELY = MAKE_BBFLAG (13 ), // BB is rarely run (catch clauses, blocks with throws etc)
394
394
BBF_LOOP_HEAD = MAKE_BBFLAG (14 ), // BB is the head of a loop
395
- BBF_LOOP_CALL0 = MAKE_BBFLAG (15 ), // BB starts a loop that sometimes won't call
396
- BBF_LOOP_CALL1 = MAKE_BBFLAG (16 ), // BB starts a loop that will always call
397
- BBF_HAS_LABEL = MAKE_BBFLAG (17 ), // BB needs a label
398
- BBF_LOOP_ALIGN = MAKE_BBFLAG (18 ), // Block is lexically the first block in a loop we intend to align.
399
- BBF_HAS_ALIGN = MAKE_BBFLAG (19 ), // BB ends with 'align' instruction
400
- BBF_HAS_JMP = MAKE_BBFLAG (20 ), // BB executes a JMP instruction (instead of return)
401
- BBF_GC_SAFE_POINT = MAKE_BBFLAG (21 ), // BB has a GC safe point (a call). More abstractly, BB does not require a
395
+ BBF_HAS_LABEL = MAKE_BBFLAG (15 ), // BB needs a label
396
+ BBF_LOOP_ALIGN = MAKE_BBFLAG (16 ), // Block is lexically the first block in a loop we intend to align.
397
+ BBF_HAS_ALIGN = MAKE_BBFLAG (17 ), // BB ends with 'align' instruction
398
+ BBF_HAS_JMP = MAKE_BBFLAG (18 ), // BB executes a JMP instruction (instead of return)
399
+ BBF_GC_SAFE_POINT = MAKE_BBFLAG (19 ), // BB has a GC safe point (a call). More abstractly, BB does not require a
402
400
// (further) poll -- this may be because this BB has a call, or, in some
403
401
// cases, because the BB occurs in a loop, and we've determined that all
404
402
// paths in the loop body leading to BB include a call.
405
- BBF_HAS_IDX_LEN = MAKE_BBFLAG (22 ), // BB contains simple index or length expressions on an SD array local var.
406
- BBF_HAS_MD_IDX_LEN = MAKE_BBFLAG (23 ), // BB contains simple index, length, or lower bound expressions on an MD array local var.
407
- BBF_HAS_MDARRAYREF = MAKE_BBFLAG (24 ), // Block has a multi-dimensional array reference
408
- BBF_HAS_NEWOBJ = MAKE_BBFLAG (25 ), // BB contains 'new' of an object type.
403
+ BBF_HAS_IDX_LEN = MAKE_BBFLAG (20 ), // BB contains simple index or length expressions on an SD array local var.
404
+ BBF_HAS_MD_IDX_LEN = MAKE_BBFLAG (21 ), // BB contains simple index, length, or lower bound expressions on an MD array local var.
405
+ BBF_HAS_MDARRAYREF = MAKE_BBFLAG (22 ), // Block has a multi-dimensional array reference
406
+ BBF_HAS_NEWOBJ = MAKE_BBFLAG (23 ), // BB contains 'new' of an object type.
409
407
410
- BBF_RETLESS_CALL = MAKE_BBFLAG (26 ), // BBJ_CALLFINALLY that will never return (and therefore, won't need a paired
408
+ BBF_RETLESS_CALL = MAKE_BBFLAG (24 ), // BBJ_CALLFINALLY that will never return (and therefore, won't need a paired
411
409
// BBJ_ALWAYS); see isBBCallAlwaysPair().
412
- BBF_LOOP_PREHEADER = MAKE_BBFLAG (27 ), // BB is a loop preheader block
413
- BBF_COLD = MAKE_BBFLAG (28 ), // BB is cold
414
- BBF_PROF_WEIGHT = MAKE_BBFLAG (29 ), // BB weight is computed from profile data
415
- BBF_KEEP_BBJ_ALWAYS = MAKE_BBFLAG (30 ), // A special BBJ_ALWAYS block, used by EH code generation. Keep the jump kind
410
+ BBF_LOOP_PREHEADER = MAKE_BBFLAG (25 ), // BB is a loop preheader block
411
+ BBF_COLD = MAKE_BBFLAG (26 ), // BB is cold
412
+ BBF_PROF_WEIGHT = MAKE_BBFLAG (27 ), // BB weight is computed from profile data
413
+ BBF_KEEP_BBJ_ALWAYS = MAKE_BBFLAG (28 ), // A special BBJ_ALWAYS block, used by EH code generation. Keep the jump kind
416
414
// as BBJ_ALWAYS. Used for the paired BBJ_ALWAYS block following the
417
415
// BBJ_CALLFINALLY block, as well as, on x86, the final step block out of a
418
416
// finally.
419
- BBF_HAS_CALL = MAKE_BBFLAG (31 ), // BB contains a call
420
- BBF_DOMINATED_BY_EXCEPTIONAL_ENTRY = MAKE_BBFLAG (32 ), // Block is dominated by exceptional entry.
421
- BBF_BACKWARD_JUMP = MAKE_BBFLAG (33 ), // BB is surrounded by a backward jump/switch arc
422
- BBF_BACKWARD_JUMP_SOURCE = MAKE_BBFLAG (34 ), // Block is a source of a backward jump
423
- BBF_BACKWARD_JUMP_TARGET = MAKE_BBFLAG (35 ), // Block is a target of a backward jump
424
- BBF_PATCHPOINT = MAKE_BBFLAG (36 ), // Block is a patchpoint
425
- BBF_PARTIAL_COMPILATION_PATCHPOINT = MAKE_BBFLAG (37 ), // Block is a partial compilation patchpoint
426
- BBF_HAS_HISTOGRAM_PROFILE = MAKE_BBFLAG (38 ), // BB contains a call needing a histogram profile
427
- BBF_TAILCALL_SUCCESSOR = MAKE_BBFLAG (39 ), // BB has pred that has potential tail call
428
- BBF_RECURSIVE_TAILCALL = MAKE_BBFLAG (40 ), // Block has recursive tailcall that may turn into a loop
429
- BBF_NO_CSE_IN = MAKE_BBFLAG (41 ), // Block should kill off any incoming CSE
430
- BBF_CAN_ADD_PRED = MAKE_BBFLAG (42 ), // Ok to add pred edge to this block, even when "safe" edge creation disabled
431
- BBF_NONE_QUIRK = MAKE_BBFLAG (43 ), // Block was created as a BBJ_ALWAYS to the next block,
417
+ BBF_HAS_CALL = MAKE_BBFLAG (29 ), // BB contains a call
418
+ BBF_DOMINATED_BY_EXCEPTIONAL_ENTRY = MAKE_BBFLAG (30 ), // Block is dominated by exceptional entry.
419
+ BBF_BACKWARD_JUMP = MAKE_BBFLAG (31 ), // BB is surrounded by a backward jump/switch arc
420
+ BBF_BACKWARD_JUMP_SOURCE = MAKE_BBFLAG (32 ), // Block is a source of a backward jump
421
+ BBF_BACKWARD_JUMP_TARGET = MAKE_BBFLAG (33 ), // Block is a target of a backward jump
422
+ BBF_PATCHPOINT = MAKE_BBFLAG (34 ), // Block is a patchpoint
423
+ BBF_PARTIAL_COMPILATION_PATCHPOINT = MAKE_BBFLAG (35 ), // Block is a partial compilation patchpoint
424
+ BBF_HAS_HISTOGRAM_PROFILE = MAKE_BBFLAG (36 ), // BB contains a call needing a histogram profile
425
+ BBF_TAILCALL_SUCCESSOR = MAKE_BBFLAG (37 ), // BB has pred that has potential tail call
426
+ BBF_RECURSIVE_TAILCALL = MAKE_BBFLAG (38 ), // Block has recursive tailcall that may turn into a loop
427
+ BBF_NO_CSE_IN = MAKE_BBFLAG (39 ), // Block should kill off any incoming CSE
428
+ BBF_CAN_ADD_PRED = MAKE_BBFLAG (40 ), // Ok to add pred edge to this block, even when "safe" edge creation disabled
429
+ BBF_NONE_QUIRK = MAKE_BBFLAG (41 ), // Block was created as a BBJ_ALWAYS to the next block,
432
430
// and should be treated as if it falls through.
433
431
// This is just to reduce diffs from removing BBJ_NONE.
434
432
// (TODO: Remove this quirk after refactoring Compiler::fgFindInsertPoint)
@@ -437,7 +435,7 @@ enum BasicBlockFlags : unsigned __int64
437
435
438
436
// Flags that relate blocks to loop structure.
439
437
440
- BBF_LOOP_FLAGS = BBF_LOOP_PREHEADER | BBF_LOOP_HEAD | BBF_LOOP_CALL0 | BBF_LOOP_CALL1 | BBF_LOOP_ALIGN,
438
+ BBF_LOOP_FLAGS = BBF_LOOP_PREHEADER | BBF_LOOP_HEAD | BBF_LOOP_ALIGN,
441
439
442
440
// Flags to update when two blocks are compacted
443
441
@@ -446,7 +444,7 @@ enum BasicBlockFlags : unsigned __int64
446
444
447
445
// Flags a block should not have had before it is split.
448
446
449
- BBF_SPLIT_NONEXIST = BBF_LOOP_HEAD | BBF_LOOP_CALL0 | BBF_LOOP_CALL1 | BBF_RETLESS_CALL | BBF_LOOP_PREHEADER | BBF_COLD,
447
+ BBF_SPLIT_NONEXIST = BBF_LOOP_HEAD | BBF_RETLESS_CALL | BBF_LOOP_PREHEADER | BBF_COLD,
450
448
451
449
// Flags lost by the top block when a block is split.
452
450
// Note, this is a conservative guess.
0 commit comments