[PATCH] Remove unnecessary "& 1" in year_month_day_last::day()

Marc Glisse marc.glisse@inria.fr
Sun Nov 5 15:58:01 GMT 2023


On Sun, 5 Nov 2023, Cassio Neri wrote:

> When year_month_day_last::day() was implemented, Dr. Matthias Kretz realised
> that the operation "& 1" wasn't necessary but we did not patch it at that
> time. This patch removes the unnecessary operation.

Is there an entry in gcc's bugzilla about having the optimizer handle this 
kind of optimization?

unsigned f(unsigned x){
   if(x>=32)__builtin_unreachable();
   return 30|(x&1); // --> 30|x
}

(that optimization would come in addition to your patch, doing the 
optimization by hand is still a good idea)

It looks like the criterion would be a|(b&c) when the possible 1 bits of b 
are included in the certainly 1 bits of a|c.

-- 
Marc Glisse


More information about the Libstdc++ mailing list