Exemplo n.º 1
0
void
Bookkeeper::record_type_with_bitfields(const Type *typ)
{
	if (!typ->is_aggregate()) return;	

	if (typ->has_bitfields()) {
		Bookkeeper::structs_with_bitfields++;
		size_t len = typ->bitfields_length_.size();
		assert(len == typ->fields.size());
		for (size_t i = 0; i < len; ++i) {
			if (!typ->is_bitfield(i)) 
				continue;

			Bookkeeper::bitfields_in_total++;
			if (typ->bitfields_length_[i] == 0)
				Bookkeeper::unamed_bitfields_in_total++;

			CVQualifiers qual = typ->qfers_[i];
			if (qual.is_const())
				Bookkeeper::const_bitfields_in_total++;
			if (qual.is_volatile())
				Bookkeeper::volatile_bitfields_in_total++;
		}
	}
}