------- Additional Comments From bangerth at dealii dot org 2004-12-20 17:14
-------
The question raised in several of the messages in that discussion
is whether an enumeration of equality checks is converted into a
range check if the tested values are consecutive.
Here is the answer:
--------------------
enum E
{
eins = 1,
zwei = 2,
drei = 3,
vier = 4,
fuenf= 5,
sechs= 6
};
bool test_range (E e)
{
return e==drei || e==vier || e==fuenf;
}
------------------------
This is indeed compiled into a range check:
_Z10test_range1E:
pushl %ebp
movl %esp, %ebp
movl 8(%ebp), %eax
popl %ebp
subl $3, %eax
cmpl $2, %eax
setbe %al
movzbl %al, %eax
ret
W.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17617