https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94767
jh718.park at samsung dot com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|WAITING |RESOLVED Resolution|--- |INVALID --- Comment #4 from jh718.park at samsung dot com --- (In reply to Jonathan Wakely from comment #3) > (In reply to jh718.park from comment #0) > > For these variables below, > > > > unsigned m_schemeEnd : 26; > > unsigned m_userStart; > > > > m_userStart == m_schemeEnd + 1 > > > > this comparison emits a compiler warning as below. > > > > warning: comparison of integer expressions of different signedness: > > ‘unsigned int’ and ‘int’ [-Wsign-compare] > > Why do you think that's wrong? > > In [conv.prom] p5 the standard says: > > "A prvalue for an integral bit-field (11.4.9) can be converted to a prvalue > of type int if int can represent all the values of the bit-field;" > > Since int is wider than 26 bits it can represent all the values of > m_schemeEnd, so the operands of 'm_schemeEnd + 1' are both promoted to int, > and the result is an int. Thank you for your comment, Jonathan. I understand your point. I thought that unsigned bitfield should be converted to unsigned during usual arithmetic conversions without knowing the item, http://eel.is/c++draft/conv.prom#5. Then, I will mark this issue as resolved/invalid, and update the bug https://bugs.webkit.org/show_bug.cgi?id=211044 with the comment you left here. Thank you for your help:)