⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 conditions.h

📁 这是完整的gcc源代码
💻 H
字号:
/* Definitions for condition code handling in final.c and output routines.   Copyright (C) 1987 Free Software Foundation, Inc.This file is part of GNU CC.GNU CC is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 1, or (at your option)any later version.GNU CC is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with GNU CC; see the file COPYING.  If not, write tothe Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  *//* The variable cc_status says how to interpret the condition code.   It is set by output routines for an instruction that sets the cc's   and examined by output routines for jump instructions.   cc_status contains two components named `value1' and `value2'   that record two equivalent expressions for the values that the   condition codes were set from.  (Either or both may be null if   there is no useful expression to record.)  These fields are   used for eliminating redundant test and compare instructions   in the cases where the condition codes were already set by the   previous instruction.   cc_status.flags contains flags which say that the condition codes   were set in a nonstandard manner.  The output of jump instructions   uses these flags to compensate and produce the standard result   with the nonstandard condition codes.  Standard flags are defined here.   The tm- file can also define other machine-dependent flags.   cc_status also contains a machine-dependent component `mdep'   whose type, `CC_STATUS_MDEP', may be defined as a macro in the   tm- file.  */#ifndef CC_STATUS_MDEP#define CC_STATUS_MDEP int#endif#ifndef CC_STATUS_MDEP_INIT#define CC_STATUS_MDEP_INIT 0#endiftypedef struct {int flags; rtx value1, value2; CC_STATUS_MDEP mdep;} CC_STATUS;/* While outputting an insn as assembler code,   this is the status BEFORE that insn.  */extern CC_STATUS cc_prev_status;/* While outputting an insn as assembler code,   this is being altered to the status AFTER that insn.  */extern CC_STATUS cc_status;/* These are the machine-independent flags:  *//* Set if the sign of the cc value is inverted:   output a following jump-if-less as a jump-if-greater, etc.  */#define CC_REVERSED 1/* This bit means that the current setting of the N bit is bogus   and conditional jumps should use the Z bit in its place.   This state obtains when an extraction of a signed single-bit field   or an arithmetic shift right of a byte by 7 bits   is turned into a btst, because btst does not set the N bit.  */#define CC_NOT_POSITIVE 2/* This bit means that the current setting of the N bit is bogus   and conditional jumps should pretend that the N bit is clear.   Used after extraction of an unsigned bit   or logical shift right of a byte by 7 bits is turned into a btst.   The btst does not alter the N bit, but the result of that shift   or extract is never negative.  */#define CC_NOT_NEGATIVE 4/* This bit means that the current setting of the overflow flag   is bogus and conditional jumps should pretend there is no overflow.  */#define CC_NO_OVERFLOW 010/* This bit means that what ought to be in the Z bit   should be tested as the complement of the N bit.  */#define CC_Z_IN_NOT_N 020/* This bit means that what ought to be in the Z bit   should be tested as the N bit.  */#define CC_Z_IN_N 040/* This is how to initialize the variable cc_status.   final does this at appropriate moments.  */#define CC_STATUS_INIT  \ (cc_status.flags = 0, cc_status.value1 = 0, cc_status.value2 = 0,  \  CC_STATUS_MDEP_INIT)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -