https://gcc.gnu.org/bugzilla/show_bug.cgi?id=14840
--- Comment #15 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Looking at the -fdump-tree-optimized for generic-match.cc (-O2 -g) in terms of lines, we get: 832068 before 718872 after That is 17% less lines. That is nice improvments. Majority is debugging info for arguments which are no longer used any more. A good example is: # DEBUG BEGIN_STMT - # DEBUG __t => _39 - # DEBUG __f => "generic-match.cc" - # DEBUG __l => 8705 - # DEBUG __g => "generic_simplify_127" - # DEBUG INLINE_ENTRY non_type_check - # DEBUG BEGIN_STMT - _273 = tree_code_type[26]; - if (_273 == 2) - goto <bb 38>; [0.00%] - else - goto <bb 39>; [100.00%] - - <bb 38> [count: 0]: - # DEBUG BEGIN_STMT - tree_not_class_check_failed (_39, 2, "generic-match.cc", 8705, "generic_simplify_127"); - - <bb 39> [local count: 104528766]: - # DEBUG BEGIN_STMT - # DEBUG __t => NULL - # DEBUG __f => NULL - # DEBUG __l => NULL - # DEBUG __g => NULL _43 = BIT_FIELD_REF <_39->base, 8, 16>; and you can see constant folding is there and removes the comparison. I think 26 is INTEGER_CST even.