From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16989 invoked by alias); 20 Dec 2004 17:15:02 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 16763 invoked by uid 48); 20 Dec 2004 17:14:46 -0000 Date: Mon, 20 Dec 2004 17:15:00 -0000 Message-ID: <20041220171446.16762.qmail@sourceware.org> From: "bangerth at dealii dot org" To: gcc-bugs@gcc.gnu.org In-Reply-To: <20040922190625.17617.kazu@cs.umass.edu> References: <20040922190625.17617.kazu@cs.umass.edu> Reply-To: gcc-bugzilla@gcc.gnu.org Subject: [Bug tree-optimization/17617] Micro-optimize INTEGRAL_TYPE_P (or tree.def rather) X-Bugzilla-Reason: CC X-SW-Source: 2004-12/txt/msg02911.txt.bz2 List-Id: ------- 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