Thanks for using Compiler Explorer
Sponsors
Jakt
C++
Ada
Analysis
Android Java
Android Kotlin
Assembly
C
C3
Carbon
C++ (Circle)
CIRCT
Clean
CMake
CMakeScript
COBOL
C++ for OpenCL
MLIR
Cppx
Cppx-Blue
Cppx-Gold
Cpp2-cppfront
Crystal
C#
CUDA C++
D
Dart
Elixir
Erlang
Fortran
F#
GLSL
Go
Haskell
HLSL
Hook
Hylo
IL
ispc
Java
Julia
Kotlin
LLVM IR
LLVM MIR
Modula-2
Nim
Objective-C
Objective-C++
OCaml
OpenCL C
Pascal
Pony
Python
Racket
Ruby
Rust
Snowball
Scala
Solidity
Spice
Swift
LLVM TableGen
Toit
TypeScript Native
V
Vala
Visual Basic
WASM
Zig
Javascript
GIMPLE
c source #1
Output
Compile to binary object
Link to binary
Execute the code
Intel asm syntax
Demangle identifiers
Verbose demangling
Filters
Unused labels
Library functions
Directives
Comments
Horizontal whitespace
Debug intrinsics
Compiler
6502 cc65 2.17
6502 cc65 2.18
6502 cc65 2.19
6502 cc65 trunk
ARM GCC 10.2.0 (linux)
ARM GCC 10.2.1 (none)
ARM GCC 10.3.0 (linux)
ARM GCC 10.3.1 (2021.07 none)
ARM GCC 10.3.1 (2021.10 none)
ARM GCC 10.5.0
ARM GCC 11.1.0 (linux)
ARM GCC 11.2.0 (linux)
ARM GCC 11.2.1 (none)
ARM GCC 11.3.0 (linux)
ARM GCC 11.4.0
ARM GCC 12.1.0 (linux)
ARM GCC 12.2.0 (linux)
ARM GCC 12.3.0
ARM GCC 12.4.0
ARM GCC 13.1.0 (linux)
ARM GCC 13.2.0
ARM GCC 13.2.0 (unknown-eabi)
ARM GCC 13.3.0
ARM GCC 13.3.0 (unknown-eabi)
ARM GCC 14.1.0
ARM GCC 14.1.0 (unknown-eabi)
ARM GCC 14.2.0
ARM GCC 14.2.0 (unknown-eabi)
ARM GCC 4.5.4 (linux)
ARM GCC 4.6.4 (linux)
ARM GCC 5.4 (linux)
ARM GCC 5.4.1 (none)
ARM GCC 6.3.0 (linux)
ARM GCC 6.4.0 (linux)
ARM GCC 7.2.1 (none)
ARM GCC 7.3.0 (linux)
ARM GCC 7.5.0 (linux)
ARM GCC 8.2.0 (WinCE)
ARM GCC 8.2.0 (linux)
ARM GCC 8.3.1 (none)
ARM GCC 8.5.0 (linux)
ARM GCC 9.2.1 (none)
ARM GCC 9.3.0 (linux)
ARM GCC trunk (linux)
ARM msvc v19.0 (WINE)
ARM msvc v19.10 (WINE)
ARM msvc v19.14 (WINE)
ARM64 GCC 10.2.0
ARM64 GCC 10.3.0
ARM64 GCC 10.4.0
ARM64 GCC 10.5.0
ARM64 GCC 11.1.0
ARM64 GCC 11.2.0
ARM64 GCC 11.3.0
ARM64 GCC 11.4.0
ARM64 GCC 12.1.0
ARM64 GCC 12.2.0
ARM64 GCC 12.3.0
ARM64 GCC 12.4.0
ARM64 GCC 13.1.0
ARM64 GCC 13.2.0
ARM64 GCC 13.3.0
ARM64 GCC 14.1.0
ARM64 GCC 14.2.0
ARM64 GCC 4.9.4
ARM64 GCC 5.4
ARM64 GCC 5.5.0
ARM64 GCC 6.3
ARM64 GCC 6.4.0
ARM64 GCC 7.3.0
ARM64 GCC 7.5.0
ARM64 GCC 8.2.0
ARM64 GCC 8.5.0
ARM64 GCC 9.3.0
ARM64 GCC 9.4.0
ARM64 GCC 9.5.0
ARM64 GCC trunk
ARM64 Morello GCC 10.1.0 Alpha 1
ARM64 Morello GCC 10.1.2 Alpha 2
ARM64 msvc v19.14 (WINE)
AVR gcc 10.3.0
AVR gcc 11.1.0
AVR gcc 12.1.0
AVR gcc 12.2.0
AVR gcc 12.3.0
AVR gcc 12.4.0
AVR gcc 13.1.0
AVR gcc 13.2.0
AVR gcc 13.3.0
AVR gcc 14.1.0
AVR gcc 14.2.0
AVR gcc 4.5.4
AVR gcc 4.6.4
AVR gcc 5.4.0
AVR gcc 9.2.0
AVR gcc 9.3.0
Arduino Mega (1.8.9)
Arduino Uno (1.8.9)
BPF clang (trunk)
BPF clang 13.0.0
BPF clang 14.0.0
BPF clang 15.0.0
BPF clang 16.0.0
BPF clang 17.0.1
BPF clang 18.1.0
BPF gcc 13.1.0
BPF gcc 13.2.0
BPF gcc 13.3.0
BPF gcc 14.1.0
BPF gcc 14.2.0
BPF gcc trunk
Chibicc 2020-12-07
FRC 2019
FRC 2020
FRC 2023
HPPA gcc 14.2.0
K1C gcc 7.4
K1C gcc 7.5
KVX ACB 4.1.0 (GCC 7.5.0)
KVX ACB 4.1.0-cd1 (GCC 7.5.0)
KVX ACB 4.10.0 (GCC 10.3.1)
KVX ACB 4.11.1 (GCC 10.3.1)
KVX ACB 4.12.0 (GCC 11.3.0)
KVX ACB 4.2.0 (GCC 7.5.0)
KVX ACB 4.3.0 (GCC 7.5.0)
KVX ACB 4.4.0 (GCC 7.5.0)
KVX ACB 4.6.0 (GCC 9.4.1)
KVX ACB 4.8.0 (GCC 9.4.1)
KVX ACB 4.9.0 (GCC 9.4.1)
KVX ACB 5.0.0 (GCC 12.2.1)
LC3 (trunk)
M68K clang (trunk)
M68K gcc 13.1.0
M68K gcc 13.2.0
M68K gcc 13.3.0
M68K gcc 14.1.0
M68K gcc 14.2.0
MRISC32 gcc (trunk)
MSP430 gcc 12.1.0
MSP430 gcc 12.2.0
MSP430 gcc 12.3.0
MSP430 gcc 12.4.0
MSP430 gcc 13.1.0
MSP430 gcc 13.2.0
MSP430 gcc 13.3.0
MSP430 gcc 14.1.0
MSP430 gcc 14.2.0
MSP430 gcc 4.5.3
MSP430 gcc 5.3.0
MSP430 gcc 6.2.1
MinGW clang 14.0.3
MinGW clang 14.0.6
MinGW clang 15.0.7
MinGW clang 16.0.0
MinGW clang 16.0.2
MinGW gcc 11.3.0
MinGW gcc 12.1.0
MinGW gcc 12.2.0
MinGW gcc 13.1.0
POWER64 gcc 11.2.0
POWER64 gcc 12.1.0
POWER64 gcc 12.2.0
POWER64 gcc 12.3.0
POWER64 gcc 12.4.0
POWER64 gcc 13.1.0
POWER64 gcc 13.2.0
POWER64 gcc 13.3.0
POWER64 gcc 14.1.0
POWER64 gcc 14.2.0
POWER64 gcc trunk
RISC-V (32-bits) gcc (trunk)
RISC-V (32-bits) gcc 10.2.0
RISC-V (32-bits) gcc 10.3.0
RISC-V (32-bits) gcc 11.2.0
RISC-V (32-bits) gcc 11.3.0
RISC-V (32-bits) gcc 11.4.0
RISC-V (32-bits) gcc 12.1.0
RISC-V (32-bits) gcc 12.2.0
RISC-V (32-bits) gcc 12.3.0
RISC-V (32-bits) gcc 12.4.0
RISC-V (32-bits) gcc 13.1.0
RISC-V (32-bits) gcc 13.2.0
RISC-V (32-bits) gcc 13.3.0
RISC-V (32-bits) gcc 14.1.0
RISC-V (32-bits) gcc 14.2.0
RISC-V (32-bits) gcc 8.2.0
RISC-V (32-bits) gcc 8.5.0
RISC-V (32-bits) gcc 9.4.0
RISC-V (64-bits) gcc (trunk)
RISC-V (64-bits) gcc 10.2.0
RISC-V (64-bits) gcc 10.3.0
RISC-V (64-bits) gcc 11.2.0
RISC-V (64-bits) gcc 11.3.0
RISC-V (64-bits) gcc 11.4.0
RISC-V (64-bits) gcc 12.1.0
RISC-V (64-bits) gcc 12.2.0
RISC-V (64-bits) gcc 12.3.0
RISC-V (64-bits) gcc 12.4.0
RISC-V (64-bits) gcc 13.1.0
RISC-V (64-bits) gcc 13.2.0
RISC-V (64-bits) gcc 13.3.0
RISC-V (64-bits) gcc 14.1.0
RISC-V (64-bits) gcc 14.2.0
RISC-V (64-bits) gcc 8.2.0
RISC-V (64-bits) gcc 8.5.0
RISC-V (64-bits) gcc 9.4.0
RISC-V rv32gc clang (trunk)
RISC-V rv32gc clang 10.0.0
RISC-V rv32gc clang 10.0.1
RISC-V rv32gc clang 11.0.0
RISC-V rv32gc clang 11.0.1
RISC-V rv32gc clang 12.0.0
RISC-V rv32gc clang 12.0.1
RISC-V rv32gc clang 13.0.0
RISC-V rv32gc clang 13.0.1
RISC-V rv32gc clang 14.0.0
RISC-V rv32gc clang 15.0.0
RISC-V rv32gc clang 16.0.0
RISC-V rv32gc clang 17.0.1
RISC-V rv32gc clang 18.1.0
RISC-V rv32gc clang 9.0.0
RISC-V rv32gc clang 9.0.1
RISC-V rv64gc clang (trunk)
RISC-V rv64gc clang 10.0.0
RISC-V rv64gc clang 10.0.1
RISC-V rv64gc clang 11.0.0
RISC-V rv64gc clang 11.0.1
RISC-V rv64gc clang 12.0.0
RISC-V rv64gc clang 12.0.1
RISC-V rv64gc clang 13.0.0
RISC-V rv64gc clang 13.0.1
RISC-V rv64gc clang 14.0.0
RISC-V rv64gc clang 15.0.0
RISC-V rv64gc clang 16.0.0
RISC-V rv64gc clang 17.0.1
RISC-V rv64gc clang 18.1.0
RISC-V rv64gc clang 9.0.0
RISC-V rv64gc clang 9.0.1
Raspbian Buster
Raspbian Stretch
SDCC 4.0.0
SDCC 4.1.0
SDCC 4.2.0
SDCC 4.3.0
SDCC 4.4.0
SPARC LEON gcc 12.2.0
SPARC LEON gcc 12.3.0
SPARC LEON gcc 12.4.0
SPARC LEON gcc 13.1.0
SPARC LEON gcc 13.2.0
SPARC LEON gcc 13.3.0
SPARC LEON gcc 14.1.0
SPARC LEON gcc 14.2.0
SPARC gcc 12.2.0
SPARC gcc 12.3.0
SPARC gcc 12.4.0
SPARC gcc 13.1.0
SPARC gcc 13.2.0
SPARC gcc 13.3.0
SPARC gcc 14.1.0
SPARC gcc 14.2.0
SPARC64 gcc 12.2.0
SPARC64 gcc 12.3.0
SPARC64 gcc 12.4.0
SPARC64 gcc 13.1.0
SPARC64 gcc 13.2.0
SPARC64 gcc 13.3.0
SPARC64 gcc 14.1.0
SPARC64 gcc 14.2.0
TCC (trunk)
TCC 0.9.27
TI C6x gcc 12.2.0
TI C6x gcc 12.3.0
TI C6x gcc 12.4.0
TI C6x gcc 13.1.0
TI C6x gcc 13.2.0
TI C6x gcc 13.3.0
TI C6x gcc 14.1.0
TI C6x gcc 14.2.0
TI CL430 21.6.1
VAX gcc NetBSDELF 10.4.0
VAX gcc NetBSDELF 10.5.0 (Nov 15 03:50:22 2023)
WebAssembly clang (trunk)
Xtensa ESP32 gcc 11.2.0 (2022r1)
Xtensa ESP32 gcc 12.2.0 (20230208)
Xtensa ESP32 gcc 8.2.0 (2019r2)
Xtensa ESP32 gcc 8.2.0 (2020r1)
Xtensa ESP32 gcc 8.2.0 (2020r2)
Xtensa ESP32 gcc 8.4.0 (2020r3)
Xtensa ESP32 gcc 8.4.0 (2021r1)
Xtensa ESP32 gcc 8.4.0 (2021r2)
Xtensa ESP32-S2 gcc 11.2.0 (2022r1)
Xtensa ESP32-S2 gcc 12.2.0 (20230208)
Xtensa ESP32-S2 gcc 8.2.0 (2019r2)
Xtensa ESP32-S2 gcc 8.2.0 (2020r1)
Xtensa ESP32-S2 gcc 8.2.0 (2020r2)
Xtensa ESP32-S2 gcc 8.4.0 (2020r3)
Xtensa ESP32-S2 gcc 8.4.0 (2021r1)
Xtensa ESP32-S2 gcc 8.4.0 (2021r2)
Xtensa ESP32-S3 gcc 11.2.0 (2022r1)
Xtensa ESP32-S3 gcc 12.2.0 (20230208)
Xtensa ESP32-S3 gcc 8.4.0 (2020r3)
Xtensa ESP32-S3 gcc 8.4.0 (2021r1)
Xtensa ESP32-S3 gcc 8.4.0 (2021r2)
arm64 msvc v19.20 VS16.0
arm64 msvc v19.21 VS16.1
arm64 msvc v19.22 VS16.2
arm64 msvc v19.23 VS16.3
arm64 msvc v19.24 VS16.4
arm64 msvc v19.25 VS16.5
arm64 msvc v19.27 VS16.7
arm64 msvc v19.28 VS16.8
arm64 msvc v19.28 VS16.9
arm64 msvc v19.29 VS16.10
arm64 msvc v19.29 VS16.11
arm64 msvc v19.30 VS17.0
arm64 msvc v19.31 VS17.1
arm64 msvc v19.32 VS17.2
arm64 msvc v19.33 VS17.3
arm64 msvc v19.34 VS17.4
arm64 msvc v19.35 VS17.5
arm64 msvc v19.36 VS17.6
arm64 msvc v19.37 VS17.7
arm64 msvc v19.38 VS17.8
arm64 msvc v19.39 VS17.9
arm64 msvc v19.40 VS17.10
arm64 msvc v19.latest
armv7-a clang (trunk)
armv7-a clang 10.0.0
armv7-a clang 10.0.1
armv7-a clang 11.0.0
armv7-a clang 11.0.1
armv7-a clang 12.0.0
armv7-a clang 12.0.1
armv7-a clang 13.0.0
armv7-a clang 13.0.1
armv7-a clang 14.0.0
armv7-a clang 15.0.0
armv7-a clang 16.0.0
armv7-a clang 17.0.1
armv7-a clang 18.1.0
armv7-a clang 9.0.0
armv7-a clang 9.0.1
armv8-a clang (all architectural features, trunk)
armv8-a clang (trunk)
armv8-a clang 10.0.0
armv8-a clang 10.0.1
armv8-a clang 11.0.0
armv8-a clang 11.0.1
armv8-a clang 12.0.0
armv8-a clang 12.0.1
armv8-a clang 13.0.0
armv8-a clang 13.0.1
armv8-a clang 14.0.0
armv8-a clang 15.0.0
armv8-a clang 16.0.0
armv8-a clang 17.0.1
armv8-a clang 18.1.0
armv8-a clang 9.0.0
armv8-a clang 9.0.1
clang 12 for DPU (rel 2023.2.0)
cproc-master
llvm-mos commander X16
llvm-mos commodore 64
llvm-mos mega65
llvm-mos nes-cnrom
llvm-mos nes-mmc1
llvm-mos nes-mmc3
llvm-mos nes-nrom
llvm-mos osi-c1p
loongarch64 gcc 12.2.0
loongarch64 gcc 12.3.0
loongarch64 gcc 12.4.0
loongarch64 gcc 13.1.0
loongarch64 gcc 13.2.0
loongarch64 gcc 13.3.0
loongarch64 gcc 14.1.0
loongarch64 gcc 14.2.0
mips (el) gcc 12.1.0
mips (el) gcc 12.2.0
mips (el) gcc 12.3.0
mips (el) gcc 12.4.0
mips (el) gcc 13.1.0
mips (el) gcc 13.2.0
mips (el) gcc 13.3.0
mips (el) gcc 14.1.0
mips (el) gcc 14.2.0
mips (el) gcc 4.9.4
mips (el) gcc 5.4
mips (el) gcc 5.5.0
mips (el) gcc 9.5.0
mips clang 13.0.0
mips clang 14.0.0
mips clang 15.0.0
mips clang 16.0.0
mips clang 17.0.1
mips clang 18.1.0
mips gcc 11.2.0
mips gcc 12.1.0
mips gcc 12.2.0
mips gcc 12.3.0
mips gcc 12.4.0
mips gcc 13.1.0
mips gcc 13.2.0
mips gcc 13.3.0
mips gcc 14.1.0
mips gcc 14.2.0
mips gcc 4.9.4
mips gcc 5.4
mips gcc 5.5.0
mips gcc 9.3.0 (codescape)
mips gcc 9.5.0
mips64 (el) gcc 12.1.0
mips64 (el) gcc 12.2.0
mips64 (el) gcc 12.3.0
mips64 (el) gcc 12.4.0
mips64 (el) gcc 13.1.0
mips64 (el) gcc 13.2.0
mips64 (el) gcc 13.3.0
mips64 (el) gcc 14.1.0
mips64 (el) gcc 14.2.0
mips64 (el) gcc 4.9.4
mips64 (el) gcc 5.4.0
mips64 (el) gcc 5.5.0
mips64 (el) gcc 9.5.0
mips64 clang 13.0.0
mips64 clang 14.0.0
mips64 clang 15.0.0
mips64 clang 16.0.0
mips64 clang 17.0.1
mips64 clang 18.1.0
mips64 gcc 11.2.0
mips64 gcc 12.1.0
mips64 gcc 12.2.0
mips64 gcc 12.3.0
mips64 gcc 12.4.0
mips64 gcc 13.1.0
mips64 gcc 13.2.0
mips64 gcc 13.3.0
mips64 gcc 14.1.0
mips64 gcc 14.2.0
mips64 gcc 4.9.4
mips64 gcc 5.4
mips64 gcc 5.5.0
mips64 gcc 9.5.0
mips64el clang 13.0.0
mips64el clang 14.0.0
mips64el clang 15.0.0
mips64el clang 16.0.0
mips64el clang 17.0.1
mips64el clang 18.1.0
mipsel clang 13.0.0
mipsel clang 14.0.0
mipsel clang 15.0.0
mipsel clang 16.0.0
mipsel clang 17.0.1
mipsel clang 18.1.0
movfuscator (trunk)
nanoMIPS gcc 6.3.0
power gcc 11.2.0
power gcc 12.1.0
power gcc 12.2.0
power gcc 12.3.0
power gcc 12.4.0
power gcc 13.1.0
power gcc 13.2.0
power gcc 13.3.0
power gcc 14.1.0
power gcc 14.2.0
power gcc 4.8.5
power64 AT12.0 (gcc8)
power64 AT13.0 (gcc9)
power64le AT12.0 (gcc8)
power64le AT13.0 (gcc9)
power64le clang (trunk)
power64le gcc 11.2.0
power64le gcc 12.1.0
power64le gcc 12.2.0
power64le gcc 12.3.0
power64le gcc 12.4.0
power64le gcc 13.1.0
power64le gcc 13.2.0
power64le gcc 13.3.0
power64le gcc 14.1.0
power64le gcc 14.2.0
power64le gcc 6.3.0
power64le gcc trunk
powerpc64 clang (trunk)
ppci 0.5.5
s390x gcc 11.2.0
s390x gcc 12.1.0
s390x gcc 12.2.0
s390x gcc 12.3.0
s390x gcc 12.4.0
s390x gcc 13.1.0
s390x gcc 13.2.0
s390x gcc 13.3.0
s390x gcc 14.1.0
s390x gcc 14.2.0
sh gcc 12.2.0
sh gcc 12.3.0
sh gcc 12.4.0
sh gcc 13.1.0
sh gcc 13.2.0
sh gcc 13.3.0
sh gcc 14.1.0
sh gcc 14.2.0
sh gcc 4.9.4
sh gcc 9.5.0
vast (trunk)
x64 msvc v19.0 (WINE)
x64 msvc v19.10 (WINE)
x64 msvc v19.14 (WINE)
x64 msvc v19.20 VS16.0
x64 msvc v19.21 VS16.1
x64 msvc v19.22 VS16.2
x64 msvc v19.23 VS16.3
x64 msvc v19.24 VS16.4
x64 msvc v19.25 VS16.5
x64 msvc v19.27 VS16.7
x64 msvc v19.28 VS16.8
x64 msvc v19.28 VS16.9
x64 msvc v19.29 VS16.10
x64 msvc v19.29 VS16.11
x64 msvc v19.30 VS17.0
x64 msvc v19.31 VS17.1
x64 msvc v19.32 VS17.2
x64 msvc v19.33 VS17.3
x64 msvc v19.34 VS17.4
x64 msvc v19.35 VS17.5
x64 msvc v19.36 VS17.6
x64 msvc v19.37 VS17.7
x64 msvc v19.38 VS17.8
x64 msvc v19.39 VS17.9
x64 msvc v19.40 VS17.10
x64 msvc v19.latest
x86 CompCert 3.10
x86 CompCert 3.11
x86 CompCert 3.12
x86 CompCert 3.9
x86 gcc 1.27
x86 msvc v19.0 (WINE)
x86 msvc v19.10 (WINE)
x86 msvc v19.14 (WINE)
x86 msvc v19.20 VS16.0
x86 msvc v19.21 VS16.1
x86 msvc v19.22 VS16.2
x86 msvc v19.23 VS16.3
x86 msvc v19.24 VS16.4
x86 msvc v19.25 VS16.5
x86 msvc v19.27 VS16.7
x86 msvc v19.28 VS16.8
x86 msvc v19.28 VS16.9
x86 msvc v19.29 VS16.10
x86 msvc v19.29 VS16.11
x86 msvc v19.30 VS17.0
x86 msvc v19.31 VS17.1
x86 msvc v19.32 VS17.2
x86 msvc v19.33 VS17.3
x86 msvc v19.34 VS17.4
x86 msvc v19.35 VS17.5
x86 msvc v19.36 VS17.6
x86 msvc v19.37 VS17.7
x86 msvc v19.38 VS17.8
x86 msvc v19.39 VS17.9
x86 msvc v19.40 VS17.10
x86 msvc v19.latest
x86 tendra (trunk)
x86-64 clang (assertions trunk)
x86-64 clang (thephd.dev)
x86-64 clang (trunk)
x86-64 clang (widberg)
x86-64 clang 10.0.0
x86-64 clang 10.0.1
x86-64 clang 11.0.0
x86-64 clang 11.0.1
x86-64 clang 12.0.0
x86-64 clang 12.0.1
x86-64 clang 13.0.0
x86-64 clang 13.0.1
x86-64 clang 14.0.0
x86-64 clang 15.0.0
x86-64 clang 16.0.0
x86-64 clang 17.0.1
x86-64 clang 18.1.0
x86-64 clang 19.1.0
x86-64 clang 3.0.0
x86-64 clang 3.1
x86-64 clang 3.2
x86-64 clang 3.3
x86-64 clang 3.4.1
x86-64 clang 3.5
x86-64 clang 3.5.1
x86-64 clang 3.5.2
x86-64 clang 3.6
x86-64 clang 3.7
x86-64 clang 3.7.1
x86-64 clang 3.8
x86-64 clang 3.8.1
x86-64 clang 3.9.0
x86-64 clang 3.9.1
x86-64 clang 4.0.0
x86-64 clang 4.0.1
x86-64 clang 5.0.0
x86-64 clang 5.0.1
x86-64 clang 5.0.2
x86-64 clang 6.0.0
x86-64 clang 6.0.1
x86-64 clang 7.0.0
x86-64 clang 7.0.1
x86-64 clang 7.1.0
x86-64 clang 8.0.0
x86-64 clang 8.0.1
x86-64 clang 9.0.0
x86-64 clang 9.0.1
x86-64 gcc (trunk)
x86-64 gcc 10.1
x86-64 gcc 10.2
x86-64 gcc 10.3
x86-64 gcc 10.4
x86-64 gcc 10.5
x86-64 gcc 11.1
x86-64 gcc 11.2
x86-64 gcc 11.3
x86-64 gcc 11.4
x86-64 gcc 12.1
x86-64 gcc 12.2
x86-64 gcc 12.3
x86-64 gcc 12.4
x86-64 gcc 13.1
x86-64 gcc 13.2
x86-64 gcc 13.3
x86-64 gcc 14.1
x86-64 gcc 14.2
x86-64 gcc 3.4.6
x86-64 gcc 4.0.4
x86-64 gcc 4.1.2
x86-64 gcc 4.4.7
x86-64 gcc 4.5.3
x86-64 gcc 4.6.4
x86-64 gcc 4.7.1
x86-64 gcc 4.7.2
x86-64 gcc 4.7.3
x86-64 gcc 4.7.4
x86-64 gcc 4.8.1
x86-64 gcc 4.8.2
x86-64 gcc 4.8.3
x86-64 gcc 4.8.4
x86-64 gcc 4.8.5
x86-64 gcc 4.9.0
x86-64 gcc 4.9.1
x86-64 gcc 4.9.2
x86-64 gcc 4.9.3
x86-64 gcc 4.9.4
x86-64 gcc 5.1
x86-64 gcc 5.2
x86-64 gcc 5.3
x86-64 gcc 5.4
x86-64 gcc 6.1
x86-64 gcc 6.2
x86-64 gcc 6.3
x86-64 gcc 6.5
x86-64 gcc 7.1
x86-64 gcc 7.2
x86-64 gcc 7.3
x86-64 gcc 7.4
x86-64 gcc 7.5
x86-64 gcc 8.1
x86-64 gcc 8.2
x86-64 gcc 8.3
x86-64 gcc 8.4
x86-64 gcc 8.5
x86-64 gcc 9.1
x86-64 gcc 9.2
x86-64 gcc 9.3
x86-64 gcc 9.4
x86-64 gcc 9.5
x86-64 icc 13.0.1
x86-64 icc 16.0.3
x86-64 icc 17.0.0
x86-64 icc 18.0.0
x86-64 icc 19.0.0
x86-64 icc 19.0.1
x86-64 icc 2021.1.2
x86-64 icc 2021.10.0
x86-64 icc 2021.2.0
x86-64 icc 2021.3.0
x86-64 icc 2021.4.0
x86-64 icc 2021.5.0
x86-64 icc 2021.6.0
x86-64 icc 2021.7.0
x86-64 icc 2021.7.1
x86-64 icc 2021.8.0
x86-64 icc 2021.9.0
x86-64 icx (latest)
x86-64 icx 2021.1.2
x86-64 icx 2021.2.0
x86-64 icx 2021.3.0
x86-64 icx 2021.4.0
x86-64 icx 2022.0.0
x86-64 icx 2022.1.0
x86-64 icx 2022.2.0
x86-64 icx 2022.2.1
x86-64 icx 2023.0.0
x86-64 icx 2023.1.0
x86-64 icx 2024.0.0
x86_64 CompCert 3.10
x86_64 CompCert 3.11
x86_64 CompCert 3.12
x86_64 CompCert 3.9
z88dk 2.2
zig cc 0.10.0
zig cc 0.11.0
zig cc 0.12.0
zig cc 0.12.1
zig cc 0.13.0
zig cc 0.6.0
zig cc 0.7.0
zig cc 0.7.1
zig cc 0.8.0
zig cc 0.9.0
zig cc trunk
Options
Source code
typedef __builtin_va_list __gnuc_va_list; typedef __gnuc_va_list va_list; typedef int ptrdiff_t; typedef unsigned int size_t; typedef long int wchar_t; typedef unsigned char __u_char; typedef unsigned short int __u_short; typedef unsigned int __u_int; typedef unsigned long int __u_long; typedef signed char __int8_t; typedef unsigned char __uint8_t; typedef signed short int __int16_t; typedef unsigned short int __uint16_t; typedef signed int __int32_t; typedef unsigned int __uint32_t; __extension__ typedef signed long long int __int64_t; __extension__ typedef unsigned long long int __uint64_t; __extension__ typedef long long int __quad_t; __extension__ typedef unsigned long long int __u_quad_t; typedef unsigned long long int __dev_t; typedef unsigned int __uid_t; typedef unsigned int __gid_t; typedef unsigned long int __ino_t; typedef unsigned long long int __ino64_t; typedef unsigned int __mode_t; typedef unsigned int __nlink_t; typedef long int __off_t; typedef long long int __off64_t; typedef int __pid_t; typedef struct { int __val[2]; } __fsid_t; typedef long int __clock_t; typedef unsigned long int __rlim_t; typedef unsigned long long int __rlim64_t; typedef unsigned int __id_t; typedef long int __time_t; typedef unsigned int __useconds_t; typedef long int __suseconds_t; typedef int __daddr_t; typedef long int __swblk_t; typedef int __key_t; typedef int __clockid_t; typedef int __timer_t; typedef long int __blksize_t; typedef long int __blkcnt_t; typedef long long int __blkcnt64_t; typedef unsigned long int __fsblkcnt_t; typedef unsigned long long int __fsblkcnt64_t; typedef unsigned long int __fsfilcnt_t; typedef unsigned long long int __fsfilcnt64_t; typedef int __ssize_t; typedef __off64_t __loff_t; typedef __quad_t *__qaddr_t; typedef char *__caddr_t; typedef int __intptr_t; typedef unsigned int __socklen_t; typedef struct _IO_FILE FILE; typedef struct _IO_FILE __FILE; typedef unsigned int wint_t; typedef struct { int __count; union { wint_t __wch; char __wchb[4]; } __value; } __mbstate_t; typedef struct { __off_t __pos; __mbstate_t __state; } _G_fpos_t; typedef struct { __off64_t __pos; __mbstate_t __state; } _G_fpos64_t; enum { __GCONV_OK = 0, __GCONV_NOCONV, __GCONV_NODB, __GCONV_NOMEM, __GCONV_EMPTY_INPUT, __GCONV_FULL_OUTPUT, __GCONV_ILLEGAL_INPUT, __GCONV_INCOMPLETE_INPUT, __GCONV_ILLEGAL_DESCRIPTOR, __GCONV_INTERNAL_ERROR }; enum { __GCONV_IS_LAST = 0x0001, __GCONV_IGNORE_ERRORS = 0x0002 }; struct __gconv_step; struct __gconv_step_data; struct __gconv_loaded_object; struct __gconv_trans_data; typedef int (*__gconv_fct) (struct __gconv_step *, struct __gconv_step_data *, __const unsigned char **, __const unsigned char *, unsigned char **, size_t *, int, int); typedef wint_t (*__gconv_btowc_fct) (struct __gconv_step *, unsigned char); typedef int (*__gconv_init_fct) (struct __gconv_step *); typedef void (*__gconv_end_fct) (struct __gconv_step *); typedef int (*__gconv_trans_fct) (struct __gconv_step *, struct __gconv_step_data *, void *, __const unsigned char *, __const unsigned char **, __const unsigned char *, unsigned char **, size_t *); typedef int (*__gconv_trans_context_fct) (void *, __const unsigned char *, __const unsigned char *, unsigned char *, unsigned char *); typedef int (*__gconv_trans_query_fct) (__const char *, __const char ***, size_t *); typedef int (*__gconv_trans_init_fct) (void **, const char *); typedef void (*__gconv_trans_end_fct) (void *); struct __gconv_trans_data { __gconv_trans_fct __trans_fct; __gconv_trans_context_fct __trans_context_fct; __gconv_trans_end_fct __trans_end_fct; void *__data; struct __gconv_trans_data *__next; }; struct __gconv_step { struct __gconv_loaded_object *__shlib_handle; __const char *__modname; int __counter; char *__from_name; char *__to_name; __gconv_fct __fct; __gconv_btowc_fct __btowc_fct; __gconv_init_fct __init_fct; __gconv_end_fct __end_fct; int __min_needed_from; int __max_needed_from; int __min_needed_to; int __max_needed_to; int __stateful; void *__data; }; struct __gconv_step_data { unsigned char *__outbuf; unsigned char *__outbufend; int __flags; int __invocation_counter; int __internal_use; __mbstate_t *__statep; __mbstate_t __state; struct __gconv_trans_data *__trans; }; typedef struct __gconv_info { size_t __nsteps; struct __gconv_step *__steps; __extension__ struct __gconv_step_data __data []; } *__gconv_t; typedef union { struct __gconv_info __cd; struct { struct __gconv_info __cd; struct __gconv_step_data __data; } __combined; } _G_iconv_t; typedef int _G_int16_t __attribute__ ((__mode__ (__HI__))); typedef int _G_int32_t __attribute__ ((__mode__ (__SI__))); typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__))); typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__))); struct _IO_jump_t; struct _IO_FILE; typedef void _IO_lock_t; struct _IO_marker { struct _IO_marker *_next; struct _IO_FILE *_sbuf; int _pos; }; enum __codecvt_result { __codecvt_ok, __codecvt_partial, __codecvt_error, __codecvt_noconv }; struct _IO_FILE { int _flags; char* _IO_read_ptr; char* _IO_read_end; char* _IO_read_base; char* _IO_write_base; char* _IO_write_ptr; char* _IO_write_end; char* _IO_buf_base; char* _IO_buf_end; char *_IO_save_base; char *_IO_backup_base; char *_IO_save_end; struct _IO_marker *_markers; struct _IO_FILE *_chain; int _fileno; int _flags2; __off_t _old_offset; unsigned short _cur_column; signed char _vtable_offset; char _shortbuf[1]; _IO_lock_t *_lock; __off64_t _offset; void *__pad1; void *__pad2; int _mode; char _unused2[15 * sizeof (int) - 2 * sizeof (void *)]; }; typedef struct _IO_FILE _IO_FILE; struct _IO_FILE_plus; extern struct _IO_FILE_plus _IO_2_1_stdin_; extern struct _IO_FILE_plus _IO_2_1_stdout_; extern struct _IO_FILE_plus _IO_2_1_stderr_; typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes); typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf, size_t __n); typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w); typedef int __io_close_fn (void *__cookie); typedef __io_read_fn cookie_read_function_t; typedef __io_write_fn cookie_write_function_t; typedef __io_seek_fn cookie_seek_function_t; typedef __io_close_fn cookie_close_function_t; typedef struct { __io_read_fn *read; __io_write_fn *write; __io_seek_fn *seek; __io_close_fn *close; } _IO_cookie_io_functions_t; typedef _IO_cookie_io_functions_t cookie_io_functions_t; struct _IO_cookie_file; extern void _IO_cookie_init (struct _IO_cookie_file *__cfile, int __read_write, void *__cookie, _IO_cookie_io_functions_t __fns); extern int __underflow (_IO_FILE *) ; extern int __uflow (_IO_FILE *) ; extern int __overflow (_IO_FILE *, int) ; extern wint_t __wunderflow (_IO_FILE *) ; extern wint_t __wuflow (_IO_FILE *) ; extern wint_t __woverflow (_IO_FILE *, wint_t) ; extern int _IO_getc (_IO_FILE *__fp) ; extern int _IO_putc (int __c, _IO_FILE *__fp) ; extern int _IO_feof (_IO_FILE *__fp) ; extern int _IO_ferror (_IO_FILE *__fp) ; extern int _IO_peekc_locked (_IO_FILE *__fp) ; extern void _IO_flockfile (_IO_FILE *) ; extern void _IO_funlockfile (_IO_FILE *) ; extern int _IO_ftrylockfile (_IO_FILE *) ; extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict, __gnuc_va_list, int *__restrict) ; extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict, __gnuc_va_list) ; extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t) ; extern size_t _IO_sgetn (_IO_FILE *, void *, size_t) ; extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int) ; extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int) ; extern void _IO_free_backup_area (_IO_FILE *) ; typedef _G_fpos_t fpos_t; typedef _G_fpos64_t fpos64_t; extern struct _IO_FILE *stdin; extern struct _IO_FILE *stdout; extern struct _IO_FILE *stderr; extern int remove (__const char *__filename) ; extern int rename (__const char *__old, __const char *__new) ; extern FILE *tmpfile (void) ; extern char *tmpnam (char *__s) ; extern FILE *tmpfile64 (void) ; extern char *tmpnam_r (char *__s) ; extern char *tempnam (__const char *__dir, __const char *__pfx) __attribute__ ((__malloc__)); extern int fclose (FILE *__stream) ; extern int fflush (FILE *__stream) ; extern int fflush_unlocked (FILE *__stream) ; extern int fcloseall (void) ; extern FILE *fopen (__const char *__restrict __filename, __const char *__restrict __modes) ; extern FILE *freopen (__const char *__restrict __filename, __const char *__restrict __modes, FILE *__restrict __stream) ; extern FILE *fopen64 (__const char *__restrict __filename, __const char *__restrict __modes) ; extern FILE *freopen64 (__const char *__restrict __filename, __const char *__restrict __modes, FILE *__restrict __stream) ; extern FILE *fdopen (int __fd, __const char *__modes) ; extern FILE *fopencookie (void *__restrict __magic_cookie, __const char *__restrict __modes, _IO_cookie_io_functions_t __io_funcs) ; extern FILE *fmemopen (void *__s, size_t __len, __const char *__modes) ; extern FILE *open_memstream (char **__restrict __bufloc, size_t *__restrict __sizeloc) ; extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) ; extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, int __modes, size_t __n) ; extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf, size_t __size) ; extern void setlinebuf (FILE *__stream) ; extern int fprintf (FILE *__restrict __stream, __const char *__restrict __format, ...) ; extern int printf (__const char *__restrict __format, ...) ; extern int sprintf (char *__restrict __s, __const char *__restrict __format, ...) ; extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) ; extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg) ; extern int vsprintf (char *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) ; extern int snprintf (char *__restrict __s, size_t __maxlen, __const char *__restrict __format, ...) __attribute__ ((__format__ (__printf__, 3, 4))); extern int vsnprintf (char *__restrict __s, size_t __maxlen, __const char *__restrict __format, __gnuc_va_list __arg) __attribute__ ((__format__ (__printf__, 3, 0))); extern int vasprintf (char **__restrict __ptr, __const char *__restrict __f, __gnuc_va_list __arg) __attribute__ ((__format__ (__printf__, 2, 0))); extern int __asprintf (char **__restrict __ptr, __const char *__restrict __fmt, ...) __attribute__ ((__format__ (__printf__, 2, 3))); extern int asprintf (char **__restrict __ptr, __const char *__restrict __fmt, ...) __attribute__ ((__format__ (__printf__, 2, 3))); extern int vdprintf (int __fd, __const char *__restrict __fmt, __gnuc_va_list __arg) __attribute__ ((__format__ (__printf__, 2, 0))); extern int dprintf (int __fd, __const char *__restrict __fmt, ...) __attribute__ ((__format__ (__printf__, 2, 3))); extern int fscanf (FILE *__restrict __stream, __const char *__restrict __format, ...) ; extern int scanf (__const char *__restrict __format, ...) ; extern int sscanf (__const char *__restrict __s, __const char *__restrict __format, ...) ; extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) __attribute__ ((__format__ (__scanf__, 2, 0))); extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg) __attribute__ ((__format__ (__scanf__, 1, 0))); extern int vsscanf (__const char *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) __attribute__ ((__format__ (__scanf__, 2, 0))); extern int fgetc (FILE *__stream) ; extern int getc (FILE *__stream) ; extern int getchar (void) ; extern int getc_unlocked (FILE *__stream) ; extern int getchar_unlocked (void) ; extern int fgetc_unlocked (FILE *__stream) ; extern int fputc (int __c, FILE *__stream) ; extern int putc (int __c, FILE *__stream) ; extern int putchar (int __c) ; extern int fputc_unlocked (int __c, FILE *__stream) ; extern int putc_unlocked (int __c, FILE *__stream) ; extern int putchar_unlocked (int __c) ; extern int getw (FILE *__stream) ; extern int putw (int __w, FILE *__stream) ; extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream) ; extern char *gets (char *__s) ; extern char *fgets_unlocked (char *__restrict __s, int __n, FILE *__restrict __stream) ; extern __ssize_t __getdelim (char **__restrict __lineptr, size_t *__restrict __n, int __delimiter, FILE *__restrict __stream) ; extern __ssize_t getdelim (char **__restrict __lineptr, size_t *__restrict __n, int __delimiter, FILE *__restrict __stream) ; extern __ssize_t getline (char **__restrict __lineptr, size_t *__restrict __n, FILE *__restrict __stream) ; extern int fputs (__const char *__restrict __s, FILE *__restrict __stream) ; extern int puts (__const char *__s) ; extern int ungetc (int __c, FILE *__stream) ; extern size_t fread (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) ; extern size_t fwrite (__const void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __s) ; extern int fputs_unlocked (__const char *__restrict __s, FILE *__restrict __stream) ; extern size_t fread_unlocked (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) ; extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) ; extern int fseek (FILE *__stream, long int __off, int __whence) ; extern long int ftell (FILE *__stream) ; extern void rewind (FILE *__stream) ; extern int fseeko (FILE *__stream, __off_t __off, int __whence) ; extern __off_t ftello (FILE *__stream) ; extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos) ; extern int fsetpos (FILE *__stream, __const fpos_t *__pos) ; extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence) ; extern __off64_t ftello64 (FILE *__stream) ; extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos) ; extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos) ; extern void clearerr (FILE *__stream) ; extern int feof (FILE *__stream) ; extern int ferror (FILE *__stream) ; extern void clearerr_unlocked (FILE *__stream) ; extern int feof_unlocked (FILE *__stream) ; extern int ferror_unlocked (FILE *__stream) ; extern void perror (__const char *__s) ; extern int sys_nerr; extern __const char *__const sys_errlist[]; extern int _sys_nerr; extern __const char *__const _sys_errlist[]; extern int fileno (FILE *__stream) ; extern int fileno_unlocked (FILE *__stream) ; extern FILE *popen (__const char *__command, __const char *__modes) ; extern int pclose (FILE *__stream) ; extern char *ctermid (char *__s) ; extern char *cuserid (char *__s) ; struct obstack; extern int obstack_printf (struct obstack *__restrict __obstack, __const char *__restrict __format, ...) __attribute__ ((__format__ (__printf__, 2, 3))); extern int obstack_vprintf (struct obstack *__restrict __obstack, __const char *__restrict __format, __gnuc_va_list __args) __attribute__ ((__format__ (__printf__, 2, 0))); extern void flockfile (FILE *__stream) ; extern int ftrylockfile (FILE *__stream) ; extern void funlockfile (FILE *__stream) ; extern __inline int vprintf (__const char *__restrict __fmt, __gnuc_va_list __arg) { return vfprintf (stdout, __fmt, __arg); } extern __inline int getchar (void) { return _IO_getc (stdin); } extern __inline int getc_unlocked (FILE *__fp) { return ((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++); } extern __inline int getchar_unlocked (void) { return ((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++); } extern __inline int putchar (int __c) { return _IO_putc (__c, stdout); } extern __inline int fputc_unlocked (int __c, FILE *__stream) { return (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); } extern __inline int putc_unlocked (int __c, FILE *__stream) { return (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); } extern __inline int putchar_unlocked (int __c) { return (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c))); } extern __inline __ssize_t getline (char **__lineptr, size_t *__n, FILE *__stream) { return __getdelim (__lineptr, __n, '\n', __stream); } extern __inline int feof_unlocked (FILE *__stream) { return (((__stream)->_flags & 0x10) != 0); } extern __inline int ferror_unlocked (FILE *__stream) { return (((__stream)->_flags & 0x20) != 0); } enum { _sch_isblank = 0x0001, _sch_iscntrl = 0x0002, _sch_isdigit = 0x0004, _sch_islower = 0x0008, _sch_isprint = 0x0010, _sch_ispunct = 0x0020, _sch_isspace = 0x0040, _sch_isupper = 0x0080, _sch_isxdigit = 0x0100, _sch_isidst = 0x0200, _sch_isvsp = 0x0400, _sch_isnvsp = 0x0800, _sch_isalpha = _sch_isupper|_sch_islower, _sch_isalnum = _sch_isalpha|_sch_isdigit, _sch_isidnum = _sch_isidst|_sch_isdigit, _sch_isgraph = _sch_isalnum|_sch_ispunct, _sch_iscppsp = _sch_isvsp|_sch_isnvsp, _sch_isbasic = _sch_isprint|_sch_iscppsp }; extern const unsigned short _sch_istable[256]; extern const unsigned char _sch_toupper[256]; extern const unsigned char _sch_tolower[256]; typedef __u_char u_char; typedef __u_short u_short; typedef __u_int u_int; typedef __u_long u_long; typedef __quad_t quad_t; typedef __u_quad_t u_quad_t; typedef __fsid_t fsid_t; typedef __loff_t loff_t; typedef __ino_t ino_t; typedef __ino64_t ino64_t; typedef __dev_t dev_t; typedef __gid_t gid_t; typedef __mode_t mode_t; typedef __nlink_t nlink_t; typedef __uid_t uid_t; typedef __off_t off_t; typedef __off64_t off64_t; typedef __pid_t pid_t; typedef __id_t id_t; typedef __ssize_t ssize_t; typedef __daddr_t daddr_t; typedef __caddr_t caddr_t; typedef __key_t key_t; typedef __clock_t clock_t; typedef __time_t time_t; typedef __clockid_t clockid_t; typedef __timer_t timer_t; typedef __useconds_t useconds_t; typedef __suseconds_t suseconds_t; typedef unsigned long int ulong; typedef unsigned short int ushort; typedef unsigned int uint; typedef int int8_t __attribute__ ((__mode__ (__QI__))); typedef int int16_t __attribute__ ((__mode__ (__HI__))); typedef int int32_t __attribute__ ((__mode__ (__SI__))); typedef int int64_t __attribute__ ((__mode__ (__DI__))); typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__))); typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__))); typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__))); typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__))); typedef int register_t __attribute__ ((__mode__ (__word__))); typedef int __sig_atomic_t; typedef struct { unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))]; } __sigset_t; typedef __sigset_t sigset_t; struct timespec { __time_t tv_sec; long int tv_nsec; }; struct timeval { __time_t tv_sec; __suseconds_t tv_usec; }; typedef long int __fd_mask; typedef struct { __fd_mask fds_bits[1024 / (8 * sizeof (__fd_mask))]; } fd_set; typedef __fd_mask fd_mask; extern int select (int __nfds, fd_set *__restrict __readfds, fd_set *__restrict __writefds, fd_set *__restrict __exceptfds, struct timeval *__restrict __timeout) ; extern int pselect (int __nfds, fd_set *__restrict __readfds, fd_set *__restrict __writefds, fd_set *__restrict __exceptfds, const struct timespec *__restrict __timeout, const __sigset_t *__restrict __sigmask) ; typedef __blksize_t blksize_t; typedef __blkcnt_t blkcnt_t; typedef __fsblkcnt_t fsblkcnt_t; typedef __fsfilcnt_t fsfilcnt_t; typedef __blkcnt64_t blkcnt64_t; typedef __fsblkcnt64_t fsblkcnt64_t; typedef __fsfilcnt64_t fsfilcnt64_t; struct __sched_param { int __sched_priority; }; struct _pthread_fastlock { long int __status; int __spinlock; }; typedef struct _pthread_descr_struct *_pthread_descr; typedef struct __pthread_attr_s { int __detachstate; int __schedpolicy; struct __sched_param __schedparam; int __inheritsched; int __scope; size_t __guardsize; int __stackaddr_set; void *__stackaddr; size_t __stacksize; } pthread_attr_t; __extension__ typedef long long __pthread_cond_align_t; typedef struct { struct _pthread_fastlock __c_lock; _pthread_descr __c_waiting; char __padding[48 - sizeof (struct _pthread_fastlock) - sizeof (_pthread_descr) - sizeof (__pthread_cond_align_t)]; __pthread_cond_align_t __align; } pthread_cond_t; typedef struct { int __dummy; } pthread_condattr_t; typedef unsigned int pthread_key_t; typedef struct { int __m_reserved; int __m_count; _pthread_descr __m_owner; int __m_kind; struct _pthread_fastlock __m_lock; } pthread_mutex_t; typedef struct { int __mutexkind; } pthread_mutexattr_t; typedef int pthread_once_t; typedef struct _pthread_rwlock_t { struct _pthread_fastlock __rw_lock; int __rw_readers; _pthread_descr __rw_writer; _pthread_descr __rw_read_waiting; _pthread_descr __rw_write_waiting; int __rw_kind; int __rw_pshared; } pthread_rwlock_t; typedef struct { int __lockkind; int __pshared; } pthread_rwlockattr_t; typedef volatile int pthread_spinlock_t; typedef struct { struct _pthread_fastlock __ba_lock; int __ba_required; int __ba_present; _pthread_descr __ba_waiting; } pthread_barrier_t; typedef struct { int __pshared; } pthread_barrierattr_t; typedef unsigned long int pthread_t; extern int *__errno_location (void) __attribute__ ((__const__)); extern char *program_invocation_name, *program_invocation_short_name; typedef int error_t; extern void *memcpy (void *__restrict __dest, __const void *__restrict __src, size_t __n) ; extern void *memmove (void *__dest, __const void *__src, size_t __n) ; extern void *memccpy (void *__restrict __dest, __const void *__restrict __src, int __c, size_t __n) ; extern void *memset (void *__s, int __c, size_t __n) ; extern int memcmp (__const void *__s1, __const void *__s2, size_t __n) __attribute__ ((__pure__)); extern void *memchr (__const void *__s, int __c, size_t __n) __attribute__ ((__pure__)); extern void *rawmemchr (__const void *__s, int __c) __attribute__ ((__pure__)); extern void *memrchr (__const void *__s, int __c, size_t __n) __attribute__ ((__pure__)); extern char *strcpy (char *__restrict __dest, __const char *__restrict __src) ; extern char *strncpy (char *__restrict __dest, __const char *__restrict __src, size_t __n) ; extern char *strcat (char *__restrict __dest, __const char *__restrict __src) ; extern char *strncat (char *__restrict __dest, __const char *__restrict __src, size_t __n) ; extern int strcmp (__const char *__s1, __const char *__s2) __attribute__ ((__pure__)); extern int strncmp (__const char *__s1, __const char *__s2, size_t __n) __attribute__ ((__pure__)); extern int strcoll (__const char *__s1, __const char *__s2) __attribute__ ((__pure__)); extern size_t strxfrm (char *__restrict __dest, __const char *__restrict __src, size_t __n) ; typedef struct __locale_struct { struct locale_data *__locales[13]; const unsigned short int *__ctype_b; const int *__ctype_tolower; const int *__ctype_toupper; const char *__names[13]; } *__locale_t; extern int strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l) __attribute__ ((__pure__)); extern size_t strxfrm_l (char *__dest, __const char *__src, size_t __n, __locale_t __l) ; extern char *strdup (__const char *__s) __attribute__ ((__malloc__)); extern char *strndup (__const char *__string, size_t __n) __attribute__ ((__malloc__)); extern char *strchr (__const char *__s, int __c) __attribute__ ((__pure__)); extern char *strrchr (__const char *__s, int __c) __attribute__ ((__pure__)); extern char *strchrnul (__const char *__s, int __c) __attribute__ ((__pure__)); extern size_t strcspn (__const char *__s, __const char *__reject) __attribute__ ((__pure__)); extern size_t strspn (__const char *__s, __const char *__accept) __attribute__ ((__pure__)); extern char *strpbrk (__const char *__s, __const char *__accept) __attribute__ ((__pure__)); extern char *strstr (__const char *__haystack, __const char *__needle) __attribute__ ((__pure__)); extern char *strtok (char *__restrict __s, __const char *__restrict __delim) ; extern char *__strtok_r (char *__restrict __s, __const char *__restrict __delim, char **__restrict __save_ptr) ; extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim, char **__restrict __save_ptr) ; extern char *strcasestr (__const char *__haystack, __const char *__needle) __attribute__ ((__pure__)); extern void *memmem (__const void *__haystack, size_t __haystacklen, __const void *__needle, size_t __needlelen) __attribute__ ((__pure__)); extern void *__mempcpy (void *__restrict __dest, __const void *__restrict __src, size_t __n) ; extern void *mempcpy (void *__restrict __dest, __const void *__restrict __src, size_t __n) ; extern size_t strlen (__const char *__s) __attribute__ ((__pure__)); extern size_t strnlen (__const char *__string, size_t __maxlen) __attribute__ ((__pure__)); extern char *strerror (int __errnum) ; extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) ; extern void __bzero (void *__s, size_t __n) ; extern void bcopy (__const void *__src, void *__dest, size_t __n) ; extern void bzero (void *__s, size_t __n) ; extern int bcmp (__const void *__s1, __const void *__s2, size_t __n) __attribute__ ((__pure__)); extern char *index (__const char *__s, int __c) __attribute__ ((__pure__)); extern char *rindex (__const char *__s, int __c) __attribute__ ((__pure__)); extern int ffs (int __i) __attribute__ ((__const__)); extern int ffsl (long int __l) __attribute__ ((__const__)); __extension__ extern int ffsll (long long int __ll) __attribute__ ((__const__)); extern int strcasecmp (__const char *__s1, __const char *__s2) __attribute__ ((__pure__)); extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n) __attribute__ ((__pure__)); extern int strcasecmp_l (__const char *__s1, __const char *__s2, __locale_t __loc) __attribute__ ((__pure__)); extern int strncasecmp_l (__const char *__s1, __const char *__s2, size_t __n, __locale_t __loc) __attribute__ ((__pure__)); extern char *strsep (char **__restrict __stringp, __const char *__restrict __delim) ; extern int strverscmp (__const char *__s1, __const char *__s2) __attribute__ ((__pure__)); extern char *strsignal (int __sig) ; extern char *__stpcpy (char *__restrict __dest, __const char *__restrict __src) ; extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src) ; extern char *__stpncpy (char *__restrict __dest, __const char *__restrict __src, size_t __n) ; extern char *stpncpy (char *__restrict __dest, __const char *__restrict __src, size_t __n) ; extern char *strfry (char *__string) ; extern void *memfrob (void *__s, size_t __n) ; extern char *basename (__const char *__filename) ; union wait { int w_status; struct { unsigned int __w_termsig:7; unsigned int __w_coredump:1; unsigned int __w_retcode:8; unsigned int:16; } __wait_terminated; struct { unsigned int __w_stopval:8; unsigned int __w_stopsig:8; unsigned int:16; } __wait_stopped; }; typedef union { union wait *__uptr; int *__iptr; } __WAIT_STATUS __attribute__ ((__transparent_union__)); typedef struct { int quot; int rem; } div_t; typedef struct { long int quot; long int rem; } ldiv_t; __extension__ typedef struct { long long int quot; long long int rem; } lldiv_t; extern size_t __ctype_get_mb_cur_max (void) ; extern double atof (__const char *__nptr) __attribute__ ((__pure__)); extern int atoi (__const char *__nptr) __attribute__ ((__pure__)); extern long int atol (__const char *__nptr) __attribute__ ((__pure__)); __extension__ extern long long int atoll (__const char *__nptr) __attribute__ ((__pure__)); extern double strtod (__const char *__restrict __nptr, char **__restrict __endptr) ; extern float strtof (__const char *__restrict __nptr, char **__restrict __endptr) ; extern long double strtold (__const char *__restrict __nptr, char **__restrict __endptr) ; extern long int strtol (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ; extern unsigned long int strtoul (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ; __extension__ extern long long int strtoq (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ; __extension__ extern unsigned long long int strtouq (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ; __extension__ extern long long int strtoll (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ; __extension__ extern unsigned long long int strtoull (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ; extern long int strtol_l (__const char *__restrict __nptr, char **__restrict __endptr, int __base, __locale_t __loc) ; extern unsigned long int strtoul_l (__const char *__restrict __nptr, char **__restrict __endptr, int __base, __locale_t __loc) ; __extension__ extern long long int strtoll_l (__const char *__restrict __nptr, char **__restrict __endptr, int __base, __locale_t __loc) ; __extension__ extern unsigned long long int strtoull_l (__const char *__restrict __nptr, char **__restrict __endptr, int __base, __locale_t __loc) ; extern double strtod_l (__const char *__restrict __nptr, char **__restrict __endptr, __locale_t __loc) ; extern float strtof_l (__const char *__restrict __nptr, char **__restrict __endptr, __locale_t __loc) ; extern long double strtold_l (__const char *__restrict __nptr, char **__restrict __endptr, __locale_t __loc) ; extern double __strtod_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __group) ; extern float __strtof_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __group) ; extern long double __strtold_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __group) ; extern long int __strtol_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __base, int __group) ; extern unsigned long int __strtoul_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __base, int __group) ; __extension__ extern long long int __strtoll_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __base, int __group) ; __extension__ extern unsigned long long int __strtoull_internal (__const char * __restrict __nptr, char **__restrict __endptr, int __base, int __group) ; extern __inline double strtod (__const char *__restrict __nptr, char **__restrict __endptr) { return __strtod_internal (__nptr, __endptr, 0); } extern __inline long int strtol (__const char *__restrict __nptr, char **__restrict __endptr, int __base) { return __strtol_internal (__nptr, __endptr, __base, 0); } extern __inline unsigned long int strtoul (__const char *__restrict __nptr, char **__restrict __endptr, int __base) { return __strtoul_internal (__nptr, __endptr, __base, 0); } extern __inline float strtof (__const char *__restrict __nptr, char **__restrict __endptr) { return __strtof_internal (__nptr, __endptr, 0); } extern __inline long double strtold (__const char *__restrict __nptr, char **__restrict __endptr) { return __strtold_internal (__nptr, __endptr, 0); } __extension__ extern __inline long long int strtoq (__const char *__restrict __nptr, char **__restrict __endptr, int __base) { return __strtoll_internal (__nptr, __endptr, __base, 0); } __extension__ extern __inline unsigned long long int strtouq (__const char *__restrict __nptr, char **__restrict __endptr, int __base) { return __strtoull_internal (__nptr, __endptr, __base, 0); } __extension__ extern __inline long long int strtoll (__const char *__restrict __nptr, char **__restrict __endptr, int __base) { return __strtoll_internal (__nptr, __endptr, __base, 0); } __extension__ extern __inline unsigned long long int strtoull (__const char * __restrict __nptr, char **__restrict __endptr, int __base) { return __strtoull_internal (__nptr, __endptr, __base, 0); } extern __inline double atof (__const char *__nptr) { return strtod (__nptr, (char **) ((void *)0)); } extern __inline int atoi (__const char *__nptr) { return (int) strtol (__nptr, (char **) ((void *)0), 10); } extern __inline long int atol (__const char *__nptr) { return strtol (__nptr, (char **) ((void *)0), 10); } __extension__ extern __inline long long int atoll (__const char *__nptr) { return strtoll (__nptr, (char **) ((void *)0), 10); } extern char *l64a (long int __n) ; extern long int a64l (__const char *__s) __attribute__ ((__pure__)); extern long int random (void) ; extern void srandom (unsigned int __seed) ; extern char *initstate (unsigned int __seed, char *__statebuf, size_t __statelen) ; extern char *setstate (char *__statebuf) ; struct random_data { int32_t *fptr; int32_t *rptr; int32_t *state; int rand_type; int rand_deg; int rand_sep; int32_t *end_ptr; }; extern int random_r (struct random_data *__restrict __buf, int32_t *__restrict __result) ; extern int srandom_r (unsigned int __seed, struct random_data *__buf) ; extern int initstate_r (unsigned int __seed, char *__restrict __statebuf, size_t __statelen, struct random_data *__restrict __buf) ; extern int setstate_r (char *__restrict __statebuf, struct random_data *__restrict __buf) ; extern int rand (void) ; extern void srand (unsigned int __seed) ; extern int rand_r (unsigned int *__seed) ; extern double drand48 (void) ; extern double erand48 (unsigned short int __xsubi[3]) ; extern long int lrand48 (void) ; extern long int nrand48 (unsigned short int __xsubi[3]) ; extern long int mrand48 (void) ; extern long int jrand48 (unsigned short int __xsubi[3]) ; extern void srand48 (long int __seedval) ; extern unsigned short int *seed48 (unsigned short int __seed16v[3]) ; extern void lcong48 (unsigned short int __param[7]) ; struct drand48_data { unsigned short int __x[3]; unsigned short int __old_x[3]; unsigned short int __c; unsigned short int __init; unsigned long long int __a; }; extern int drand48_r (struct drand48_data *__restrict __buffer, double *__restrict __result) ; extern int erand48_r (unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, double *__restrict __result) ; extern int lrand48_r (struct drand48_data *__restrict __buffer, long int *__restrict __result) ; extern int nrand48_r (unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, long int *__restrict __result) ; extern int mrand48_r (struct drand48_data *__restrict __buffer, long int *__restrict __result) ; extern int jrand48_r (unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, long int *__restrict __result) ; extern int srand48_r (long int __seedval, struct drand48_data *__buffer) ; extern int seed48_r (unsigned short int __seed16v[3], struct drand48_data *__buffer) ; extern int lcong48_r (unsigned short int __param[7], struct drand48_data *__buffer) ; extern void *malloc (size_t __size) __attribute__ ((__malloc__)); extern void *calloc (size_t __nmemb, size_t __size) __attribute__ ((__malloc__)); extern void *realloc (void *__ptr, size_t __size) __attribute__ ((__malloc__)); extern void free (void *__ptr) ; extern void cfree (void *__ptr) ; extern void *alloca (size_t __size) ; extern void *valloc (size_t __size) __attribute__ ((__malloc__)); extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size) __attribute__ ((__malloc__)); extern void abort (void) __attribute__ ((__noreturn__)); extern int atexit (void (*__func) (void)) ; extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg) ; extern void exit (int __status) __attribute__ ((__noreturn__)); extern void _Exit (int __status) __attribute__ ((__noreturn__)); extern char *getenv (__const char *__name) ; extern char *__secure_getenv (__const char *__name) ; extern int putenv (char *__string) ; extern int setenv (__const char *__name, __const char *__value, int __replace) ; extern int unsetenv (__const char *__name) ; extern int clearenv (void) ; extern char *mktemp (char *__template) ; extern int mkstemp (char *__template) ; extern int mkstemp64 (char *__template) ; extern char *mkdtemp (char *__template) ; extern int system (__const char *__command) ; extern char *canonicalize_file_name (__const char *__name) ; extern char *realpath (__const char *__restrict __name, char *__restrict __resolved) ; typedef int (*__compar_fn_t) (__const void *, __const void *); typedef __compar_fn_t comparison_fn_t; extern void *bsearch (__const void *__key, __const void *__base, size_t __nmemb, size_t __size, __compar_fn_t __compar); extern void qsort (void *__base, size_t __nmemb, size_t __size, __compar_fn_t __compar); extern int abs (int __x) __attribute__ ((__const__)); extern long int labs (long int __x) __attribute__ ((__const__)); __extension__ extern long long int llabs (long long int __x) __attribute__ ((__const__)); extern div_t div (int __numer, int __denom) __attribute__ ((__const__)); extern ldiv_t ldiv (long int __numer, long int __denom) __attribute__ ((__const__)); __extension__ extern lldiv_t lldiv (long long int __numer, long long int __denom) __attribute__ ((__const__)); extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) ; extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) ; extern char *gcvt (double __value, int __ndigit, char *__buf) ; extern char *qecvt (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) ; extern char *qfcvt (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) ; extern char *qgcvt (long double __value, int __ndigit, char *__buf) ; extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) ; extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) ; extern int qecvt_r (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) ; extern int qfcvt_r (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) ; extern int mblen (__const char *__s, size_t __n) ; extern int mbtowc (wchar_t *__restrict __pwc, __const char *__restrict __s, size_t __n) ; extern int wctomb (char *__s, wchar_t __wchar) ; extern size_t mbstowcs (wchar_t *__restrict __pwcs, __const char *__restrict __s, size_t __n) ; extern size_t wcstombs (char *__restrict __s, __const wchar_t *__restrict __pwcs, size_t __n) ; extern int rpmatch (__const char *__response) ; extern int getsubopt (char **__restrict __optionp, char *__const *__restrict __tokens, char **__restrict __valuep) ; extern void setkey (__const char *__key) ; extern int posix_openpt (int __oflag) ; extern int grantpt (int __fd) ; extern int unlockpt (int __fd) ; extern char *ptsname (int __fd) ; extern int ptsname_r (int __fd, char *__buf, size_t __buflen) ; extern int getpt (void) ; extern int getloadavg (double __loadavg[], int __nelem) ; typedef __intptr_t intptr_t; typedef __socklen_t socklen_t; extern int access (__const char *__name, int __type) ; extern int euidaccess (__const char *__name, int __type) ; extern __off_t lseek (int __fd, __off_t __offset, int __whence) ; extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence) ; extern int close (int __fd) ; extern ssize_t read (int __fd, void *__buf, size_t __nbytes) ; extern ssize_t write (int __fd, __const void *__buf, size_t __n) ; extern ssize_t pread (int __fd, void *__buf, size_t __nbytes, __off_t __offset) ; extern ssize_t pwrite (int __fd, __const void *__buf, size_t __n, __off_t __offset) ; extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes, __off64_t __offset) ; extern ssize_t pwrite64 (int __fd, __const void *__buf, size_t __n, __off64_t __offset) ; extern int pipe (int __pipedes[2]) ; extern unsigned int alarm (unsigned int __seconds) ; extern unsigned int sleep (unsigned int __seconds) ; extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval) ; extern int usleep (__useconds_t __useconds) ; extern int pause (void) ; extern int chown (__const char *__file, __uid_t __owner, __gid_t __group) ; extern int fchown (int __fd, __uid_t __owner, __gid_t __group) ; extern int lchown (__const char *__file, __uid_t __owner, __gid_t __group) ; extern int chdir (__const char *__path) ; extern int fchdir (int __fd) ; extern char *getcwd (char *__buf, size_t __size) ; extern char *get_current_dir_name (void) ; extern char *getwd (char *__buf) ; extern int dup (int __fd) ; extern int dup2 (int __fd, int __fd2) ; extern char **__environ; extern char **environ; extern int execve (__const char *__path, char *__const __argv[], char *__const __envp[]) ; extern int fexecve (int __fd, char *__const __argv[], char *__const __envp[]) ; extern int execv (__const char *__path, char *__const __argv[]) ; extern int execle (__const char *__path, __const char *__arg, ...) ; extern int execl (__const char *__path, __const char *__arg, ...) ; extern int execvp (__const char *__file, char *__const __argv[]) ; extern int execlp (__const char *__file, __const char *__arg, ...) ; extern int nice (int __inc) ; extern void _exit (int __status) __attribute__ ((__noreturn__)); enum { _PC_LINK_MAX, _PC_MAX_CANON, _PC_MAX_INPUT, _PC_NAME_MAX, _PC_PATH_MAX, _PC_PIPE_BUF, _PC_CHOWN_RESTRICTED, _PC_NO_TRUNC, _PC_VDISABLE, _PC_SYNC_IO, _PC_ASYNC_IO, _PC_PRIO_IO, _PC_SOCK_MAXBUF, _PC_FILESIZEBITS, _PC_REC_INCR_XFER_SIZE, _PC_REC_MAX_XFER_SIZE, _PC_REC_MIN_XFER_SIZE, _PC_REC_XFER_ALIGN, _PC_ALLOC_SIZE_MIN, _PC_SYMLINK_MAX }; enum { _SC_ARG_MAX, _SC_CHILD_MAX, _SC_CLK_TCK, _SC_NGROUPS_MAX, _SC_OPEN_MAX, _SC_STREAM_MAX, _SC_TZNAME_MAX, _SC_JOB_CONTROL, _SC_SAVED_IDS, _SC_REALTIME_SIGNALS, _SC_PRIORITY_SCHEDULING, _SC_TIMERS, _SC_ASYNCHRONOUS_IO, _SC_PRIORITIZED_IO, _SC_SYNCHRONIZED_IO, _SC_FSYNC, _SC_MAPPED_FILES, _SC_MEMLOCK, _SC_MEMLOCK_RANGE, _SC_MEMORY_PROTECTION, _SC_MESSAGE_PASSING, _SC_SEMAPHORES, _SC_SHARED_MEMORY_OBJECTS, _SC_AIO_LISTIO_MAX, _SC_AIO_MAX, _SC_AIO_PRIO_DELTA_MAX, _SC_DELAYTIMER_MAX, _SC_MQ_OPEN_MAX, _SC_MQ_PRIO_MAX, _SC_VERSION, _SC_PAGESIZE, _SC_RTSIG_MAX, _SC_SEM_NSEMS_MAX, _SC_SEM_VALUE_MAX, _SC_SIGQUEUE_MAX, _SC_TIMER_MAX, _SC_BC_BASE_MAX, _SC_BC_DIM_MAX, _SC_BC_SCALE_MAX, _SC_BC_STRING_MAX, _SC_COLL_WEIGHTS_MAX, _SC_EQUIV_CLASS_MAX, _SC_EXPR_NEST_MAX, _SC_LINE_MAX, _SC_RE_DUP_MAX, _SC_CHARCLASS_NAME_MAX, _SC_2_VERSION, _SC_2_C_BIND, _SC_2_C_DEV, _SC_2_FORT_DEV, _SC_2_FORT_RUN, _SC_2_SW_DEV, _SC_2_LOCALEDEF, _SC_PII, _SC_PII_XTI, _SC_PII_SOCKET, _SC_PII_INTERNET, _SC_PII_OSI, _SC_POLL, _SC_SELECT, _SC_UIO_MAXIOV, _SC_IOV_MAX = _SC_UIO_MAXIOV, _SC_PII_INTERNET_STREAM, _SC_PII_INTERNET_DGRAM, _SC_PII_OSI_COTS, _SC_PII_OSI_CLTS, _SC_PII_OSI_M, _SC_T_IOV_MAX, _SC_THREADS, _SC_THREAD_SAFE_FUNCTIONS, _SC_GETGR_R_SIZE_MAX, _SC_GETPW_R_SIZE_MAX, _SC_LOGIN_NAME_MAX, _SC_TTY_NAME_MAX, _SC_THREAD_DESTRUCTOR_ITERATIONS, _SC_THREAD_KEYS_MAX, _SC_THREAD_STACK_MIN, _SC_THREAD_THREADS_MAX, _SC_THREAD_ATTR_STACKADDR, _SC_THREAD_ATTR_STACKSIZE, _SC_THREAD_PRIORITY_SCHEDULING, _SC_THREAD_PRIO_INHERIT, _SC_THREAD_PRIO_PROTECT, _SC_THREAD_PROCESS_SHARED, _SC_NPROCESSORS_CONF, _SC_NPROCESSORS_ONLN, _SC_PHYS_PAGES, _SC_AVPHYS_PAGES, _SC_ATEXIT_MAX, _SC_PASS_MAX, _SC_XOPEN_VERSION, _SC_XOPEN_XCU_VERSION, _SC_XOPEN_UNIX, _SC_XOPEN_CRYPT, _SC_XOPEN_ENH_I18N, _SC_XOPEN_SHM, _SC_2_CHAR_TERM, _SC_2_C_VERSION, _SC_2_UPE, _SC_XOPEN_XPG2, _SC_XOPEN_XPG3, _SC_XOPEN_XPG4, _SC_CHAR_BIT, _SC_CHAR_MAX, _SC_CHAR_MIN, _SC_INT_MAX, _SC_INT_MIN, _SC_LONG_BIT, _SC_WORD_BIT, _SC_MB_LEN_MAX, _SC_NZERO, _SC_SSIZE_MAX, _SC_SCHAR_MAX, _SC_SCHAR_MIN, _SC_SHRT_MAX, _SC_SHRT_MIN, _SC_UCHAR_MAX, _SC_UINT_MAX, _SC_ULONG_MAX, _SC_USHRT_MAX, _SC_NL_ARGMAX, _SC_NL_LANGMAX, _SC_NL_MSGMAX, _SC_NL_NMAX, _SC_NL_SETMAX, _SC_NL_TEXTMAX, _SC_XBS5_ILP32_OFF32, _SC_XBS5_ILP32_OFFBIG, _SC_XBS5_LP64_OFF64, _SC_XBS5_LPBIG_OFFBIG, _SC_XOPEN_LEGACY, _SC_XOPEN_REALTIME, _SC_XOPEN_REALTIME_THREADS, _SC_ADVISORY_INFO, _SC_BARRIERS, _SC_BASE, _SC_C_LANG_SUPPORT, _SC_C_LANG_SUPPORT_R, _SC_CLOCK_SELECTION, _SC_CPUTIME, _SC_THREAD_CPUTIME, _SC_DEVICE_IO, _SC_DEVICE_SPECIFIC, _SC_DEVICE_SPECIFIC_R, _SC_FD_MGMT, _SC_FIFO, _SC_PIPE, _SC_FILE_ATTRIBUTES, _SC_FILE_LOCKING, _SC_FILE_SYSTEM, _SC_MONOTONIC_CLOCK, _SC_MULTI_PROCESS, _SC_SINGLE_PROCESS, _SC_NETWORKING, _SC_READER_WRITER_LOCKS, _SC_SPIN_LOCKS, _SC_REGEXP, _SC_REGEX_VERSION, _SC_SHELL, _SC_SIGNALS, _SC_SPAWN, _SC_SPORADIC_SERVER, _SC_THREAD_SPORADIC_SERVER, _SC_SYSTEM_DATABASE, _SC_SYSTEM_DATABASE_R, _SC_TIMEOUTS, _SC_TYPED_MEMORY_OBJECTS, _SC_USER_GROUPS, _SC_USER_GROUPS_R, _SC_2_PBS, _SC_2_PBS_ACCOUNTING, _SC_2_PBS_LOCATE, _SC_2_PBS_MESSAGE, _SC_2_PBS_TRACK, _SC_SYMLOOP_MAX, _SC_STREAMS, _SC_2_PBS_CHECKPOINT, _SC_V6_ILP32_OFF32, _SC_V6_ILP32_OFFBIG, _SC_V6_LP64_OFF64, _SC_V6_LPBIG_OFFBIG, _SC_HOST_NAME_MAX, _SC_TRACE, _SC_TRACE_EVENT_FILTER, _SC_TRACE_INHERIT, _SC_TRACE_LOG }; enum { _CS_PATH, _CS_V6_WIDTH_RESTRICTED_ENVS, _CS_GNU_LIBC_VERSION, _CS_GNU_LIBPTHREAD_VERSION, _CS_LFS_CFLAGS = 1000, _CS_LFS_LDFLAGS, _CS_LFS_LIBS, _CS_LFS_LINTFLAGS, _CS_LFS64_CFLAGS, _CS_LFS64_LDFLAGS, _CS_LFS64_LIBS, _CS_LFS64_LINTFLAGS, _CS_XBS5_ILP32_OFF32_CFLAGS = 1100, _CS_XBS5_ILP32_OFF32_LDFLAGS, _CS_XBS5_ILP32_OFF32_LIBS, _CS_XBS5_ILP32_OFF32_LINTFLAGS, _CS_XBS5_ILP32_OFFBIG_CFLAGS, _CS_XBS5_ILP32_OFFBIG_LDFLAGS, _CS_XBS5_ILP32_OFFBIG_LIBS, _CS_XBS5_ILP32_OFFBIG_LINTFLAGS, _CS_XBS5_LP64_OFF64_CFLAGS, _CS_XBS5_LP64_OFF64_LDFLAGS, _CS_XBS5_LP64_OFF64_LIBS, _CS_XBS5_LP64_OFF64_LINTFLAGS, _CS_XBS5_LPBIG_OFFBIG_CFLAGS, _CS_XBS5_LPBIG_OFFBIG_LDFLAGS, _CS_XBS5_LPBIG_OFFBIG_LIBS, _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS, _CS_POSIX_V6_ILP32_OFF32_CFLAGS, _CS_POSIX_V6_ILP32_OFF32_LDFLAGS, _CS_POSIX_V6_ILP32_OFF32_LIBS, _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS, _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS, _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS, _CS_POSIX_V6_ILP32_OFFBIG_LIBS, _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS, _CS_POSIX_V6_LP64_OFF64_CFLAGS, _CS_POSIX_V6_LP64_OFF64_LDFLAGS, _CS_POSIX_V6_LP64_OFF64_LIBS, _CS_POSIX_V6_LP64_OFF64_LINTFLAGS, _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS, _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS, _CS_POSIX_V6_LPBIG_OFFBIG_LIBS, _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS }; extern long int pathconf (__const char *__path, int __name) ; extern long int fpathconf (int __fd, int __name) ; extern long int sysconf (int __name) __attribute__ ((__const__)); extern size_t confstr (int __name, char *__buf, size_t __len) ; extern __pid_t getpid (void) ; extern __pid_t getppid (void) ; extern __pid_t getpgrp (void) ; extern __pid_t __getpgid (__pid_t __pid) ; extern __pid_t getpgid (__pid_t __pid) ; extern int setpgid (__pid_t __pid, __pid_t __pgid) ; extern int setpgrp (void) ; extern __pid_t setsid (void) ; extern __pid_t getsid (__pid_t __pid) ; extern __uid_t getuid (void) ; extern __uid_t geteuid (void) ; extern __gid_t getgid (void) ; extern __gid_t getegid (void) ; extern int getgroups (int __size, __gid_t __list[]) ; extern int group_member (__gid_t __gid) ; extern int setuid (__uid_t __uid) ; extern int setreuid (__uid_t __ruid, __uid_t __euid) ; extern int seteuid (__uid_t __uid) ; extern int setgid (__gid_t __gid) ; extern int setregid (__gid_t __rgid, __gid_t __egid) ; extern int setegid (__gid_t __gid) ; extern int getresuid (__uid_t *__euid, __uid_t *__ruid, __uid_t *__suid); extern int getresgid (__gid_t *__egid, __gid_t *__rgid, __gid_t *__sgid); extern int setresuid (__uid_t __euid, __uid_t __ruid, __uid_t __suid); extern int setresgid (__gid_t __egid, __gid_t __rgid, __gid_t __sgid); extern __pid_t fork (void) ; extern __pid_t vfork (void) ; extern char *ttyname (int __fd) ; extern int ttyname_r (int __fd, char *__buf, size_t __buflen) ; extern int isatty (int __fd) ; extern int ttyslot (void) ; extern int link (__const char *__from, __const char *__to) ; extern int symlink (__const char *__from, __const char *__to) ; extern int readlink (__const char *__restrict __path, char *__restrict __buf, size_t __len) ; extern int unlink (__const char *__name) ; extern int rmdir (__const char *__path) ; extern __pid_t tcgetpgrp (int __fd) ; extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) ; extern char *getlogin (void) ; extern int getlogin_r (char *__name, size_t __name_len) ; extern int setlogin (__const char *__name) ; extern char *optarg; extern int optind; extern int opterr; extern int optopt; struct option { const char *name; int has_arg; int *flag; int val; }; extern int getopt (int argc, char *const *argv, const char *shortopts); extern int getopt_long (int argc, char *const *argv, const char *shortopts, const struct option *longopts, int *longind); extern int getopt_long_only (int argc, char *const *argv, const char *shortopts, const struct option *longopts, int *longind); extern int _getopt_internal (int argc, char *const *argv, const char *shortopts, const struct option *longopts, int *longind, int long_only); extern int gethostname (char *__name, size_t __len) ; extern int sethostname (__const char *__name, size_t __len) ; extern int sethostid (long int __id) ; extern int getdomainname (char *__name, size_t __len) ; extern int setdomainname (__const char *__name, size_t __len) ; extern int vhangup (void) ; extern int revoke (__const char *__file) ; extern int profil (unsigned short int *__sample_buffer, size_t __size, size_t __offset, unsigned int __scale) ; extern int acct (__const char *__name) ; extern char *getusershell (void) ; extern void endusershell (void) ; extern void setusershell (void) ; extern int daemon (int __nochdir, int __noclose) ; extern int chroot (__const char *__path) ; extern char *getpass (__const char *__prompt) ; extern int fsync (int __fd) ; extern long int gethostid (void) ; extern void sync (void) ; extern int getpagesize (void) __attribute__ ((__const__)); extern int truncate (__const char *__file, __off_t __length) ; extern int truncate64 (__const char *__file, __off64_t __length) ; extern int ftruncate (int __fd, __off_t __length) ; extern int ftruncate64 (int __fd, __off64_t __length) ; extern int getdtablesize (void) ; extern int brk (void *__addr) ; extern void *sbrk (intptr_t __delta) ; extern long int syscall (long int __sysno, ...) ; extern int lockf (int __fd, int __cmd, __off_t __len) ; extern int lockf64 (int __fd, int __cmd, __off64_t __len) ; extern int fdatasync (int __fildes) ; extern char *crypt (__const char *__key, __const char *__salt) ; extern void encrypt (char *__block, int __edflag) ; extern void swab (__const void *__restrict __from, void *__restrict __to, ssize_t __n) ; extern char *ctermid (char *__s) ; extern int pthread_atfork (void (*__prepare) (void), void (*__parent) (void), void (*__child) (void)) ; struct timezone { int tz_minuteswest; int tz_dsttime; }; typedef struct timezone *__restrict __timezone_ptr_t; extern int gettimeofday (struct timeval *__restrict __tv, __timezone_ptr_t __tz) ; extern int settimeofday (__const struct timeval *__tv, __const struct timezone *__tz) ; extern int adjtime (__const struct timeval *__delta, struct timeval *__olddelta) ; enum __itimer_which { ITIMER_REAL = 0, ITIMER_VIRTUAL = 1, ITIMER_PROF = 2 }; struct itimerval { struct timeval it_interval; struct timeval it_value; }; typedef enum __itimer_which __itimer_which_t; extern int getitimer (__itimer_which_t __which, struct itimerval *__value) ; extern int setitimer (__itimer_which_t __which, __const struct itimerval *__restrict __new, struct itimerval *__restrict __old) ; extern int utimes (__const char *__file, __const struct timeval __tvp[2]) ; extern int lutimes (__const char *__file, __const struct timeval __tvp[2]) ; extern int futimes (int fd, __const struct timeval __tvp[2]) ; struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; long int tm_gmtoff; __const char *tm_zone; }; struct itimerspec { struct timespec it_interval; struct timespec it_value; }; struct sigevent; extern clock_t clock (void) ; extern time_t time (time_t *__timer) ; extern double difftime (time_t __time1, time_t __time0) __attribute__ ((__const__)); extern time_t mktime (struct tm *__tp) ; extern size_t strftime (char *__restrict __s, size_t __maxsize, __const char *__restrict __format, __const struct tm *__restrict __tp) ; extern char *strptime (__const char *__restrict __s, __const char *__restrict __fmt, struct tm *__tp) ; extern size_t strftime_l (char *__restrict __s, size_t __maxsize, __const char *__restrict __format, __const struct tm *__restrict __tp, __locale_t __loc) ; extern char *strptime_l (__const char *__restrict __s, __const char *__restrict __fmt, struct tm *__tp, __locale_t __loc) ; extern struct tm *gmtime (__const time_t *__timer) ; extern struct tm *localtime (__const time_t *__timer) ; extern struct tm *gmtime_r (__const time_t *__restrict __timer, struct tm *__restrict __tp) ; extern struct tm *localtime_r (__const time_t *__restrict __timer, struct tm *__restrict __tp) ; extern char *asctime (__const struct tm *__tp) ; extern char *ctime (__const time_t *__timer) ; extern char *asctime_r (__const struct tm *__restrict __tp, char *__restrict __buf) ; extern char *ctime_r (__const time_t *__restrict __timer, char *__restrict __buf) ; extern char *__tzname[2]; extern int __daylight; extern long int __timezone; extern char *tzname[2]; extern void tzset (void) ; extern int daylight; extern long int timezone; extern int stime (__const time_t *__when) ; extern time_t timegm (struct tm *__tp) ; extern time_t timelocal (struct tm *__tp) ; extern int dysize (int __year) __attribute__ ((__const__)); extern int nanosleep (__const struct timespec *__requested_time, struct timespec *__remaining) ; extern int clock_getres (clockid_t __clock_id, struct timespec *__res) ; extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) ; extern int clock_settime (clockid_t __clock_id, __const struct timespec *__tp) ; extern int clock_nanosleep (clockid_t __clock_id, int __flags, __const struct timespec *__req, struct timespec *__rem) ; extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) ; extern int timer_create (clockid_t __clock_id, struct sigevent *__restrict __evp, timer_t *__restrict __timerid) ; extern int timer_delete (timer_t __timerid) ; extern int timer_settime (timer_t __timerid, int __flags, __const struct itimerspec *__restrict __value, struct itimerspec *__restrict __ovalue) ; extern int timer_gettime (timer_t __timerid, struct itimerspec *__value) ; extern int timer_getoverrun (timer_t __timerid) ; extern int getdate_err; extern struct tm *getdate (__const char *__string) ; extern int getdate_r (__const char *__restrict __string, struct tm *__restrict __resbufp) ; struct flock { short int l_type; short int l_whence; __off_t l_start; __off_t l_len; __pid_t l_pid; }; struct flock64 { short int l_type; short int l_whence; __off64_t l_start; __off64_t l_len; __pid_t l_pid; }; struct stat { __dev_t st_dev; unsigned short int __pad1; __ino_t st_ino; __mode_t st_mode; __nlink_t st_nlink; __uid_t st_uid; __gid_t st_gid; __dev_t st_rdev; unsigned short int __pad2; __off_t st_size; __blksize_t st_blksize; __blkcnt_t st_blocks; struct timespec st_atim; struct timespec st_mtim; struct timespec st_ctim; unsigned long int __unused4; unsigned long int __unused5; }; struct stat64 { __dev_t st_dev; unsigned int __pad1; __ino_t __st_ino; __mode_t st_mode; __nlink_t st_nlink; __uid_t st_uid; __gid_t st_gid; __dev_t st_rdev; unsigned int __pad2; __off64_t st_size; __blksize_t st_blksize; __blkcnt64_t st_blocks; struct timespec st_atim; struct timespec st_mtim; struct timespec st_ctim; __ino64_t st_ino; }; extern int stat (__const char *__restrict __file, struct stat *__restrict __buf) ; extern int fstat (int __fd, struct stat *__buf) ; extern int stat64 (__const char *__restrict __file, struct stat64 *__restrict __buf) ; extern int fstat64 (int __fd, struct stat64 *__buf) ; extern int lstat (__const char *__restrict __file, struct stat *__restrict __buf) ; extern int lstat64 (__const char *__restrict __file, struct stat64 *__restrict __buf) ; extern int chmod (__const char *__file, __mode_t __mode) ; extern int lchmod (__const char *__file, __mode_t __mode) ; extern int fchmod (int __fd, __mode_t __mode) ; extern __mode_t umask (__mode_t __mask) ; extern __mode_t getumask (void) ; extern int mkdir (__const char *__path, __mode_t __mode) ; extern int mknod (__const char *__path, __mode_t __mode, __dev_t __dev) ; extern int mkfifo (__const char *__path, __mode_t __mode) ; extern int __fxstat (int __ver, int __fildes, struct stat *__stat_buf) ; extern int __xstat (int __ver, __const char *__filename, struct stat *__stat_buf) ; extern int __lxstat (int __ver, __const char *__filename, struct stat *__stat_buf) ; extern int __fxstat64 (int __ver, int __fildes, struct stat64 *__stat_buf) ; extern int __xstat64 (int __ver, __const char *__filename, struct stat64 *__stat_buf) ; extern int __lxstat64 (int __ver, __const char *__filename, struct stat64 *__stat_buf) ; extern int __xmknod (int __ver, __const char *__path, __mode_t __mode, __dev_t *__dev) ; extern __inline__ int stat (__const char *__path, struct stat *__statbuf) { return __xstat (3, __path, __statbuf); } extern __inline__ int lstat (__const char *__path, struct stat *__statbuf) { return __lxstat (3, __path, __statbuf); } extern __inline__ int fstat (int __fd, struct stat *__statbuf) { return __fxstat (3, __fd, __statbuf); } extern __inline__ int mknod (__const char *__path, __mode_t __mode, __dev_t __dev) { return __xmknod (1, __path, __mode, &__dev); } extern __inline__ int stat64 (__const char *__path, struct stat64 *__statbuf) { return __xstat64 (3, __path, __statbuf); } extern __inline__ int lstat64 (__const char *__path, struct stat64 *__statbuf) { return __lxstat64 (3, __path, __statbuf); } extern __inline__ int fstat64 (int __fd, struct stat64 *__statbuf) { return __fxstat64 (3, __fd, __statbuf); } extern int fcntl (int __fd, int __cmd, ...) ; extern int open (__const char *__file, int __oflag, ...) ; extern int open64 (__const char *__file, int __oflag, ...) ; extern int creat (__const char *__file, __mode_t __mode) ; extern int creat64 (__const char *__file, __mode_t __mode) ; extern int posix_fadvise (int __fd, __off_t __offset, size_t __len, int __advise) ; extern int posix_fadvise64 (int __fd, __off64_t __offset, size_t __len, int __advise) ; extern int posix_fallocate (int __fd, __off_t __offset, size_t __len) ; extern int posix_fallocate64 (int __fd, __off64_t __offset, size_t __len) ; extern int __sigismember (__const __sigset_t *, int); extern int __sigaddset (__sigset_t *, int); extern int __sigdelset (__sigset_t *, int); extern __inline int __sigismember (__const __sigset_t *__set, int __sig) { unsigned long int __mask = (((unsigned long int) 1) << (((__sig) - 1) % (8 * sizeof (unsigned long int)))); unsigned long int __word = (((__sig) - 1) / (8 * sizeof (unsigned long int))); return (__set->__val[__word] & __mask) ? 1 : 0; } extern __inline int __sigaddset ( __sigset_t *__set, int __sig) { unsigned long int __mask = (((unsigned long int) 1) << (((__sig) - 1) % (8 * sizeof (unsigned long int)))); unsigned long int __word = (((__sig) - 1) / (8 * sizeof (unsigned long int))); return ((__set->__val[__word] |= __mask), 0); } extern __inline int __sigdelset ( __sigset_t *__set, int __sig) { unsigned long int __mask = (((unsigned long int) 1) << (((__sig) - 1) % (8 * sizeof (unsigned long int)))); unsigned long int __word = (((__sig) - 1) / (8 * sizeof (unsigned long int))); return ((__set->__val[__word] &= ~__mask), 0); } typedef __sig_atomic_t sig_atomic_t; typedef void (*__sighandler_t) (int); extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler) ; extern __sighandler_t sysv_signal (int __sig, __sighandler_t __handler) ; extern __sighandler_t signal (int __sig, __sighandler_t __handler) ; extern __sighandler_t bsd_signal (int __sig, __sighandler_t __handler) ; extern int kill (__pid_t __pid, int __sig) ; extern int killpg (__pid_t __pgrp, int __sig) ; extern int raise (int __sig) ; extern __sighandler_t ssignal (int __sig, __sighandler_t __handler) ; extern int gsignal (int __sig) ; extern void psignal (int __sig, __const char *__s) ; extern int __sigpause (int __sig_or_mask, int __is_sig) ; extern int sigpause (int __mask) ; extern int sigblock (int __mask) ; extern int sigsetmask (int __mask) ; extern int siggetmask (void) ; typedef __sighandler_t sighandler_t; typedef __sighandler_t sig_t; typedef union sigval { int sival_int; void *sival_ptr; } sigval_t; typedef struct siginfo { int si_signo; int si_errno; int si_code; union { int _pad[((128 / sizeof (int)) - 3)]; struct { __pid_t si_pid; __uid_t si_uid; } _kill; struct { unsigned int _timer1; unsigned int _timer2; } _timer; struct { __pid_t si_pid; __uid_t si_uid; sigval_t si_sigval; } _rt; struct { __pid_t si_pid; __uid_t si_uid; int si_status; __clock_t si_utime; __clock_t si_stime; } _sigchld; struct { void *si_addr; } _sigfault; struct { long int si_band; int si_fd; } _sigpoll; } _sifields; } siginfo_t; enum { SI_ASYNCNL = -6, SI_SIGIO, SI_ASYNCIO, SI_MESGQ, SI_TIMER, SI_QUEUE, SI_USER, SI_KERNEL = 0x80 }; enum { ILL_ILLOPC = 1, ILL_ILLOPN, ILL_ILLADR, ILL_ILLTRP, ILL_PRVOPC, ILL_PRVREG, ILL_COPROC, ILL_BADSTK }; enum { FPE_INTDIV = 1, FPE_INTOVF, FPE_FLTDIV, FPE_FLTOVF, FPE_FLTUND, FPE_FLTRES, FPE_FLTINV, FPE_FLTSUB }; enum { SEGV_MAPERR = 1, SEGV_ACCERR }; enum { BUS_ADRALN = 1, BUS_ADRERR, BUS_OBJERR }; enum { TRAP_BRKPT = 1, TRAP_TRACE }; enum { CLD_EXITED = 1, CLD_KILLED, CLD_DUMPED, CLD_TRAPPED, CLD_STOPPED, CLD_CONTINUED }; enum { POLL_IN = 1, POLL_OUT, POLL_MSG, POLL_ERR, POLL_PRI, POLL_HUP }; struct __pthread_attr_s; typedef struct sigevent { sigval_t sigev_value; int sigev_signo; int sigev_notify; union { int _pad[((64 / sizeof (int)) - 3)]; struct { void (*_function) (sigval_t); void *_attribute; } _sigev_thread; } _sigev_un; } sigevent_t; enum { SIGEV_SIGNAL = 0, SIGEV_NONE, SIGEV_THREAD }; extern int sigemptyset (sigset_t *__set) ; extern int sigfillset (sigset_t *__set) ; extern int sigaddset (sigset_t *__set, int __signo) ; extern int sigdelset (sigset_t *__set, int __signo) ; extern int sigismember (__const sigset_t *__set, int __signo) ; extern int sigisemptyset (__const sigset_t *__set) ; extern int sigandset (sigset_t *__set, __const sigset_t *__left, __const sigset_t *__right) ; extern int sigorset (sigset_t *__set, __const sigset_t *__left, __const sigset_t *__right) ; struct sigaction { union { __sighandler_t sa_handler; void (*sa_sigaction) (int, siginfo_t *, void *); } __sigaction_handler; __sigset_t sa_mask; int sa_flags; void (*sa_restorer) (void); }; extern int sigprocmask (int __how, __const sigset_t *__restrict __set, sigset_t *__restrict __oset) ; extern int sigsuspend (__const sigset_t *__set) ; extern int sigaction (int __sig, __const struct sigaction *__restrict __act, struct sigaction *__restrict __oact) ; extern int sigpending (sigset_t *__set) ; extern int sigwait (__const sigset_t *__restrict __set, int *__restrict __sig) ; extern int sigwaitinfo (__const sigset_t *__restrict __set, siginfo_t *__restrict __info) ; extern int sigtimedwait (__const sigset_t *__restrict __set, siginfo_t *__restrict __info, __const struct timespec *__restrict __timeout) ; extern int sigqueue (__pid_t __pid, int __sig, __const union sigval __val) ; extern __const char *__const _sys_siglist[64]; extern __const char *__const sys_siglist[64]; struct sigvec { __sighandler_t sv_handler; int sv_mask; int sv_flags; }; extern int sigvec (int __sig, __const struct sigvec *__vec, struct sigvec *__ovec) ; struct _fpreg { unsigned short significand[4]; unsigned short exponent; }; struct _fpxreg { unsigned short significand[4]; unsigned short exponent; unsigned short padding[3]; }; struct _xmmreg { unsigned long element[4]; }; struct _fpstate { unsigned long cw; unsigned long sw; unsigned long tag; unsigned long ipoff; unsigned long cssel; unsigned long dataoff; unsigned long datasel; struct _fpreg _st[8]; unsigned short status; unsigned short magic; unsigned long _fxsr_env[6]; unsigned long mxcsr; unsigned long reserved; struct _fpxreg _fxsr_st[8]; struct _xmmreg _xmm[8]; unsigned long padding[56]; }; struct sigcontext { unsigned short gs, __gsh; unsigned short fs, __fsh; unsigned short es, __esh; unsigned short ds, __dsh; unsigned long edi; unsigned long esi; unsigned long ebp; unsigned long esp; unsigned long ebx; unsigned long edx; unsigned long ecx; unsigned long eax; unsigned long trapno; unsigned long err; unsigned long eip; unsigned short cs, __csh; unsigned long eflags; unsigned long esp_at_signal; unsigned short ss, __ssh; struct _fpstate * fpstate; unsigned long oldmask; unsigned long cr2; }; extern int sigreturn (struct sigcontext *__scp) ; extern int siginterrupt (int __sig, int __interrupt) ; struct sigstack { void *ss_sp; int ss_onstack; }; enum { SS_ONSTACK = 1, SS_DISABLE }; typedef struct sigaltstack { void *ss_sp; int ss_flags; size_t ss_size; } stack_t; typedef int greg_t; typedef greg_t gregset_t[19]; enum { REG_GS = 0, REG_FS, REG_ES, REG_DS, REG_EDI, REG_ESI, REG_EBP, REG_ESP, REG_EBX, REG_EDX, REG_ECX, REG_EAX, REG_TRAPNO, REG_ERR, REG_EIP, REG_CS, REG_EFL, REG_UESP, REG_SS }; struct _libc_fpreg { unsigned short int significand[4]; unsigned short int exponent; }; struct _libc_fpstate { unsigned long int cw; unsigned long int sw; unsigned long int tag; unsigned long int ipoff; unsigned long int cssel; unsigned long int dataoff; unsigned long int datasel; struct _libc_fpreg _st[8]; unsigned long int status; }; typedef struct _libc_fpstate *fpregset_t; typedef struct { gregset_t gregs; fpregset_t fpregs; unsigned long int oldmask; unsigned long int cr2; } mcontext_t; typedef struct ucontext { unsigned long int uc_flags; struct ucontext *uc_link; stack_t uc_stack; mcontext_t uc_mcontext; __sigset_t uc_sigmask; struct _libc_fpstate __fpregs_mem; } ucontext_t; extern int sigstack (struct sigstack *__ss, struct sigstack *__oss) ; extern int sigaltstack (__const struct sigaltstack *__restrict __ss, struct sigaltstack *__restrict __oss) ; extern int sighold (int __sig) ; extern int sigrelse (int __sig) ; extern int sigignore (int __sig) ; extern __sighandler_t sigset (int __sig, __sighandler_t __disp) ; extern int pthread_sigmask (int __how, __const __sigset_t *__restrict __newmask, __sigset_t *__restrict __oldmask); extern int pthread_kill (pthread_t __threadid, int __signo) ; extern int __libc_current_sigrtmin (void) ; extern int __libc_current_sigrtmax (void) ; enum __rlimit_resource { RLIMIT_CPU = 0, RLIMIT_FSIZE = 1, RLIMIT_DATA = 2, RLIMIT_STACK = 3, RLIMIT_CORE = 4, RLIMIT_RSS = 5, RLIMIT_NOFILE = 7, RLIMIT_OFILE = RLIMIT_NOFILE, RLIMIT_AS = 9, RLIMIT_NPROC = 6, RLIMIT_MEMLOCK = 8, RLIMIT_LOCKS = 10, RLIMIT_NLIMITS = 11, RLIM_NLIMITS = RLIMIT_NLIMITS }; typedef __rlim_t rlim_t; typedef __rlim64_t rlim64_t; struct rlimit { rlim_t rlim_cur; rlim_t rlim_max; }; struct rlimit64 { rlim64_t rlim_cur; rlim64_t rlim_max; }; enum __rusage_who { RUSAGE_SELF = 0, RUSAGE_CHILDREN = -1, RUSAGE_BOTH = -2 }; struct rusage { struct timeval ru_utime; struct timeval ru_stime; long int ru_maxrss; long int ru_ixrss; long int ru_idrss; long int ru_isrss; long int ru_minflt; long int ru_majflt; long int ru_nswap; long int ru_inblock; long int ru_oublock; long int ru_msgsnd; long int ru_msgrcv; long int ru_nsignals; long int ru_nvcsw; long int ru_nivcsw; }; enum __priority_which { PRIO_PROCESS = 0, PRIO_PGRP = 1, PRIO_USER = 2 }; typedef enum __rlimit_resource __rlimit_resource_t; typedef enum __rusage_who __rusage_who_t; typedef enum __priority_which __priority_which_t; extern int getrlimit (__rlimit_resource_t __resource, struct rlimit *__rlimits) ; extern int getrlimit64 (__rlimit_resource_t __resource, struct rlimit64 *__rlimits) ; extern int setrlimit (__rlimit_resource_t __resource, __const struct rlimit *__rlimits) ; extern int setrlimit64 (__rlimit_resource_t __resource, __const struct rlimit64 *__rlimits) ; extern int getrusage (__rusage_who_t __who, struct rusage *__usage) ; extern int getpriority (__priority_which_t __which, id_t __who) ; extern int setpriority (__priority_which_t __which, id_t __who, int __prio) ; typedef enum { P_ALL, P_PID, P_PGID } idtype_t; extern __pid_t wait (__WAIT_STATUS __stat_loc) ; extern __pid_t waitpid (__pid_t __pid, int *__stat_loc, int __options) ; extern int waitid (idtype_t __idtype, __id_t __id, siginfo_t *__infop, int __options) ; struct rusage; extern __pid_t wait3 (__WAIT_STATUS __stat_loc, int __options, struct rusage * __usage) ; struct rusage; extern __pid_t wait4 (__pid_t __pid, __WAIT_STATUS __stat_loc, int __options, struct rusage *__usage) ; extern int getopt (int, char * const *, const char *); extern void * malloc (size_t __size) __attribute__ ((__malloc__)); extern void * calloc (size_t __nmemb, size_t __size) __attribute__ ((__malloc__)); extern void * realloc (void * __ptr, size_t __size) __attribute__ ((__malloc__)); extern void free (void * __ptr) ; extern void cfree (void * __ptr) ; extern void * memalign (size_t __alignment, size_t __size) ; extern void * valloc (size_t __size) __attribute__ ((__malloc__)); extern void * pvalloc (size_t __size) __attribute__ ((__malloc__)); extern void * (*__morecore) (ptrdiff_t __size); extern void * __default_morecore (ptrdiff_t __size) __attribute__ ((__malloc__)); struct mallinfo { int arena; int ordblks; int smblks; int hblks; int hblkhd; int usmblks; int fsmblks; int uordblks; int fordblks; int keepcost; }; extern struct mallinfo mallinfo (void) ; extern int mallopt (int __param, int __val) ; extern int malloc_trim (size_t __pad) ; extern size_t malloc_usable_size (void * __ptr) ; extern void malloc_stats (void) ; extern void * malloc_get_state (void) ; extern int malloc_set_state (void * __ptr) ; extern void (*__malloc_initialize_hook) (void); extern void (*__free_hook) (void * __ptr, __const void *); extern void * (*__malloc_hook) (size_t __size, __const void *); extern void * (*__realloc_hook) (void * __ptr, size_t __size, __const void *); extern void * (*__memalign_hook) (size_t __alignment, size_t __size, __const void *); extern void (*__after_morecore_hook) (void); extern void __malloc_check_init (void) ; extern char **buildargv (const char *) __attribute__ ((__malloc__)); extern void freeargv (char **); extern char **dupargv (char **) __attribute__ ((__malloc__)); extern const char *lbasename (const char *); extern char *lrealpath (const char *); extern char *concat (const char *, ...) __attribute__ ((__malloc__)) __attribute__ ((__sentinel__)); extern char *reconcat (char *, const char *, ...) __attribute__ ((__malloc__)) __attribute__ ((__sentinel__)); extern unsigned long concat_length (const char *, ...) __attribute__ ((__sentinel__)); extern char *concat_copy (char *, const char *, ...) __attribute__ ((__sentinel__)); extern char *concat_copy2 (const char *, ...) __attribute__ ((__sentinel__)); extern char *libiberty_concat_ptr; extern int fdmatch (int fd1, int fd2); extern char * getpwd (void); extern long get_run_time (void); extern char *make_relative_prefix (const char *, const char *, const char *); extern char *choose_temp_base (void) __attribute__ ((__malloc__)); extern char *make_temp_file (const char *) __attribute__ ((__malloc__)); extern const char *spaces (int count); extern int errno_max (void); extern const char *strerrno (int); extern int strtoerrno (const char *); extern char *xstrerror (int); extern int signo_max (void); extern const char *strsigno (int); extern int strtosigno (const char *); extern int xatexit (void (*fn) (void)); extern void xexit (int status) __attribute__ ((__noreturn__)); extern void xmalloc_set_program_name (const char *); extern void xmalloc_failed (size_t) __attribute__ ((__noreturn__)); extern void * xmalloc (size_t) __attribute__ ((__malloc__)); extern void * xrealloc (void *, size_t); extern void * xcalloc (size_t, size_t) __attribute__ ((__malloc__)); extern char *xstrdup (const char *) __attribute__ ((__malloc__)); extern void * xmemdup (const void *, size_t, size_t) __attribute__ ((__malloc__)); extern double physmem_total (void); extern double physmem_available (void); extern const unsigned char _hex_value[256]; extern void hex_init (void); extern int pexecute (const char *, char * const *, const char *, const char *, char **, char **, int); extern int pwait (int, int *, int); extern int asprintf (char **, const char *, ...) __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__nonnull__ (2))); extern void * C_alloca (size_t) __attribute__ ((__malloc__)); extern void fancy_abort (const char *, int, const char *) __attribute__ ((__noreturn__)); struct rtx_def; typedef struct rtx_def *rtx; struct rtvec_def; typedef struct rtvec_def *rtvec; union tree_node; typedef union tree_node *tree; struct cpp_reader; enum tls_model { TLS_MODEL_GLOBAL_DYNAMIC = 1, TLS_MODEL_LOCAL_DYNAMIC, TLS_MODEL_INITIAL_EXEC, TLS_MODEL_LOCAL_EXEC }; struct processor_costs { const int add; const int lea; const int shift_var; const int shift_const; const int mult_init[5]; const int mult_bit; const int divide[5]; int movsx; int movzx; const int large_insn; const int move_ratio; const int movzbl_load; const int int_load[3]; const int int_store[3]; const int fp_move; const int fp_load[3]; const int fp_store[3]; const int mmx_move; const int mmx_load[2]; const int mmx_store[2]; const int sse_move; const int sse_load[3]; const int sse_store[3]; const int mmxsse_to_integer; const int prefetch_block; const int simultaneous_prefetches; const int branch_cost; const int fadd; const int fmul; const int fdiv; const int fabs; const int fchs; const int fsqrt; }; extern const struct processor_costs *ix86_cost; extern int target_flags; extern const int x86_use_leave, x86_push_memory, x86_zero_extend_with_and; extern const int x86_use_bit_test, x86_cmove, x86_deep_branch; extern const int x86_branch_hints, x86_unroll_strlen; extern const int x86_double_with_add, x86_partial_reg_stall, x86_movx; extern const int x86_use_loop, x86_use_fiop, x86_use_mov0; extern const int x86_use_cltd, x86_read_modify_write; extern const int x86_read_modify, x86_split_long_moves; extern const int x86_promote_QImode, x86_single_stringop, x86_fast_prefix; extern const int x86_himode_math, x86_qimode_math, x86_promote_qi_regs; extern const int x86_promote_hi_regs, x86_integer_DFmode_moves; extern const int x86_add_esp_4, x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8; extern const int x86_partial_reg_dependency, x86_memory_mismatch_stall; extern const int x86_accumulate_outgoing_args, x86_prologue_using_move; extern const int x86_epilogue_using_move, x86_decompose_lea; extern const int x86_arch_always_fancy_math_387, x86_shift1; extern const int x86_sse_partial_reg_dependency, x86_sse_partial_regs; extern const int x86_sse_typeless_stores, x86_sse_load0_by_pxor; extern const int x86_use_ffreep, x86_sse_partial_regs_for_cvtsd2ss; extern const int x86_inter_unit_moves, x86_schedule; extern int x86_prefetch_sse; enum reg_class { NO_REGS, AREG, DREG, CREG, BREG, SIREG, DIREG, AD_REGS, Q_REGS, NON_Q_REGS, INDEX_REGS, LEGACY_REGS, GENERAL_REGS, FP_TOP_REG, FP_SECOND_REG, FLOAT_REGS, SSE_REGS, MMX_REGS, FP_TOP_SSE_REGS, FP_SECOND_SSE_REGS, FLOAT_SSE_REGS, FLOAT_INT_REGS, INT_SSE_REGS, FLOAT_INT_SSE_REGS, ALL_REGS, LIM_REG_CLASSES }; typedef struct ix86_args { int words; int nregs; int regno; int fastcall; int sse_words; int sse_nregs; int warn_sse; int warn_mmx; int sse_regno; int mmx_words; int mmx_nregs; int mmx_regno; int maybe_vaarg; } CUMULATIVE_ARGS; enum ix86_builtins { IX86_BUILTIN_ADDPS, IX86_BUILTIN_ADDSS, IX86_BUILTIN_DIVPS, IX86_BUILTIN_DIVSS, IX86_BUILTIN_MULPS, IX86_BUILTIN_MULSS, IX86_BUILTIN_SUBPS, IX86_BUILTIN_SUBSS, IX86_BUILTIN_CMPEQPS, IX86_BUILTIN_CMPLTPS, IX86_BUILTIN_CMPLEPS, IX86_BUILTIN_CMPGTPS, IX86_BUILTIN_CMPGEPS, IX86_BUILTIN_CMPNEQPS, IX86_BUILTIN_CMPNLTPS, IX86_BUILTIN_CMPNLEPS, IX86_BUILTIN_CMPNGTPS, IX86_BUILTIN_CMPNGEPS, IX86_BUILTIN_CMPORDPS, IX86_BUILTIN_CMPUNORDPS, IX86_BUILTIN_CMPNEPS, IX86_BUILTIN_CMPEQSS, IX86_BUILTIN_CMPLTSS, IX86_BUILTIN_CMPLESS, IX86_BUILTIN_CMPNEQSS, IX86_BUILTIN_CMPNLTSS, IX86_BUILTIN_CMPNLESS, IX86_BUILTIN_CMPORDSS, IX86_BUILTIN_CMPUNORDSS, IX86_BUILTIN_CMPNESS, IX86_BUILTIN_COMIEQSS, IX86_BUILTIN_COMILTSS, IX86_BUILTIN_COMILESS, IX86_BUILTIN_COMIGTSS, IX86_BUILTIN_COMIGESS, IX86_BUILTIN_COMINEQSS, IX86_BUILTIN_UCOMIEQSS, IX86_BUILTIN_UCOMILTSS, IX86_BUILTIN_UCOMILESS, IX86_BUILTIN_UCOMIGTSS, IX86_BUILTIN_UCOMIGESS, IX86_BUILTIN_UCOMINEQSS, IX86_BUILTIN_CVTPI2PS, IX86_BUILTIN_CVTPS2PI, IX86_BUILTIN_CVTSI2SS, IX86_BUILTIN_CVTSI642SS, IX86_BUILTIN_CVTSS2SI, IX86_BUILTIN_CVTSS2SI64, IX86_BUILTIN_CVTTPS2PI, IX86_BUILTIN_CVTTSS2SI, IX86_BUILTIN_CVTTSS2SI64, IX86_BUILTIN_MAXPS, IX86_BUILTIN_MAXSS, IX86_BUILTIN_MINPS, IX86_BUILTIN_MINSS, IX86_BUILTIN_LOADAPS, IX86_BUILTIN_LOADUPS, IX86_BUILTIN_STOREAPS, IX86_BUILTIN_STOREUPS, IX86_BUILTIN_LOADSS, IX86_BUILTIN_STORESS, IX86_BUILTIN_MOVSS, IX86_BUILTIN_MOVHLPS, IX86_BUILTIN_MOVLHPS, IX86_BUILTIN_LOADHPS, IX86_BUILTIN_LOADLPS, IX86_BUILTIN_STOREHPS, IX86_BUILTIN_STORELPS, IX86_BUILTIN_MASKMOVQ, IX86_BUILTIN_MOVMSKPS, IX86_BUILTIN_PMOVMSKB, IX86_BUILTIN_MOVNTPS, IX86_BUILTIN_MOVNTQ, IX86_BUILTIN_LOADDQA, IX86_BUILTIN_LOADDQU, IX86_BUILTIN_STOREDQA, IX86_BUILTIN_STOREDQU, IX86_BUILTIN_MOVQ, IX86_BUILTIN_LOADD, IX86_BUILTIN_STORED, IX86_BUILTIN_CLRTI, IX86_BUILTIN_PACKSSWB, IX86_BUILTIN_PACKSSDW, IX86_BUILTIN_PACKUSWB, IX86_BUILTIN_PADDB, IX86_BUILTIN_PADDW, IX86_BUILTIN_PADDD, IX86_BUILTIN_PADDQ, IX86_BUILTIN_PADDSB, IX86_BUILTIN_PADDSW, IX86_BUILTIN_PADDUSB, IX86_BUILTIN_PADDUSW, IX86_BUILTIN_PSUBB, IX86_BUILTIN_PSUBW, IX86_BUILTIN_PSUBD, IX86_BUILTIN_PSUBQ, IX86_BUILTIN_PSUBSB, IX86_BUILTIN_PSUBSW, IX86_BUILTIN_PSUBUSB, IX86_BUILTIN_PSUBUSW, IX86_BUILTIN_PAND, IX86_BUILTIN_PANDN, IX86_BUILTIN_POR, IX86_BUILTIN_PXOR, IX86_BUILTIN_PAVGB, IX86_BUILTIN_PAVGW, IX86_BUILTIN_PCMPEQB, IX86_BUILTIN_PCMPEQW, IX86_BUILTIN_PCMPEQD, IX86_BUILTIN_PCMPGTB, IX86_BUILTIN_PCMPGTW, IX86_BUILTIN_PCMPGTD, IX86_BUILTIN_PEXTRW, IX86_BUILTIN_PINSRW, IX86_BUILTIN_PMADDWD, IX86_BUILTIN_PMAXSW, IX86_BUILTIN_PMAXUB, IX86_BUILTIN_PMINSW, IX86_BUILTIN_PMINUB, IX86_BUILTIN_PMULHUW, IX86_BUILTIN_PMULHW, IX86_BUILTIN_PMULLW, IX86_BUILTIN_PSADBW, IX86_BUILTIN_PSHUFW, IX86_BUILTIN_PSLLW, IX86_BUILTIN_PSLLD, IX86_BUILTIN_PSLLQ, IX86_BUILTIN_PSRAW, IX86_BUILTIN_PSRAD, IX86_BUILTIN_PSRLW, IX86_BUILTIN_PSRLD, IX86_BUILTIN_PSRLQ, IX86_BUILTIN_PSLLWI, IX86_BUILTIN_PSLLDI, IX86_BUILTIN_PSLLQI, IX86_BUILTIN_PSRAWI, IX86_BUILTIN_PSRADI, IX86_BUILTIN_PSRLWI, IX86_BUILTIN_PSRLDI, IX86_BUILTIN_PSRLQI, IX86_BUILTIN_PUNPCKHBW, IX86_BUILTIN_PUNPCKHWD, IX86_BUILTIN_PUNPCKHDQ, IX86_BUILTIN_PUNPCKLBW, IX86_BUILTIN_PUNPCKLWD, IX86_BUILTIN_PUNPCKLDQ, IX86_BUILTIN_SHUFPS, IX86_BUILTIN_RCPPS, IX86_BUILTIN_RCPSS, IX86_BUILTIN_RSQRTPS, IX86_BUILTIN_RSQRTSS, IX86_BUILTIN_SQRTPS, IX86_BUILTIN_SQRTSS, IX86_BUILTIN_UNPCKHPS, IX86_BUILTIN_UNPCKLPS, IX86_BUILTIN_ANDPS, IX86_BUILTIN_ANDNPS, IX86_BUILTIN_ORPS, IX86_BUILTIN_XORPS, IX86_BUILTIN_EMMS, IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR, IX86_BUILTIN_SFENCE, IX86_BUILTIN_FEMMS, IX86_BUILTIN_PAVGUSB, IX86_BUILTIN_PF2ID, IX86_BUILTIN_PFACC, IX86_BUILTIN_PFADD, IX86_BUILTIN_PFCMPEQ, IX86_BUILTIN_PFCMPGE, IX86_BUILTIN_PFCMPGT, IX86_BUILTIN_PFMAX, IX86_BUILTIN_PFMIN, IX86_BUILTIN_PFMUL, IX86_BUILTIN_PFRCP, IX86_BUILTIN_PFRCPIT1, IX86_BUILTIN_PFRCPIT2, IX86_BUILTIN_PFRSQIT1, IX86_BUILTIN_PFRSQRT, IX86_BUILTIN_PFSUB, IX86_BUILTIN_PFSUBR, IX86_BUILTIN_PI2FD, IX86_BUILTIN_PMULHRW, IX86_BUILTIN_PF2IW, IX86_BUILTIN_PFNACC, IX86_BUILTIN_PFPNACC, IX86_BUILTIN_PI2FW, IX86_BUILTIN_PSWAPDSI, IX86_BUILTIN_PSWAPDSF, IX86_BUILTIN_SSE_ZERO, IX86_BUILTIN_MMX_ZERO, IX86_BUILTIN_ADDPD, IX86_BUILTIN_ADDSD, IX86_BUILTIN_DIVPD, IX86_BUILTIN_DIVSD, IX86_BUILTIN_MULPD, IX86_BUILTIN_MULSD, IX86_BUILTIN_SUBPD, IX86_BUILTIN_SUBSD, IX86_BUILTIN_CMPEQPD, IX86_BUILTIN_CMPLTPD, IX86_BUILTIN_CMPLEPD, IX86_BUILTIN_CMPGTPD, IX86_BUILTIN_CMPGEPD, IX86_BUILTIN_CMPNEQPD, IX86_BUILTIN_CMPNLTPD, IX86_BUILTIN_CMPNLEPD, IX86_BUILTIN_CMPNGTPD, IX86_BUILTIN_CMPNGEPD, IX86_BUILTIN_CMPORDPD, IX86_BUILTIN_CMPUNORDPD, IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPEQSD, IX86_BUILTIN_CMPLTSD, IX86_BUILTIN_CMPLESD, IX86_BUILTIN_CMPNEQSD, IX86_BUILTIN_CMPNLTSD, IX86_BUILTIN_CMPNLESD, IX86_BUILTIN_CMPORDSD, IX86_BUILTIN_CMPUNORDSD, IX86_BUILTIN_CMPNESD, IX86_BUILTIN_COMIEQSD, IX86_BUILTIN_COMILTSD, IX86_BUILTIN_COMILESD, IX86_BUILTIN_COMIGTSD, IX86_BUILTIN_COMIGESD, IX86_BUILTIN_COMINEQSD, IX86_BUILTIN_UCOMIEQSD, IX86_BUILTIN_UCOMILTSD, IX86_BUILTIN_UCOMILESD, IX86_BUILTIN_UCOMIGTSD, IX86_BUILTIN_UCOMIGESD, IX86_BUILTIN_UCOMINEQSD, IX86_BUILTIN_MAXPD, IX86_BUILTIN_MAXSD, IX86_BUILTIN_MINPD, IX86_BUILTIN_MINSD, IX86_BUILTIN_ANDPD, IX86_BUILTIN_ANDNPD, IX86_BUILTIN_ORPD, IX86_BUILTIN_XORPD, IX86_BUILTIN_SQRTPD, IX86_BUILTIN_SQRTSD, IX86_BUILTIN_UNPCKHPD, IX86_BUILTIN_UNPCKLPD, IX86_BUILTIN_SHUFPD, IX86_BUILTIN_LOADAPD, IX86_BUILTIN_LOADUPD, IX86_BUILTIN_STOREAPD, IX86_BUILTIN_STOREUPD, IX86_BUILTIN_LOADSD, IX86_BUILTIN_STORESD, IX86_BUILTIN_MOVSD, IX86_BUILTIN_LOADHPD, IX86_BUILTIN_LOADLPD, IX86_BUILTIN_STOREHPD, IX86_BUILTIN_STORELPD, IX86_BUILTIN_CVTDQ2PD, IX86_BUILTIN_CVTDQ2PS, IX86_BUILTIN_CVTPD2DQ, IX86_BUILTIN_CVTPD2PI, IX86_BUILTIN_CVTPD2PS, IX86_BUILTIN_CVTTPD2DQ, IX86_BUILTIN_CVTTPD2PI, IX86_BUILTIN_CVTPI2PD, IX86_BUILTIN_CVTSI2SD, IX86_BUILTIN_CVTSI642SD, IX86_BUILTIN_CVTSD2SI, IX86_BUILTIN_CVTSD2SI64, IX86_BUILTIN_CVTSD2SS, IX86_BUILTIN_CVTSS2SD, IX86_BUILTIN_CVTTSD2SI, IX86_BUILTIN_CVTTSD2SI64, IX86_BUILTIN_CVTPS2DQ, IX86_BUILTIN_CVTPS2PD, IX86_BUILTIN_CVTTPS2DQ, IX86_BUILTIN_MOVNTI, IX86_BUILTIN_MOVNTPD, IX86_BUILTIN_MOVNTDQ, IX86_BUILTIN_SETPD1, IX86_BUILTIN_SETPD, IX86_BUILTIN_CLRPD, IX86_BUILTIN_SETRPD, IX86_BUILTIN_LOADPD1, IX86_BUILTIN_LOADRPD, IX86_BUILTIN_STOREPD1, IX86_BUILTIN_STORERPD, IX86_BUILTIN_MASKMOVDQU, IX86_BUILTIN_MOVMSKPD, IX86_BUILTIN_PMOVMSKB128, IX86_BUILTIN_MOVQ2DQ, IX86_BUILTIN_MOVDQ2Q, IX86_BUILTIN_PACKSSWB128, IX86_BUILTIN_PACKSSDW128, IX86_BUILTIN_PACKUSWB128, IX86_BUILTIN_PADDB128, IX86_BUILTIN_PADDW128, IX86_BUILTIN_PADDD128, IX86_BUILTIN_PADDQ128, IX86_BUILTIN_PADDSB128, IX86_BUILTIN_PADDSW128, IX86_BUILTIN_PADDUSB128, IX86_BUILTIN_PADDUSW128, IX86_BUILTIN_PSUBB128, IX86_BUILTIN_PSUBW128, IX86_BUILTIN_PSUBD128, IX86_BUILTIN_PSUBQ128, IX86_BUILTIN_PSUBSB128, IX86_BUILTIN_PSUBSW128, IX86_BUILTIN_PSUBUSB128, IX86_BUILTIN_PSUBUSW128, IX86_BUILTIN_PAND128, IX86_BUILTIN_PANDN128, IX86_BUILTIN_POR128, IX86_BUILTIN_PXOR128, IX86_BUILTIN_PAVGB128, IX86_BUILTIN_PAVGW128, IX86_BUILTIN_PCMPEQB128, IX86_BUILTIN_PCMPEQW128, IX86_BUILTIN_PCMPEQD128, IX86_BUILTIN_PCMPGTB128, IX86_BUILTIN_PCMPGTW128, IX86_BUILTIN_PCMPGTD128, IX86_BUILTIN_PEXTRW128, IX86_BUILTIN_PINSRW128, IX86_BUILTIN_PMADDWD128, IX86_BUILTIN_PMAXSW128, IX86_BUILTIN_PMAXUB128, IX86_BUILTIN_PMINSW128, IX86_BUILTIN_PMINUB128, IX86_BUILTIN_PMULUDQ, IX86_BUILTIN_PMULUDQ128, IX86_BUILTIN_PMULHUW128, IX86_BUILTIN_PMULHW128, IX86_BUILTIN_PMULLW128, IX86_BUILTIN_PSADBW128, IX86_BUILTIN_PSHUFHW, IX86_BUILTIN_PSHUFLW, IX86_BUILTIN_PSHUFD, IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128, IX86_BUILTIN_PSLLDQI128, IX86_BUILTIN_PSLLWI128, IX86_BUILTIN_PSLLDI128, IX86_BUILTIN_PSLLQI128, IX86_BUILTIN_PSRAWI128, IX86_BUILTIN_PSRADI128, IX86_BUILTIN_PSRLDQI128, IX86_BUILTIN_PSRLWI128, IX86_BUILTIN_PSRLDI128, IX86_BUILTIN_PSRLQI128, IX86_BUILTIN_PUNPCKHBW128, IX86_BUILTIN_PUNPCKHWD128, IX86_BUILTIN_PUNPCKHDQ128, IX86_BUILTIN_PUNPCKHQDQ128, IX86_BUILTIN_PUNPCKLBW128, IX86_BUILTIN_PUNPCKLWD128, IX86_BUILTIN_PUNPCKLDQ128, IX86_BUILTIN_PUNPCKLQDQ128, IX86_BUILTIN_CLFLUSH, IX86_BUILTIN_MFENCE, IX86_BUILTIN_LFENCE, IX86_BUILTIN_ADDSUBPS, IX86_BUILTIN_HADDPS, IX86_BUILTIN_HSUBPS, IX86_BUILTIN_MOVSHDUP, IX86_BUILTIN_MOVSLDUP, IX86_BUILTIN_ADDSUBPD, IX86_BUILTIN_HADDPD, IX86_BUILTIN_HSUBPD, IX86_BUILTIN_LOADDDUP, IX86_BUILTIN_MOVDDUP, IX86_BUILTIN_LDDQU, IX86_BUILTIN_MONITOR, IX86_BUILTIN_MWAIT, IX86_BUILTIN_MAX }; extern int const dbx_register_map[53]; extern int const dbx64_register_map[53]; extern int const svr4_dbx_register_map[53]; enum processor_type { PROCESSOR_I386, PROCESSOR_I486, PROCESSOR_PENTIUM, PROCESSOR_PENTIUMPRO, PROCESSOR_K6, PROCESSOR_ATHLON, PROCESSOR_PENTIUM4, PROCESSOR_K8, PROCESSOR_NOCONA, PROCESSOR_max }; extern enum processor_type ix86_tune; extern const char *ix86_tune_string; extern enum processor_type ix86_arch; extern const char *ix86_arch_string; enum fpmath_unit { FPMATH_387 = 1, FPMATH_SSE = 2 }; extern enum fpmath_unit ix86_fpmath; extern const char *ix86_fpmath_string; enum tls_dialect { TLS_DIALECT_GNU, TLS_DIALECT_SUN }; extern enum tls_dialect ix86_tls_dialect; extern const char *ix86_tls_dialect_string; enum cmodel { CM_32, CM_SMALL, CM_KERNEL, CM_MEDIUM, CM_LARGE, CM_SMALL_PIC }; extern enum cmodel ix86_cmodel; extern const char *ix86_cmodel_string; enum asm_dialect { ASM_ATT, ASM_INTEL }; extern const char *ix86_asm_string; extern enum asm_dialect ix86_asm_dialect; extern int ix86_regparm; extern const char *ix86_regparm_string; extern unsigned int ix86_preferred_stack_boundary; extern const char *ix86_preferred_stack_boundary_string; extern int ix86_branch_cost; extern const char *ix86_branch_cost_string; extern const char *ix86_debug_arg_string; extern const char *ix86_debug_addr_string; extern const char *ix86_align_loops_string; extern const char *ix86_align_jumps_string; extern const char *ix86_align_funcs_string; extern enum reg_class const regclass_map[53]; extern rtx ix86_compare_op0; extern rtx ix86_compare_op1; struct machine_function { struct stack_local_entry *stack_locals; const char *some_ld_name; int save_varrargs_registers; int accesses_prev_frame; int optimize_mode_switching; int use_fast_prologue_epilogue; int use_fast_prologue_epilogue_nregs; }; static __inline__ rtx gen_cmpdi_ccno_1_rex64 (rtx, rtx); static __inline__ rtx gen_cmpdi_ccno_1_rex64(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) { return 0; } static __inline__ rtx gen_cmpdi_1_insn_rex64 (rtx, rtx); static __inline__ rtx gen_cmpdi_1_insn_rex64(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) { return 0; } extern rtx gen_cmpqi_ext_3_insn (rtx, rtx); static __inline__ rtx gen_cmpqi_ext_3_insn_rex64 (rtx, rtx); static __inline__ rtx gen_cmpqi_ext_3_insn_rex64(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) { return 0; } extern rtx gen_x86_fnstsw_1 (rtx); extern rtx gen_x86_sahf_1 (rtx); extern rtx gen_popsi1 (rtx); extern rtx gen_movsi_insv_1 (rtx, rtx); static __inline__ rtx gen_movdi_insv_1_rex64 (rtx, rtx); static __inline__ rtx gen_movdi_insv_1_rex64(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) { return 0; } static __inline__ rtx gen_pushdi2_rex64 (rtx, rtx); static __inline__ rtx gen_pushdi2_rex64(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) { return 0; } static __inline__ rtx gen_popdi1 (rtx); static __inline__ rtx gen_popdi1(rtx a __attribute__ ((__unused__))) { return 0; } extern rtx gen_swapxf (rtx, rtx); extern rtx gen_zero_extendhisi2_and (rtx, rtx); extern rtx gen_zero_extendsidi2_32 (rtx, rtx); static __inline__ rtx gen_zero_extendsidi2_rex64 (rtx, rtx); static __inline__ rtx gen_zero_extendsidi2_rex64(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) { return 0; } static __inline__ rtx gen_zero_extendhidi2 (rtx, rtx); static __inline__ rtx gen_zero_extendhidi2(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) { return 0; } static __inline__ rtx gen_zero_extendqidi2 (rtx, rtx); static __inline__ rtx gen_zero_extendqidi2(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) { return 0; } static __inline__ rtx gen_extendsidi2_rex64 (rtx, rtx); static __inline__ rtx gen_extendsidi2_rex64(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) { return 0; } static __inline__ rtx gen_extendhidi2 (rtx, rtx); static __inline__ rtx gen_extendhidi2(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) { return 0; } static __inline__ rtx gen_extendqidi2 (rtx, rtx); static __inline__ rtx gen_extendqidi2(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) { return 0; } extern rtx gen_extendhisi2 (rtx, rtx); extern rtx gen_extendqihi2 (rtx, rtx); extern rtx gen_extendqisi2 (rtx, rtx); extern rtx gen_truncdfsf2_noop (rtx, rtx); extern rtx gen_truncdfsf2_sse_only (rtx, rtx); extern rtx gen_truncxfsf2_noop (rtx, rtx); extern rtx gen_truncxfdf2_noop (rtx, rtx); extern rtx gen_fix_truncdi_nomemory (rtx, rtx, rtx, rtx, rtx); extern rtx gen_fix_truncdi_memory (rtx, rtx, rtx, rtx); static __inline__ rtx gen_fix_truncsfdi_sse (rtx, rtx); static __inline__ rtx gen_fix_truncsfdi_sse(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) { return 0; } static __inline__ rtx gen_fix_truncdfdi_sse (rtx, rtx); static __inline__ rtx gen_fix_truncdfdi_sse(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) { return 0; } extern rtx gen_fix_truncsi_nomemory (rtx, rtx, rtx, rtx, rtx); extern rtx gen_fix_truncsi_memory (rtx, rtx, rtx, rtx); extern rtx gen_fix_truncsfsi_sse (rtx, rtx); extern rtx gen_fix_truncdfsi_sse (rtx, rtx); extern rtx gen_fix_trunchi_nomemory (rtx, rtx, rtx, rtx, rtx); extern rtx gen_fix_trunchi_memory (rtx, rtx, rtx, rtx); extern rtx gen_x86_fnstcw_1 (rtx); extern rtx gen_x86_fldcw_1 (rtx); extern rtx gen_floathixf2 (rtx, rtx); extern rtx gen_floatsixf2 (rtx, rtx); extern rtx gen_floatdixf2 (rtx, rtx); static __inline__ rtx gen_adddi3_carry_rex64 (rtx, rtx, rtx, rtx); static __inline__ rtx gen_adddi3_carry_rex64(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__)), rtx d __attribute__ ((__unused__))) { return 0; } extern rtx gen_addqi3_carry (rtx, rtx, rtx, rtx); extern rtx gen_addhi3_carry (rtx, rtx, rtx, rtx); extern rtx gen_addsi3_carry (rtx, rtx, rtx, rtx); extern rtx gen_addqi3_cc (rtx, rtx, rtx); static __inline__ rtx gen_addsi_1_zext (rtx, rtx, rtx); static __inline__ rtx gen_addsi_1_zext(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) { return 0; } extern rtx gen_addqi_ext_1 (rtx, rtx, rtx); static __inline__ rtx gen_subdi3_carry_rex64 (rtx, rtx, rtx, rtx); static __inline__ rtx gen_subdi3_carry_rex64(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__)), rtx d __attribute__ ((__unused__))) { return 0; } extern rtx gen_subqi3_carry (rtx, rtx, rtx, rtx); extern rtx gen_subhi3_carry (rtx, rtx, rtx, rtx); extern rtx gen_subsi3_carry (rtx, rtx, rtx, rtx); static __inline__ rtx gen_subsi3_carry_zext (rtx, rtx, rtx, rtx); static __inline__ rtx gen_subsi3_carry_zext(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__)), rtx d __attribute__ ((__unused__))) { return 0; } extern rtx gen_divqi3 (rtx, rtx, rtx); extern rtx gen_udivqi3 (rtx, rtx, rtx); extern rtx gen_divmodhi4 (rtx, rtx, rtx, rtx); static __inline__ rtx gen_udivmoddi4 (rtx, rtx, rtx, rtx); static __inline__ rtx gen_udivmoddi4(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__)), rtx d __attribute__ ((__unused__))) { return 0; } extern rtx gen_udivmodsi4 (rtx, rtx, rtx, rtx); extern rtx gen_testsi_1 (rtx, rtx); extern rtx gen_andqi_ext_0 (rtx, rtx, rtx); extern rtx gen_iorqi_ext_0 (rtx, rtx, rtx); extern rtx gen_xorqi_ext_0 (rtx, rtx, rtx); extern rtx gen_negsf2_memory (rtx, rtx); extern rtx gen_negsf2_ifs (rtx, rtx, rtx); extern rtx gen_negdf2_memory (rtx, rtx); extern rtx gen_negdf2_ifs (rtx, rtx, rtx); extern rtx gen_abssf2_memory (rtx, rtx); extern rtx gen_abssf2_ifs (rtx, rtx, rtx); extern rtx gen_absdf2_memory (rtx, rtx); extern rtx gen_absdf2_ifs (rtx, rtx, rtx); extern rtx gen_x86_shld_1 (rtx, rtx, rtx); extern rtx gen_x86_shrd_1 (rtx, rtx, rtx); extern rtx gen_ashrsi3_31 (rtx, rtx, rtx); extern rtx gen_jump (rtx); extern rtx gen_doloop_end_internal (rtx, rtx, rtx); extern rtx gen_blockage (rtx); extern rtx gen_return_internal (void); extern rtx gen_return_internal_long (void); extern rtx gen_return_pop_internal (rtx); extern rtx gen_return_indirect_internal (rtx); extern rtx gen_nop (void); extern rtx gen_align (rtx); extern rtx gen_set_got (rtx); extern rtx gen_eh_return_si (rtx); static __inline__ rtx gen_eh_return_di (rtx); static __inline__ rtx gen_eh_return_di(rtx a __attribute__ ((__unused__))) { return 0; } extern rtx gen_leave (void); static __inline__ rtx gen_leave_rex64 (void); static __inline__ rtx gen_leave_rex64(void) { return 0; } extern rtx gen_ctzsi2 (rtx, rtx); static __inline__ rtx gen_ctzdi2 (rtx, rtx); static __inline__ rtx gen_ctzdi2(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) { return 0; } extern rtx gen_sqrtsf2_1 (rtx, rtx); extern rtx gen_sqrtsf2_1_sse_only (rtx, rtx); extern rtx gen_sqrtsf2_i387 (rtx, rtx); extern rtx gen_sqrtdf2_1 (rtx, rtx); extern rtx gen_sqrtdf2_1_sse_only (rtx, rtx); extern rtx gen_sqrtdf2_i387 (rtx, rtx); extern rtx gen_sqrtxf2 (rtx, rtx); extern rtx gen_fpremxf4 (rtx, rtx, rtx, rtx); extern rtx gen_fprem1xf4 (rtx, rtx, rtx, rtx); extern rtx gen_sincosdf3 (rtx, rtx, rtx); extern rtx gen_sincossf3 (rtx, rtx, rtx); extern rtx gen_sincosxf3 (rtx, rtx, rtx); extern rtx gen_atan2df3_1 (rtx, rtx, rtx); extern rtx gen_atan2sf3_1 (rtx, rtx, rtx); extern rtx gen_atan2xf3_1 (rtx, rtx, rtx); extern rtx gen_fyl2x_xf3 (rtx, rtx, rtx); extern rtx gen_fyl2xp1_xf3 (rtx, rtx, rtx); extern rtx gen_frndintxf2 (rtx, rtx); extern rtx gen_frndintxf2_floor (rtx, rtx, rtx, rtx); extern rtx gen_frndintxf2_ceil (rtx, rtx, rtx, rtx); extern rtx gen_frndintxf2_trunc (rtx, rtx, rtx, rtx); extern rtx gen_frndintxf2_mask_pm (rtx, rtx, rtx, rtx); extern rtx gen_cld (void); static __inline__ rtx gen_x86_movdicc_0_m1_rex64 (rtx, rtx); static __inline__ rtx gen_x86_movdicc_0_m1_rex64(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) { return 0; } static __inline__ rtx gen_movdicc_c_rex64 (rtx, rtx, rtx, rtx); static __inline__ rtx gen_movdicc_c_rex64(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__)), rtx d __attribute__ ((__unused__))) { return 0; } extern rtx gen_x86_movsicc_0_m1 (rtx, rtx); extern rtx gen_pro_epilogue_adjust_stack_1 (rtx, rtx, rtx); static __inline__ rtx gen_pro_epilogue_adjust_stack_rex64 (rtx, rtx, rtx); static __inline__ rtx gen_pro_epilogue_adjust_stack_rex64(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) { return 0; } static __inline__ rtx gen_pro_epilogue_adjust_stack_rex64_2 (rtx, rtx, rtx, rtx); static __inline__ rtx gen_pro_epilogue_adjust_stack_rex64_2(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__)), rtx d __attribute__ ((__unused__))) { return 0; } extern rtx gen_sse_movsfcc (rtx, rtx, rtx, rtx, rtx, rtx); extern rtx gen_sse_movsfcc_eq (rtx, rtx, rtx, rtx, rtx); extern rtx gen_sse_movdfcc (rtx, rtx, rtx, rtx, rtx, rtx); extern rtx gen_sse_movdfcc_eq (rtx, rtx, rtx, rtx, rtx); extern rtx gen_allocate_stack_worker_1 (rtx); static __inline__ rtx gen_allocate_stack_worker_rex64 (rtx); static __inline__ rtx gen_allocate_stack_worker_rex64(rtx a __attribute__ ((__unused__))) { return 0; } extern rtx gen_trap (void); extern rtx gen_movv4sf_internal (rtx, rtx); extern rtx gen_movv4si_internal (rtx, rtx); extern rtx gen_movv2di_internal (rtx, rtx); extern rtx gen_movv8qi_internal (rtx, rtx); extern rtx gen_movv4hi_internal (rtx, rtx); extern rtx gen_movv2sf_internal (rtx, rtx); extern rtx gen_movv2df_internal (rtx, rtx); extern rtx gen_movv8hi_internal (rtx, rtx); extern rtx gen_movv16qi_internal (rtx, rtx); extern rtx gen_movti_internal (rtx, rtx); extern rtx gen_sse_movmskps (rtx, rtx); extern rtx gen_mmx_pmovmskb (rtx, rtx); extern rtx gen_mmx_maskmovq (rtx, rtx, rtx); static __inline__ rtx gen_mmx_maskmovq_rex (rtx, rtx, rtx); static __inline__ rtx gen_mmx_maskmovq_rex(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) { return 0; } extern rtx gen_sse_movntv4sf (rtx, rtx); extern rtx gen_sse_movntdi (rtx, rtx); extern rtx gen_sse_movhlps (rtx, rtx, rtx); extern rtx gen_sse_movlhps (rtx, rtx, rtx); extern rtx gen_sse_movhps (rtx, rtx, rtx); extern rtx gen_sse_movlps (rtx, rtx, rtx); extern rtx gen_sse_loadss_1 (rtx, rtx, rtx); extern rtx gen_sse_movss (rtx, rtx, rtx); extern rtx gen_sse_storess (rtx, rtx); extern rtx gen_sse_shufps (rtx, rtx, rtx, rtx); extern rtx gen_addv4sf3 (rtx, rtx, rtx); extern rtx gen_vmaddv4sf3 (rtx, rtx, rtx); extern rtx gen_subv4sf3 (rtx, rtx, rtx); extern rtx gen_vmsubv4sf3 (rtx, rtx, rtx); extern rtx gen_mulv4sf3 (rtx, rtx, rtx); extern rtx gen_vmmulv4sf3 (rtx, rtx, rtx); extern rtx gen_divv4sf3 (rtx, rtx, rtx); extern rtx gen_vmdivv4sf3 (rtx, rtx, rtx); extern rtx gen_rcpv4sf2 (rtx, rtx); extern rtx gen_vmrcpv4sf2 (rtx, rtx, rtx); extern rtx gen_rsqrtv4sf2 (rtx, rtx); extern rtx gen_vmrsqrtv4sf2 (rtx, rtx, rtx); extern rtx gen_sqrtv4sf2 (rtx, rtx); extern rtx gen_vmsqrtv4sf2 (rtx, rtx, rtx); extern rtx gen_sse2_andv2di3 (rtx, rtx, rtx); extern rtx gen_sse2_nandv2di3 (rtx, rtx, rtx); extern rtx gen_sse2_iorv2di3 (rtx, rtx, rtx); extern rtx gen_sse2_xorv2di3 (rtx, rtx, rtx); extern rtx gen_sse_clrv4sf (rtx, rtx); extern rtx gen_sse_clrv2df (rtx); extern rtx gen_maskcmpv4sf3 (rtx, rtx, rtx, rtx); extern rtx gen_maskncmpv4sf3 (rtx, rtx, rtx, rtx); extern rtx gen_vmmaskcmpv4sf3 (rtx, rtx, rtx, rtx); extern rtx gen_vmmaskncmpv4sf3 (rtx, rtx, rtx, rtx); extern rtx gen_sse_comi (rtx, rtx); extern rtx gen_sse_ucomi (rtx, rtx); extern rtx gen_sse_unpckhps (rtx, rtx, rtx); extern rtx gen_sse_unpcklps (rtx, rtx, rtx); extern rtx gen_smaxv4sf3 (rtx, rtx, rtx); extern rtx gen_vmsmaxv4sf3 (rtx, rtx, rtx); extern rtx gen_sminv4sf3 (rtx, rtx, rtx); extern rtx gen_vmsminv4sf3 (rtx, rtx, rtx); extern rtx gen_cvtpi2ps (rtx, rtx, rtx); extern rtx gen_cvtps2pi (rtx, rtx); extern rtx gen_cvttps2pi (rtx, rtx); extern rtx gen_cvtsi2ss (rtx, rtx, rtx); static __inline__ rtx gen_cvtsi2ssq (rtx, rtx, rtx); static __inline__ rtx gen_cvtsi2ssq(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) { return 0; } extern rtx gen_cvtss2si (rtx, rtx); extern rtx gen_cvtss2siq (rtx, rtx); extern rtx gen_cvttss2si (rtx, rtx); static __inline__ rtx gen_cvttss2siq (rtx, rtx); static __inline__ rtx gen_cvttss2siq(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) { return 0; } extern rtx gen_addv8qi3 (rtx, rtx, rtx); extern rtx gen_addv4hi3 (rtx, rtx, rtx); extern rtx gen_addv2si3 (rtx, rtx, rtx); extern rtx gen_mmx_adddi3 (rtx, rtx, rtx); extern rtx gen_ssaddv8qi3 (rtx, rtx, rtx); extern rtx gen_ssaddv4hi3 (rtx, rtx, rtx); extern rtx gen_usaddv8qi3 (rtx, rtx, rtx); extern rtx gen_usaddv4hi3 (rtx, rtx, rtx); extern rtx gen_subv8qi3 (rtx, rtx, rtx); extern rtx gen_subv4hi3 (rtx, rtx, rtx); extern rtx gen_subv2si3 (rtx, rtx, rtx); extern rtx gen_mmx_subdi3 (rtx, rtx, rtx); extern rtx gen_sssubv8qi3 (rtx, rtx, rtx); extern rtx gen_sssubv4hi3 (rtx, rtx, rtx); extern rtx gen_ussubv8qi3 (rtx, rtx, rtx); extern rtx gen_ussubv4hi3 (rtx, rtx, rtx); extern rtx gen_mulv4hi3 (rtx, rtx, rtx); extern rtx gen_smulv4hi3_highpart (rtx, rtx, rtx); extern rtx gen_umulv4hi3_highpart (rtx, rtx, rtx); extern rtx gen_mmx_pmaddwd (rtx, rtx, rtx); extern rtx gen_mmx_iordi3 (rtx, rtx, rtx); extern rtx gen_mmx_xordi3 (rtx, rtx, rtx); extern rtx gen_mmx_clrdi (rtx); extern rtx gen_mmx_anddi3 (rtx, rtx, rtx); extern rtx gen_mmx_nanddi3 (rtx, rtx, rtx); extern rtx gen_mmx_uavgv8qi3 (rtx, rtx, rtx); extern rtx gen_mmx_uavgv4hi3 (rtx, rtx, rtx); extern rtx gen_mmx_psadbw (rtx, rtx, rtx); extern rtx gen_mmx_pinsrw (rtx, rtx, rtx, rtx); extern rtx gen_mmx_pextrw (rtx, rtx, rtx); extern rtx gen_mmx_pshufw (rtx, rtx, rtx); extern rtx gen_eqv8qi3 (rtx, rtx, rtx); extern rtx gen_eqv4hi3 (rtx, rtx, rtx); extern rtx gen_eqv2si3 (rtx, rtx, rtx); extern rtx gen_gtv8qi3 (rtx, rtx, rtx); extern rtx gen_gtv4hi3 (rtx, rtx, rtx); extern rtx gen_gtv2si3 (rtx, rtx, rtx); extern rtx gen_umaxv8qi3 (rtx, rtx, rtx); extern rtx gen_smaxv4hi3 (rtx, rtx, rtx); extern rtx gen_uminv8qi3 (rtx, rtx, rtx); extern rtx gen_sminv4hi3 (rtx, rtx, rtx); extern rtx gen_ashrv4hi3 (rtx, rtx, rtx); extern rtx gen_ashrv2si3 (rtx, rtx, rtx); extern rtx gen_lshrv4hi3 (rtx, rtx, rtx); extern rtx gen_lshrv2si3 (rtx, rtx, rtx); extern rtx gen_mmx_lshrdi3 (rtx, rtx, rtx); extern rtx gen_ashlv4hi3 (rtx, rtx, rtx); extern rtx gen_ashlv2si3 (rtx, rtx, rtx); extern rtx gen_mmx_ashldi3 (rtx, rtx, rtx); extern rtx gen_mmx_packsswb (rtx, rtx, rtx); extern rtx gen_mmx_packssdw (rtx, rtx, rtx); extern rtx gen_mmx_packuswb (rtx, rtx, rtx); extern rtx gen_mmx_punpckhbw (rtx, rtx, rtx); extern rtx gen_mmx_punpckhwd (rtx, rtx, rtx); extern rtx gen_mmx_punpckhdq (rtx, rtx, rtx); extern rtx gen_mmx_punpcklbw (rtx, rtx, rtx); extern rtx gen_mmx_punpcklwd (rtx, rtx, rtx); extern rtx gen_mmx_punpckldq (rtx, rtx, rtx); extern rtx gen_emms (void); extern rtx gen_ldmxcsr (rtx); extern rtx gen_stmxcsr (rtx); extern rtx gen_addv2sf3 (rtx, rtx, rtx); extern rtx gen_subv2sf3 (rtx, rtx, rtx); extern rtx gen_subrv2sf3 (rtx, rtx, rtx); extern rtx gen_gtv2sf3 (rtx, rtx, rtx); extern rtx gen_gev2sf3 (rtx, rtx, rtx); extern rtx gen_eqv2sf3 (rtx, rtx, rtx); extern rtx gen_pfmaxv2sf3 (rtx, rtx, rtx); extern rtx gen_pfminv2sf3 (rtx, rtx, rtx); extern rtx gen_mulv2sf3 (rtx, rtx, rtx); extern rtx gen_femms (void); extern rtx gen_pf2id (rtx, rtx); extern rtx gen_pf2iw (rtx, rtx); extern rtx gen_pfacc (rtx, rtx, rtx); extern rtx gen_pfnacc (rtx, rtx, rtx); extern rtx gen_pfpnacc (rtx, rtx, rtx); extern rtx gen_pi2fw (rtx, rtx); extern rtx gen_floatv2si2 (rtx, rtx); extern rtx gen_pavgusb (rtx, rtx, rtx); extern rtx gen_pfrcpv2sf2 (rtx, rtx); extern rtx gen_pfrcpit1v2sf3 (rtx, rtx, rtx); extern rtx gen_pfrcpit2v2sf3 (rtx, rtx, rtx); extern rtx gen_pfrsqrtv2sf2 (rtx, rtx); extern rtx gen_pfrsqit1v2sf3 (rtx, rtx, rtx); extern rtx gen_pmulhrwv4hi3 (rtx, rtx, rtx); extern rtx gen_pswapdv2si2 (rtx, rtx); extern rtx gen_pswapdv2sf2 (rtx, rtx); extern rtx gen_addv2df3 (rtx, rtx, rtx); extern rtx gen_vmaddv2df3 (rtx, rtx, rtx); extern rtx gen_subv2df3 (rtx, rtx, rtx); extern rtx gen_vmsubv2df3 (rtx, rtx, rtx); extern rtx gen_mulv2df3 (rtx, rtx, rtx); extern rtx gen_vmmulv2df3 (rtx, rtx, rtx); extern rtx gen_divv2df3 (rtx, rtx, rtx); extern rtx gen_vmdivv2df3 (rtx, rtx, rtx); extern rtx gen_smaxv2df3 (rtx, rtx, rtx); extern rtx gen_vmsmaxv2df3 (rtx, rtx, rtx); extern rtx gen_sminv2df3 (rtx, rtx, rtx); extern rtx gen_vmsminv2df3 (rtx, rtx, rtx); extern rtx gen_sqrtv2df2 (rtx, rtx); extern rtx gen_vmsqrtv2df2 (rtx, rtx, rtx); extern rtx gen_maskcmpv2df3 (rtx, rtx, rtx, rtx); extern rtx gen_maskncmpv2df3 (rtx, rtx, rtx, rtx); extern rtx gen_vmmaskcmpv2df3 (rtx, rtx, rtx, rtx); extern rtx gen_vmmaskncmpv2df3 (rtx, rtx, rtx, rtx); extern rtx gen_sse2_comi (rtx, rtx); extern rtx gen_sse2_ucomi (rtx, rtx); extern rtx gen_sse2_movmskpd (rtx, rtx); extern rtx gen_sse2_pmovmskb (rtx, rtx); extern rtx gen_sse2_maskmovdqu (rtx, rtx, rtx); extern rtx gen_sse2_maskmovdqu_rex64 (rtx, rtx, rtx); extern rtx gen_sse2_movntv2df (rtx, rtx); extern rtx gen_sse2_movntv2di (rtx, rtx); extern rtx gen_sse2_movntsi (rtx, rtx); extern rtx gen_cvtdq2ps (rtx, rtx); extern rtx gen_cvtps2dq (rtx, rtx); extern rtx gen_cvttps2dq (rtx, rtx); extern rtx gen_cvtdq2pd (rtx, rtx); extern rtx gen_cvtpd2dq (rtx, rtx); extern rtx gen_cvttpd2dq (rtx, rtx); extern rtx gen_cvtpd2pi (rtx, rtx); extern rtx gen_cvttpd2pi (rtx, rtx); extern rtx gen_cvtpi2pd (rtx, rtx); extern rtx gen_cvtsd2si (rtx, rtx); static __inline__ rtx gen_cvtsd2siq (rtx, rtx); static __inline__ rtx gen_cvtsd2siq(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) { return 0; } extern rtx gen_cvttsd2si (rtx, rtx); static __inline__ rtx gen_cvttsd2siq (rtx, rtx); static __inline__ rtx gen_cvttsd2siq(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) { return 0; } extern rtx gen_cvtsi2sd (rtx, rtx, rtx); static __inline__ rtx gen_cvtsi2sdq (rtx, rtx, rtx); static __inline__ rtx gen_cvtsi2sdq(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) { return 0; } extern rtx gen_cvtsd2ss (rtx, rtx, rtx); extern rtx gen_cvtss2sd (rtx, rtx, rtx); extern rtx gen_cvtpd2ps (rtx, rtx); extern rtx gen_cvtps2pd (rtx, rtx); extern rtx gen_addv16qi3 (rtx, rtx, rtx); extern rtx gen_addv8hi3 (rtx, rtx, rtx); extern rtx gen_addv4si3 (rtx, rtx, rtx); extern rtx gen_addv2di3 (rtx, rtx, rtx); extern rtx gen_ssaddv16qi3 (rtx, rtx, rtx); extern rtx gen_ssaddv8hi3 (rtx, rtx, rtx); extern rtx gen_usaddv16qi3 (rtx, rtx, rtx); extern rtx gen_usaddv8hi3 (rtx, rtx, rtx); extern rtx gen_subv16qi3 (rtx, rtx, rtx); extern rtx gen_subv8hi3 (rtx, rtx, rtx); extern rtx gen_subv4si3 (rtx, rtx, rtx); extern rtx gen_subv2di3 (rtx, rtx, rtx); extern rtx gen_sssubv16qi3 (rtx, rtx, rtx); extern rtx gen_sssubv8hi3 (rtx, rtx, rtx); extern rtx gen_ussubv16qi3 (rtx, rtx, rtx); extern rtx gen_ussubv8hi3 (rtx, rtx, rtx); extern rtx gen_mulv8hi3 (rtx, rtx, rtx); extern rtx gen_smulv8hi3_highpart (rtx, rtx, rtx); extern rtx gen_umulv8hi3_highpart (rtx, rtx, rtx); extern rtx gen_sse2_umulsidi3 (rtx, rtx, rtx); extern rtx gen_sse2_umulv2siv2di3 (rtx, rtx, rtx); extern rtx gen_sse2_pmaddwd (rtx, rtx, rtx); extern rtx gen_sse2_clrti (rtx); extern rtx gen_sse2_uavgv16qi3 (rtx, rtx, rtx); extern rtx gen_sse2_uavgv8hi3 (rtx, rtx, rtx); extern rtx gen_sse2_psadbw (rtx, rtx, rtx); extern rtx gen_sse2_pinsrw (rtx, rtx, rtx, rtx); extern rtx gen_sse2_pextrw (rtx, rtx, rtx); extern rtx gen_sse2_pshufd (rtx, rtx, rtx); extern rtx gen_sse2_pshuflw (rtx, rtx, rtx); extern rtx gen_sse2_pshufhw (rtx, rtx, rtx); extern rtx gen_eqv16qi3 (rtx, rtx, rtx); extern rtx gen_eqv8hi3 (rtx, rtx, rtx); extern rtx gen_eqv4si3 (rtx, rtx, rtx); extern rtx gen_gtv16qi3 (rtx, rtx, rtx); extern rtx gen_gtv8hi3 (rtx, rtx, rtx); extern rtx gen_gtv4si3 (rtx, rtx, rtx); extern rtx gen_umaxv16qi3 (rtx, rtx, rtx); extern rtx gen_smaxv8hi3 (rtx, rtx, rtx); extern rtx gen_uminv16qi3 (rtx, rtx, rtx); extern rtx gen_sminv8hi3 (rtx, rtx, rtx); extern rtx gen_ashrv8hi3 (rtx, rtx, rtx); extern rtx gen_ashrv4si3 (rtx, rtx, rtx); extern rtx gen_lshrv8hi3 (rtx, rtx, rtx); extern rtx gen_lshrv4si3 (rtx, rtx, rtx); extern rtx gen_lshrv2di3 (rtx, rtx, rtx); extern rtx gen_ashlv8hi3 (rtx, rtx, rtx); extern rtx gen_ashlv4si3 (rtx, rtx, rtx); extern rtx gen_ashlv2di3 (rtx, rtx, rtx); extern rtx gen_ashrv8hi3_ti (rtx, rtx, rtx); extern rtx gen_ashrv4si3_ti (rtx, rtx, rtx); extern rtx gen_lshrv8hi3_ti (rtx, rtx, rtx); extern rtx gen_lshrv4si3_ti (rtx, rtx, rtx); extern rtx gen_lshrv2di3_ti (rtx, rtx, rtx); extern rtx gen_ashlv8hi3_ti (rtx, rtx, rtx); extern rtx gen_ashlv4si3_ti (rtx, rtx, rtx); extern rtx gen_ashlv2di3_ti (rtx, rtx, rtx); extern rtx gen_sse2_ashlti3 (rtx, rtx, rtx); extern rtx gen_sse2_lshrti3 (rtx, rtx, rtx); extern rtx gen_sse2_unpckhpd (rtx, rtx, rtx); extern rtx gen_sse2_unpcklpd (rtx, rtx, rtx); extern rtx gen_sse2_packsswb (rtx, rtx, rtx); extern rtx gen_sse2_packssdw (rtx, rtx, rtx); extern rtx gen_sse2_packuswb (rtx, rtx, rtx); extern rtx gen_sse2_punpckhbw (rtx, rtx, rtx); extern rtx gen_sse2_punpckhwd (rtx, rtx, rtx); extern rtx gen_sse2_punpckhdq (rtx, rtx, rtx); extern rtx gen_sse2_punpcklbw (rtx, rtx, rtx); extern rtx gen_sse2_punpcklwd (rtx, rtx, rtx); extern rtx gen_sse2_punpckldq (rtx, rtx, rtx); extern rtx gen_sse2_punpcklqdq (rtx, rtx, rtx); extern rtx gen_sse2_punpckhqdq (rtx, rtx, rtx); extern rtx gen_sse2_movapd (rtx, rtx); extern rtx gen_sse2_movupd (rtx, rtx); extern rtx gen_sse2_movdqa (rtx, rtx); extern rtx gen_sse2_movdqu (rtx, rtx); extern rtx gen_sse2_movdq2q (rtx, rtx); static __inline__ rtx gen_sse2_movdq2q_rex64 (rtx, rtx); static __inline__ rtx gen_sse2_movdq2q_rex64(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) { return 0; } extern rtx gen_sse2_movq2dq (rtx, rtx); static __inline__ rtx gen_sse2_movq2dq_rex64 (rtx, rtx); static __inline__ rtx gen_sse2_movq2dq_rex64(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) { return 0; } extern rtx gen_sse2_movq (rtx, rtx); extern rtx gen_sse2_loadd (rtx, rtx); extern rtx gen_sse2_stored (rtx, rtx); extern rtx gen_sse2_movhpd (rtx, rtx, rtx); extern rtx gen_sse2_loadsd_1 (rtx, rtx, rtx); extern rtx gen_sse2_movsd (rtx, rtx, rtx); extern rtx gen_sse2_storesd (rtx, rtx); extern rtx gen_sse2_shufpd (rtx, rtx, rtx, rtx); extern rtx gen_sse2_clflush (rtx); extern rtx gen_mwait (rtx, rtx); extern rtx gen_monitor (rtx, rtx, rtx); extern rtx gen_addsubv4sf3 (rtx, rtx, rtx); extern rtx gen_addsubv2df3 (rtx, rtx, rtx); extern rtx gen_haddv4sf3 (rtx, rtx, rtx); extern rtx gen_haddv2df3 (rtx, rtx, rtx); extern rtx gen_hsubv4sf3 (rtx, rtx, rtx); extern rtx gen_hsubv2df3 (rtx, rtx, rtx); extern rtx gen_movshdup (rtx, rtx); extern rtx gen_movsldup (rtx, rtx); extern rtx gen_lddqu (rtx, rtx); extern rtx gen_loadddup (rtx, rtx); extern rtx gen_movddup (rtx, rtx); extern rtx gen_cmpdi (rtx, rtx); extern rtx gen_cmpsi (rtx, rtx); extern rtx gen_cmphi (rtx, rtx); extern rtx gen_cmpqi (rtx, rtx); static __inline__ rtx gen_cmpdi_1_rex64 (rtx, rtx); static __inline__ rtx gen_cmpdi_1_rex64(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) { return 0; } extern rtx gen_cmpsi_1 (rtx, rtx); extern rtx gen_cmpqi_ext_3 (rtx, rtx); extern rtx gen_cmpxf (rtx, rtx); extern rtx gen_cmpdf (rtx, rtx); extern rtx gen_cmpsf (rtx, rtx); extern rtx gen_movsi (rtx, rtx); extern rtx gen_movhi (rtx, rtx); extern rtx gen_movstricthi (rtx, rtx); extern rtx gen_movqi (rtx, rtx); extern rtx gen_reload_outqi (rtx, rtx, rtx); extern rtx gen_movstrictqi (rtx, rtx); extern rtx gen_movdi (rtx, rtx); extern rtx gen_movsf (rtx, rtx); extern rtx gen_movdf (rtx, rtx); extern rtx gen_movxf (rtx, rtx); extern rtx gen_zero_extendhisi2 (rtx, rtx); extern rtx gen_zero_extendqihi2 (rtx, rtx); extern rtx gen_zero_extendqisi2 (rtx, rtx); extern rtx gen_zero_extendsidi2 (rtx, rtx); extern rtx gen_extendsidi2 (rtx, rtx); extern rtx gen_extendsfdf2 (rtx, rtx); extern rtx gen_extendsfxf2 (rtx, rtx); extern rtx gen_extenddfxf2 (rtx, rtx); extern rtx gen_truncdfsf2 (rtx, rtx); extern rtx gen_truncxfsf2 (rtx, rtx); extern rtx gen_truncxfdf2 (rtx, rtx); extern rtx gen_fix_truncxfdi2 (rtx, rtx); extern rtx gen_fix_truncdfdi2 (rtx, rtx); extern rtx gen_fix_truncsfdi2 (rtx, rtx); extern rtx gen_fix_truncxfsi2 (rtx, rtx); extern rtx gen_fix_truncdfsi2 (rtx, rtx); extern rtx gen_fix_truncsfsi2 (rtx, rtx); extern rtx gen_fix_truncxfhi2 (rtx, rtx); extern rtx gen_fix_truncdfhi2 (rtx, rtx); extern rtx gen_fix_truncsfhi2 (rtx, rtx); extern rtx gen_floathisf2 (rtx, rtx); extern rtx gen_floatsisf2 (rtx, rtx); extern rtx gen_floatdisf2 (rtx, rtx); extern rtx gen_floathidf2 (rtx, rtx); extern rtx gen_floatsidf2 (rtx, rtx); extern rtx gen_floatdidf2 (rtx, rtx); extern rtx gen_floatunssisf2 (rtx, rtx); static __inline__ rtx gen_floatunsdisf2 (rtx, rtx); static __inline__ rtx gen_floatunsdisf2(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) { return 0; } static __inline__ rtx gen_floatunsdidf2 (rtx, rtx); static __inline__ rtx gen_floatunsdidf2(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) { return 0; } extern rtx gen_vec_setv2df (rtx, rtx, rtx); extern rtx gen_vec_extractv2df (rtx, rtx, rtx); extern rtx gen_vec_initv2df (rtx, rtx); extern rtx gen_vec_setv4sf (rtx, rtx, rtx); extern rtx gen_vec_extractv4sf (rtx, rtx, rtx); extern rtx gen_vec_initv4sf (rtx, rtx); extern rtx gen_adddi3 (rtx, rtx, rtx); extern rtx gen_addsi3 (rtx, rtx, rtx); extern rtx gen_addhi3 (rtx, rtx, rtx); extern rtx gen_addqi3 (rtx, rtx, rtx); extern rtx gen_addxf3 (rtx, rtx, rtx); extern rtx gen_adddf3 (rtx, rtx, rtx); extern rtx gen_addsf3 (rtx, rtx, rtx); extern rtx gen_subdi3 (rtx, rtx, rtx); extern rtx gen_subsi3 (rtx, rtx, rtx); extern rtx gen_subhi3 (rtx, rtx, rtx); extern rtx gen_subqi3 (rtx, rtx, rtx); extern rtx gen_subxf3 (rtx, rtx, rtx); extern rtx gen_subdf3 (rtx, rtx, rtx); extern rtx gen_subsf3 (rtx, rtx, rtx); static __inline__ rtx gen_muldi3 (rtx, rtx, rtx); static __inline__ rtx gen_muldi3(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) { return 0; } extern rtx gen_mulsi3 (rtx, rtx, rtx); extern rtx gen_mulhi3 (rtx, rtx, rtx); extern rtx gen_mulqi3 (rtx, rtx, rtx); extern rtx gen_umulqihi3 (rtx, rtx, rtx); extern rtx gen_mulqihi3 (rtx, rtx, rtx); static __inline__ rtx gen_umulditi3 (rtx, rtx, rtx); static __inline__ rtx gen_umulditi3(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) { return 0; } extern rtx gen_umulsidi3 (rtx, rtx, rtx); static __inline__ rtx gen_mulditi3 (rtx, rtx, rtx); static __inline__ rtx gen_mulditi3(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) { return 0; } extern rtx gen_mulsidi3 (rtx, rtx, rtx); static __inline__ rtx gen_umuldi3_highpart (rtx, rtx, rtx); static __inline__ rtx gen_umuldi3_highpart(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) { return 0; } extern rtx gen_umulsi3_highpart (rtx, rtx, rtx); static __inline__ rtx gen_smuldi3_highpart (rtx, rtx, rtx); static __inline__ rtx gen_smuldi3_highpart(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) { return 0; } extern rtx gen_smulsi3_highpart (rtx, rtx, rtx); extern rtx gen_mulxf3 (rtx, rtx, rtx); extern rtx gen_muldf3 (rtx, rtx, rtx); extern rtx gen_mulsf3 (rtx, rtx, rtx); extern rtx gen_divxf3 (rtx, rtx, rtx); extern rtx gen_divdf3 (rtx, rtx, rtx); extern rtx gen_divsf3 (rtx, rtx, rtx); static __inline__ rtx gen_divmoddi4 (rtx, rtx, rtx, rtx); static __inline__ rtx gen_divmoddi4(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__)), rtx d __attribute__ ((__unused__))) { return 0; } extern rtx gen_divmodsi4 (rtx, rtx, rtx, rtx); extern rtx gen_udivmodhi4 (rtx, rtx, rtx, rtx); extern rtx gen_testsi_ccno_1 (rtx, rtx); extern rtx gen_testqi_ccz_1 (rtx, rtx); extern rtx gen_testqi_ext_ccno_0 (rtx, rtx); static __inline__ rtx gen_anddi3 (rtx, rtx, rtx); static __inline__ rtx gen_anddi3(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) { return 0; } extern rtx gen_andsi3 (rtx, rtx, rtx); extern rtx gen_andhi3 (rtx, rtx, rtx); extern rtx gen_andqi3 (rtx, rtx, rtx); static __inline__ rtx gen_iordi3 (rtx, rtx, rtx); static __inline__ rtx gen_iordi3(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) { return 0; } extern rtx gen_iorsi3 (rtx, rtx, rtx); extern rtx gen_iorhi3 (rtx, rtx, rtx); extern rtx gen_iorqi3 (rtx, rtx, rtx); static __inline__ rtx gen_xordi3 (rtx, rtx, rtx); static __inline__ rtx gen_xordi3(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) { return 0; } extern rtx gen_xorsi3 (rtx, rtx, rtx); extern rtx gen_xorhi3 (rtx, rtx, rtx); extern rtx gen_xorqi3 (rtx, rtx, rtx); extern rtx gen_xorqi_cc_ext_1 (rtx, rtx, rtx); extern rtx gen_negdi2 (rtx, rtx); extern rtx gen_negsi2 (rtx, rtx); extern rtx gen_neghi2 (rtx, rtx); extern rtx gen_negqi2 (rtx, rtx); extern rtx gen_negsf2 (rtx, rtx); extern rtx gen_negdf2 (rtx, rtx); extern rtx gen_negxf2 (rtx, rtx); extern rtx gen_abssf2 (rtx, rtx); extern rtx gen_absdf2 (rtx, rtx); extern rtx gen_absxf2 (rtx, rtx); static __inline__ rtx gen_one_cmpldi2 (rtx, rtx); static __inline__ rtx gen_one_cmpldi2(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) { return 0; } extern rtx gen_one_cmplsi2 (rtx, rtx); extern rtx gen_one_cmplhi2 (rtx, rtx); extern rtx gen_one_cmplqi2 (rtx, rtx); extern rtx gen_ashldi3 (rtx, rtx, rtx); extern rtx gen_x86_shift_adj_1 (rtx, rtx, rtx, rtx); extern rtx gen_x86_shift_adj_2 (rtx, rtx, rtx); extern rtx gen_ashlsi3 (rtx, rtx, rtx); extern rtx gen_ashlhi3 (rtx, rtx, rtx); extern rtx gen_ashlqi3 (rtx, rtx, rtx); extern rtx gen_ashrdi3 (rtx, rtx, rtx); extern rtx gen_x86_shift_adj_3 (rtx, rtx, rtx); extern rtx gen_ashrsi3 (rtx, rtx, rtx); extern rtx gen_ashrhi3 (rtx, rtx, rtx); extern rtx gen_ashrqi3 (rtx, rtx, rtx); extern rtx gen_lshrdi3 (rtx, rtx, rtx); extern rtx gen_lshrsi3 (rtx, rtx, rtx); extern rtx gen_lshrhi3 (rtx, rtx, rtx); extern rtx gen_lshrqi3 (rtx, rtx, rtx); static __inline__ rtx gen_rotldi3 (rtx, rtx, rtx); static __inline__ rtx gen_rotldi3(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) { return 0; } extern rtx gen_rotlsi3 (rtx, rtx, rtx); extern rtx gen_rotlhi3 (rtx, rtx, rtx); extern rtx gen_rotlqi3 (rtx, rtx, rtx); static __inline__ rtx gen_rotrdi3 (rtx, rtx, rtx); static __inline__ rtx gen_rotrdi3(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) { return 0; } extern rtx gen_rotrsi3 (rtx, rtx, rtx); extern rtx gen_rotrhi3 (rtx, rtx, rtx); extern rtx gen_rotrqi3 (rtx, rtx, rtx); extern rtx gen_extv (rtx, rtx, rtx, rtx); extern rtx gen_extzv (rtx, rtx, rtx, rtx); extern rtx gen_insv (rtx, rtx, rtx, rtx); extern rtx gen_seq (rtx); extern rtx gen_sne (rtx); extern rtx gen_sgt (rtx); extern rtx gen_sgtu (rtx); extern rtx gen_slt (rtx); extern rtx gen_sltu (rtx); extern rtx gen_sge (rtx); extern rtx gen_sgeu (rtx); extern rtx gen_sle (rtx); extern rtx gen_sleu (rtx); extern rtx gen_sunordered (rtx); extern rtx gen_sordered (rtx); extern rtx gen_suneq (rtx); extern rtx gen_sunge (rtx); extern rtx gen_sungt (rtx); extern rtx gen_sunle (rtx); extern rtx gen_sunlt (rtx); extern rtx gen_sltgt (rtx); extern rtx gen_beq (rtx); extern rtx gen_bne (rtx); extern rtx gen_bgt (rtx); extern rtx gen_bgtu (rtx); extern rtx gen_blt (rtx); extern rtx gen_bltu (rtx); extern rtx gen_bge (rtx); extern rtx gen_bgeu (rtx); extern rtx gen_ble (rtx); extern rtx gen_bleu (rtx); extern rtx gen_bunordered (rtx); extern rtx gen_bordered (rtx); extern rtx gen_buneq (rtx); extern rtx gen_bunge (rtx); extern rtx gen_bungt (rtx); extern rtx gen_bunle (rtx); extern rtx gen_bunlt (rtx); extern rtx gen_bltgt (rtx); extern rtx gen_indirect_jump (rtx); extern rtx gen_tablejump (rtx, rtx); extern rtx gen_doloop_end (rtx, rtx, rtx, rtx, rtx); extern rtx gen_call_pop (rtx, rtx, rtx, rtx); extern rtx gen_call (rtx, rtx, rtx); extern rtx gen_sibcall (rtx, rtx, rtx); extern rtx gen_call_value_pop (rtx, rtx, rtx, rtx, rtx); extern rtx gen_call_value (rtx, rtx, rtx, rtx); extern rtx gen_sibcall_value (rtx, rtx, rtx, rtx); extern rtx gen_untyped_call (rtx, rtx, rtx); extern rtx gen_return (void); extern rtx gen_prologue (void); extern rtx gen_epilogue (void); extern rtx gen_sibcall_epilogue (void); extern rtx gen_eh_return (rtx); extern rtx gen_ffssi2 (rtx, rtx); static __inline__ rtx gen_ffsdi2 (rtx, rtx); static __inline__ rtx gen_ffsdi2(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) { return 0; } extern rtx gen_clzsi2 (rtx, rtx); static __inline__ rtx gen_clzdi2 (rtx, rtx); static __inline__ rtx gen_clzdi2(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) { return 0; } extern rtx gen_tls_global_dynamic_32 (rtx, rtx); extern rtx gen_tls_global_dynamic_64 (rtx, rtx); extern rtx gen_tls_local_dynamic_base_32 (rtx); extern rtx gen_tls_local_dynamic_base_64 (rtx); extern rtx gen_sqrtsf2 (rtx, rtx); extern rtx gen_sqrtdf2 (rtx, rtx); extern rtx gen_fmodsf3 (rtx, rtx, rtx); extern rtx gen_fmoddf3 (rtx, rtx, rtx); extern rtx gen_fmodxf3 (rtx, rtx, rtx); extern rtx gen_dremsf3 (rtx, rtx, rtx); extern rtx gen_dremdf3 (rtx, rtx, rtx); extern rtx gen_dremxf3 (rtx, rtx, rtx); extern rtx gen_tandf2 (rtx, rtx); extern rtx gen_tansf2 (rtx, rtx); extern rtx gen_tanxf2 (rtx, rtx); extern rtx gen_atan2df3 (rtx, rtx, rtx); extern rtx gen_atandf2 (rtx, rtx); extern rtx gen_atan2sf3 (rtx, rtx, rtx); extern rtx gen_atansf2 (rtx, rtx); extern rtx gen_atan2xf3 (rtx, rtx, rtx); extern rtx gen_atanxf2 (rtx, rtx); extern rtx gen_asindf2 (rtx, rtx); extern rtx gen_asinsf2 (rtx, rtx); extern rtx gen_asinxf2 (rtx, rtx); extern rtx gen_acosdf2 (rtx, rtx); extern rtx gen_acossf2 (rtx, rtx); extern rtx gen_acosxf2 (rtx, rtx); extern rtx gen_logsf2 (rtx, rtx); extern rtx gen_logdf2 (rtx, rtx); extern rtx gen_logxf2 (rtx, rtx); extern rtx gen_log10sf2 (rtx, rtx); extern rtx gen_log10df2 (rtx, rtx); extern rtx gen_log10xf2 (rtx, rtx); extern rtx gen_log2sf2 (rtx, rtx); extern rtx gen_log2df2 (rtx, rtx); extern rtx gen_log2xf2 (rtx, rtx); extern rtx gen_log1psf2 (rtx, rtx); extern rtx gen_log1pdf2 (rtx, rtx); extern rtx gen_log1pxf2 (rtx, rtx); extern rtx gen_logbsf2 (rtx, rtx); extern rtx gen_logbdf2 (rtx, rtx); extern rtx gen_logbxf2 (rtx, rtx); extern rtx gen_ilogbsi2 (rtx, rtx, rtx, rtx); extern rtx gen_expsf2 (rtx, rtx); extern rtx gen_expdf2 (rtx, rtx); extern rtx gen_expxf2 (rtx, rtx); extern rtx gen_exp10sf2 (rtx, rtx); extern rtx gen_exp10df2 (rtx, rtx); extern rtx gen_exp10xf2 (rtx, rtx); extern rtx gen_exp2sf2 (rtx, rtx); extern rtx gen_exp2df2 (rtx, rtx); extern rtx gen_exp2xf2 (rtx, rtx); extern rtx gen_expm1df2 (rtx, rtx); extern rtx gen_expm1sf2 (rtx, rtx); extern rtx gen_expm1xf2 (rtx, rtx); extern rtx gen_rintdf2 (rtx, rtx); extern rtx gen_rintsf2 (rtx, rtx); extern rtx gen_rintxf2 (rtx, rtx); extern rtx gen_floordf2 (rtx, rtx); extern rtx gen_floorsf2 (rtx, rtx); extern rtx gen_floorxf2 (rtx, rtx); extern rtx gen_ceildf2 (rtx, rtx); extern rtx gen_ceilsf2 (rtx, rtx); extern rtx gen_ceilxf2 (rtx, rtx); extern rtx gen_btruncdf2 (rtx, rtx); extern rtx gen_btruncsf2 (rtx, rtx); extern rtx gen_btruncxf2 (rtx, rtx); extern rtx gen_nearbyintdf2 (rtx, rtx); extern rtx gen_nearbyintsf2 (rtx, rtx); extern rtx gen_nearbyintxf2 (rtx, rtx); extern rtx gen_movmemsi (rtx, rtx, rtx, rtx); static __inline__ rtx gen_movmemdi (rtx, rtx, rtx, rtx); static __inline__ rtx gen_movmemdi(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__)), rtx d __attribute__ ((__unused__))) { return 0; } extern rtx gen_strmov (rtx, rtx, rtx, rtx); extern rtx gen_strmov_singleop (rtx, rtx, rtx, rtx, rtx, rtx); extern rtx gen_rep_mov (rtx, rtx, rtx, rtx, rtx, rtx, rtx); extern rtx gen_clrmemsi (rtx, rtx, rtx); static __inline__ rtx gen_clrmemdi (rtx, rtx, rtx); static __inline__ rtx gen_clrmemdi(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) { return 0; } extern rtx gen_strset (rtx, rtx, rtx); extern rtx gen_strset_singleop (rtx, rtx, rtx, rtx); extern rtx gen_rep_stos (rtx, rtx, rtx, rtx, rtx); extern rtx gen_cmpstrsi (rtx, rtx, rtx, rtx, rtx); extern rtx gen_cmpintqi (rtx); extern rtx gen_cmpstrqi_nz_1 (rtx, rtx, rtx, rtx, rtx, rtx); extern rtx gen_cmpstrqi_1 (rtx, rtx, rtx, rtx, rtx, rtx); extern rtx gen_strlensi (rtx, rtx, rtx, rtx); extern rtx gen_strlendi (rtx, rtx, rtx, rtx); extern rtx gen_strlenqi_1 (rtx, rtx, rtx); static __inline__ rtx gen_movdicc (rtx, rtx, rtx, rtx); static __inline__ rtx gen_movdicc(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__)), rtx d __attribute__ ((__unused__))) { return 0; } extern rtx gen_movsicc (rtx, rtx, rtx, rtx); extern rtx gen_movhicc (rtx, rtx, rtx, rtx); extern rtx gen_movqicc (rtx, rtx, rtx, rtx); extern rtx gen_movsfcc (rtx, rtx, rtx, rtx); extern rtx gen_movdfcc (rtx, rtx, rtx, rtx); extern rtx gen_movxfcc (rtx, rtx, rtx, rtx); extern rtx gen_minsf3 (rtx, rtx, rtx); extern rtx gen_addqicc (rtx, rtx, rtx, rtx); extern rtx gen_addhicc (rtx, rtx, rtx, rtx); extern rtx gen_addsicc (rtx, rtx, rtx, rtx); static __inline__ rtx gen_adddicc (rtx, rtx, rtx, rtx); static __inline__ rtx gen_adddicc(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__)), rtx d __attribute__ ((__unused__))) { return 0; } extern rtx gen_mindf3 (rtx, rtx, rtx); extern rtx gen_maxsf3 (rtx, rtx, rtx); extern rtx gen_maxdf3 (rtx, rtx, rtx); extern rtx gen_allocate_stack_worker (rtx); extern rtx gen_allocate_stack_worker_postreload (rtx); extern rtx gen_allocate_stack_worker_rex64_postreload (rtx); extern rtx gen_allocate_stack (rtx, rtx); extern rtx gen_builtin_setjmp_receiver (rtx); extern rtx gen_conditional_trap (rtx, rtx); extern rtx gen_movti (rtx, rtx); static __inline__ rtx gen_movtf (rtx, rtx); static __inline__ rtx gen_movtf(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) { return 0; } extern rtx gen_movv2df (rtx, rtx); extern rtx gen_movv8hi (rtx, rtx); extern rtx gen_movv16qi (rtx, rtx); extern rtx gen_movv4sf (rtx, rtx); extern rtx gen_movv4si (rtx, rtx); extern rtx gen_movv2di (rtx, rtx); extern rtx gen_movv2si (rtx, rtx); extern rtx gen_movv4hi (rtx, rtx); extern rtx gen_movv8qi (rtx, rtx); extern rtx gen_movv2sf (rtx, rtx); extern rtx gen_sse_movaps (rtx, rtx); extern rtx gen_sse_movups (rtx, rtx); extern rtx gen_sse_loadss (rtx, rtx); extern rtx gen_negv4sf2 (rtx, rtx); extern rtx gen_sse_andv4sf3 (rtx, rtx, rtx); extern rtx gen_sse_nandv4sf3 (rtx, rtx, rtx); extern rtx gen_sse_iorv4sf3 (rtx, rtx, rtx); extern rtx gen_sse_xorv4sf3 (rtx, rtx, rtx); extern rtx gen_sse2_andv2df3 (rtx, rtx, rtx); extern rtx gen_sse2_nandv2df3 (rtx, rtx, rtx); extern rtx gen_sse2_iorv2df3 (rtx, rtx, rtx); extern rtx gen_sse2_xorv2df3 (rtx, rtx, rtx); extern rtx gen_sfence (void); static __inline__ rtx gen_sse_prologue_save (rtx, rtx, rtx, rtx); static __inline__ rtx gen_sse_prologue_save(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__)), rtx d __attribute__ ((__unused__))) { return 0; } extern rtx gen_prefetch (rtx, rtx, rtx); extern rtx gen_sse2_loadsd (rtx, rtx); extern rtx gen_sse2_mfence (void); extern rtx gen_sse2_lfence (void); enum machine_mode { VOIDmode, BLKmode, CCmode, CCGCmode, CCGOCmode, CCNOmode, CCZmode, CCFPmode, CCFPUmode, BImode, QImode, HImode, SImode, DImode, TImode, SFmode, DFmode, XFmode, TFmode, CQImode, CHImode, CSImode, CDImode, CTImode, SCmode, DCmode, XCmode, TCmode, V4QImode, V2HImode, V8QImode, V4HImode, V2SImode, V16QImode, V8HImode, V4SImode, V2DImode, V8SImode, V4DImode, V2SFmode, V4SFmode, V2DFmode, MAX_MACHINE_MODE, MIN_MODE_RANDOM = VOIDmode, MAX_MODE_RANDOM = BLKmode, MIN_MODE_CC = CCmode, MAX_MODE_CC = CCFPUmode, MIN_MODE_INT = QImode, MAX_MODE_INT = TImode, MIN_MODE_PARTIAL_INT = VOIDmode, MAX_MODE_PARTIAL_INT = VOIDmode, MIN_MODE_FLOAT = SFmode, MAX_MODE_FLOAT = TFmode, MIN_MODE_COMPLEX_INT = CQImode, MAX_MODE_COMPLEX_INT = CTImode, MIN_MODE_COMPLEX_FLOAT = SCmode, MAX_MODE_COMPLEX_FLOAT = TCmode, MIN_MODE_VECTOR_INT = V4QImode, MAX_MODE_VECTOR_INT = V4DImode, MIN_MODE_VECTOR_FLOAT = V2SFmode, MAX_MODE_VECTOR_FLOAT = V2DFmode, NUM_MACHINE_MODES = MAX_MACHINE_MODE }; extern const char * const mode_name[NUM_MACHINE_MODES]; enum mode_class { MODE_RANDOM, MODE_CC, MODE_INT, MODE_PARTIAL_INT, MODE_FLOAT, MODE_COMPLEX_INT, MODE_COMPLEX_FLOAT, MODE_VECTOR_INT, MODE_VECTOR_FLOAT, MAX_MODE_CLASS }; extern const unsigned char mode_class[NUM_MACHINE_MODES]; extern unsigned char mode_size[NUM_MACHINE_MODES]; extern const unsigned short mode_precision[NUM_MACHINE_MODES]; extern const unsigned long mode_mask_array[NUM_MACHINE_MODES]; extern const unsigned char mode_inner[NUM_MACHINE_MODES]; extern const unsigned char mode_nunits[NUM_MACHINE_MODES]; extern const unsigned char mode_wider[NUM_MACHINE_MODES]; extern enum machine_mode mode_for_size (unsigned int, enum mode_class, int); extern enum machine_mode smallest_mode_for_size (unsigned int, enum mode_class); extern enum machine_mode int_mode_for_mode (enum machine_mode); extern enum machine_mode get_best_mode (int, int, unsigned int, enum machine_mode, int); extern unsigned char mode_base_align[NUM_MACHINE_MODES]; extern unsigned get_mode_alignment (enum machine_mode); extern const unsigned char class_narrowest_mode[MAX_MODE_CLASS]; extern enum machine_mode byte_mode; extern enum machine_mode word_mode; extern enum machine_mode ptr_mode; extern void init_adjust_machine_modes (void); enum lc_reason {LC_ENTER = 0, LC_LEAVE, LC_RENAME}; typedef unsigned int source_location; struct line_map { const char *to_file; unsigned int to_line; source_location start_location; int included_from; __extension__ enum lc_reason reason : 8; unsigned char sysp; unsigned int column_bits : 8; }; struct line_maps { struct line_map *maps; unsigned int allocated; unsigned int used; unsigned int cache; int last_listed; unsigned int depth; unsigned char trace_includes; source_location highest_location; source_location highest_line; unsigned int max_column_hint; }; extern void linemap_init (struct line_maps *); extern void linemap_free (struct line_maps *); extern void linemap_check_files_exited (struct line_maps *); extern source_location linemap_line_start (struct line_maps *, unsigned int, unsigned int); extern const struct line_map *linemap_add (struct line_maps *, enum lc_reason, unsigned int sysp, const char *to_file, unsigned int to_line); extern const struct line_map *linemap_lookup (struct line_maps *, source_location); extern void linemap_print_containing_files (struct line_maps *, const struct line_map *); extern source_location linemap_position_for_column (struct line_maps *set, unsigned int to_column); extern struct line_maps line_table; struct location_s { const char *file; int line; }; typedef struct location_s expanded_location; typedef struct location_s location_t; typedef location_t *source_locus; extern location_t unknown_location; struct file_stack { struct file_stack *next; location_t location; }; extern const char *main_input_filename; extern location_t input_location; extern void push_srcloc (const char *name, int line); extern void pop_srcloc (void); extern struct file_stack *input_file_stack; extern int input_file_stack_tick; extern void *vec_gc_p_reserve (void *, int ); extern void *vec_gc_o_reserve (void *, int, size_t, size_t ); extern void vec_gc_free (void *); extern void *vec_heap_p_reserve (void *, int ); extern void *vec_heap_o_reserve (void *, int, size_t, size_t ); extern void vec_heap_free (void *); extern void vec_assert_fail (const char *, const char * ,const char *file_,unsigned line_,const char *function_) __attribute__ ((__noreturn__)); enum tree_code { ERROR_MARK, IDENTIFIER_NODE, TREE_LIST, TREE_VEC, BLOCK, VOID_TYPE, INTEGER_TYPE, REAL_TYPE, COMPLEX_TYPE, VECTOR_TYPE, ENUMERAL_TYPE, BOOLEAN_TYPE, CHAR_TYPE, POINTER_TYPE, OFFSET_TYPE, REFERENCE_TYPE, METHOD_TYPE, FILE_TYPE, ARRAY_TYPE, SET_TYPE, RECORD_TYPE, UNION_TYPE, QUAL_UNION_TYPE, FUNCTION_TYPE, LANG_TYPE, INTEGER_CST, REAL_CST, COMPLEX_CST, VECTOR_CST, STRING_CST, FUNCTION_DECL, LABEL_DECL, CONST_DECL, TYPE_DECL, VAR_DECL, PARM_DECL, RESULT_DECL, FIELD_DECL, NAMESPACE_DECL, TRANSLATION_UNIT_DECL, COMPONENT_REF, BIT_FIELD_REF, INDIRECT_REF, ARRAY_REF, ARRAY_RANGE_REF, OBJ_TYPE_REF, EXC_PTR_EXPR, FILTER_EXPR, CONSTRUCTOR, COMPOUND_EXPR, MODIFY_EXPR, INIT_EXPR, TARGET_EXPR, COND_EXPR, BIND_EXPR, LABELED_BLOCK_EXPR, CALL_EXPR, WITH_CLEANUP_EXPR, CLEANUP_POINT_EXPR, PLACEHOLDER_EXPR, PLUS_EXPR, MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, CEIL_DIV_EXPR, FLOOR_DIV_EXPR, ROUND_DIV_EXPR, TRUNC_MOD_EXPR, CEIL_MOD_EXPR, FLOOR_MOD_EXPR, ROUND_MOD_EXPR, RDIV_EXPR, EXACT_DIV_EXPR, FIX_TRUNC_EXPR, FIX_CEIL_EXPR, FIX_FLOOR_EXPR, FIX_ROUND_EXPR, FLOAT_EXPR, NEGATE_EXPR, MIN_EXPR, MAX_EXPR, ABS_EXPR, LSHIFT_EXPR, RSHIFT_EXPR, LROTATE_EXPR, RROTATE_EXPR, BIT_IOR_EXPR, BIT_XOR_EXPR, BIT_AND_EXPR, BIT_NOT_EXPR, TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR, TRUTH_AND_EXPR, TRUTH_OR_EXPR, TRUTH_XOR_EXPR, TRUTH_NOT_EXPR, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR, NE_EXPR, UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR, UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR, RANGE_EXPR, CONVERT_EXPR, NOP_EXPR, NON_LVALUE_EXPR, VIEW_CONVERT_EXPR, SAVE_EXPR, ADDR_EXPR, FDESC_EXPR, COMPLEX_EXPR, CONJ_EXPR, REALPART_EXPR, IMAGPART_EXPR, PREDECREMENT_EXPR, PREINCREMENT_EXPR, POSTDECREMENT_EXPR, POSTINCREMENT_EXPR, VA_ARG_EXPR, TRY_CATCH_EXPR, TRY_FINALLY_EXPR, DECL_EXPR, LABEL_EXPR, GOTO_EXPR, RETURN_EXPR, EXIT_EXPR, LOOP_EXPR, EXIT_BLOCK_EXPR, SWITCH_EXPR, CASE_LABEL_EXPR, RESX_EXPR, ASM_EXPR, SSA_NAME, PHI_NODE, CATCH_EXPR, EH_FILTER_EXPR, SCEV_KNOWN, SCEV_NOT_KNOWN, POLYNOMIAL_CHREC, STATEMENT_LIST, VALUE_HANDLE, TREE_BINFO, WITH_SIZE_EXPR, LAST_AND_UNUSED_TREE_CODE }; extern const char tree_code_type[]; extern const unsigned char tree_code_length[]; extern const char *const tree_code_name[]; typedef struct VEC_tree { unsigned num; unsigned alloc; tree vec[1]; } VEC_tree; static __inline__ unsigned VEC_tree_length (const VEC_tree *vec_) { return vec_ ? vec_->num : 0; } static __inline__ tree VEC_tree_last (const VEC_tree *vec_ ,const char *file_,unsigned line_,const char *function_) { (void)((vec_ && vec_->num) ? 0 : (vec_assert_fail ("last","VEC(tree)" ,file_,line_,function_), 0)); return vec_->vec[vec_->num - 1]; } static __inline__ tree VEC_tree_index (const VEC_tree *vec_, unsigned ix_ ,const char *file_,unsigned line_,const char *function_) { (void)((vec_ && ix_ < vec_->num) ? 0 : (vec_assert_fail ("index","VEC(tree)" ,file_,line_,function_), 0)); return vec_->vec[ix_]; } static __inline__ int VEC_tree_iterate (const VEC_tree *vec_, unsigned ix_, tree *ptr) { if (vec_ && ix_ < vec_->num) { *ptr = vec_->vec[ix_]; return 1; } else { *ptr = 0; return 0; } } static __inline__ VEC_tree *VEC_tree_alloc (int alloc_ ) { return (VEC_tree *) vec_gc_p_reserve (((void *)0), alloc_ - !alloc_ );} static __inline__ void VEC_tree_free (VEC_tree **vec_) { vec_gc_free (*vec_); *vec_ = ((void *)0); } static __inline__ size_t VEC_tree_embedded_size (int alloc_) { return __builtin_offsetof (VEC_tree, vec) + alloc_ * sizeof(tree); } static __inline__ void VEC_tree_embedded_init (VEC_tree *vec_, int alloc_) { vec_->num = 0; vec_->alloc = alloc_; } static __inline__ int VEC_tree_space (VEC_tree *vec_, int alloc_) { return vec_ ? ((vec_)->alloc - (vec_)->num < (unsigned)(alloc_ < 0 ? 1 : alloc_)) : alloc_ != 0; } static __inline__ int VEC_tree_reserve (VEC_tree **vec_, int alloc_ ) { int extend = VEC_tree_space (*vec_, alloc_); if (extend) *vec_ = (VEC_tree *) vec_gc_p_reserve (*vec_, alloc_ ); return extend; } static __inline__ tree *VEC_tree_quick_push (VEC_tree *vec_, tree obj_ ,const char *file_,unsigned line_,const char *function_) { tree *slot_; (void)((vec_->num < vec_->alloc) ? 0 : (vec_assert_fail ("push","VEC(tree)" ,file_,line_,function_), 0)); slot_ = &vec_->vec[vec_->num++]; *slot_ = obj_; return slot_; } static __inline__ tree *VEC_tree_safe_push (VEC_tree **vec_, tree obj_ ,const char *file_,unsigned line_,const char *function_ ) { VEC_tree_reserve (vec_, -1 ); return VEC_tree_quick_push (*vec_, obj_ ,file_,line_,function_); } static __inline__ tree VEC_tree_pop (VEC_tree *vec_ ,const char *file_,unsigned line_,const char *function_) { tree obj_; (void)((vec_->num) ? 0 : (vec_assert_fail ("pop","VEC(tree)" ,file_,line_,function_), 0)); obj_ = vec_->vec[--vec_->num]; return obj_; } static __inline__ void VEC_tree_truncate (VEC_tree *vec_, unsigned size_ ,const char *file_,unsigned line_,const char *function_) { (void)((vec_ ? vec_->num >= size_ : !size_) ? 0 : (vec_assert_fail ("truncate","VEC(tree)" ,file_,line_,function_), 0)); if (vec_) vec_->num = size_; } static __inline__ tree VEC_tree_replace (VEC_tree *vec_, unsigned ix_, tree obj_ ,const char *file_,unsigned line_,const char *function_) { tree old_obj_; (void)((ix_ < vec_->num) ? 0 : (vec_assert_fail ("replace","VEC(tree)" ,file_,line_,function_), 0)); old_obj_ = vec_->vec[ix_]; vec_->vec[ix_] = obj_; return old_obj_; } static __inline__ unsigned VEC_tree_lower_bound (VEC_tree *vec_, const tree obj_, unsigned char (*lessthan_)(const tree, const tree) ,const char *file_,unsigned line_,const char *function_) { unsigned int len_ = VEC_tree_length (vec_); unsigned int half_, middle_; unsigned int first_ = 0; while (len_ > 0) { tree middle_elem_; half_ = len_ >> 1; middle_ = first_; middle_ += half_; middle_elem_ = VEC_tree_index (vec_, middle_ ,file_,line_,function_); if (lessthan_ (middle_elem_, obj_)) { first_ = middle_; ++first_; len_ = len_ - half_ - 1; } else len_ = half_; } return first_; } static __inline__ tree *VEC_tree_quick_insert (VEC_tree *vec_, unsigned ix_, tree obj_ ,const char *file_,unsigned line_,const char *function_) { tree *slot_; (void)((vec_->num < vec_->alloc) ? 0 : (vec_assert_fail ("insert","VEC(tree)" ,file_,line_,function_), 0)); (void)((ix_ <= vec_->num) ? 0 : (vec_assert_fail ("insert","VEC(tree)" ,file_,line_,function_), 0)); slot_ = &vec_->vec[ix_]; memmove (slot_ + 1, slot_, (vec_->num++ - ix_) * sizeof (tree)); *slot_ = obj_; return slot_; } static __inline__ tree *VEC_tree_safe_insert (VEC_tree **vec_, unsigned ix_, tree obj_ ,const char *file_,unsigned line_,const char *function_ ) { VEC_tree_reserve (vec_, -1 ); return VEC_tree_quick_insert (*vec_, ix_, obj_ ,file_,line_,function_); } static __inline__ tree VEC_tree_ordered_remove (VEC_tree *vec_, unsigned ix_ ,const char *file_,unsigned line_,const char *function_) { tree *slot_; tree obj_; (void)((ix_ < vec_->num) ? 0 : (vec_assert_fail ("remove","VEC(tree)" ,file_,line_,function_), 0)); slot_ = &vec_->vec[ix_]; obj_ = *slot_; memmove (slot_, slot_ + 1, (--vec_->num - ix_) * sizeof (tree)); return obj_; } static __inline__ tree VEC_tree_unordered_remove (VEC_tree *vec_, unsigned ix_ ,const char *file_,unsigned line_,const char *function_) { tree *slot_; tree obj_; (void)((ix_ < vec_->num) ? 0 : (vec_assert_fail ("remove","VEC(tree)" ,file_,line_,function_), 0)); slot_ = &vec_->vec[ix_]; obj_ = *slot_; *slot_ = vec_->vec[--vec_->num]; return obj_; } static __inline__ tree *VEC_tree_address (VEC_tree *vec_) { return vec_ ? vec_->vec : 0; } struct vec_swallow_trailing_semi; enum built_in_class { NOT_BUILT_IN = 0, BUILT_IN_FRONTEND, BUILT_IN_MD, BUILT_IN_NORMAL }; extern const char *const built_in_class_names[4]; enum built_in_function { BUILT_IN_ACOS, BUILT_IN_ACOSF, BUILT_IN_ACOSH, BUILT_IN_ACOSHF, BUILT_IN_ACOSHL, BUILT_IN_ACOSL, BUILT_IN_ASIN, BUILT_IN_ASINF, BUILT_IN_ASINH, BUILT_IN_ASINHF, BUILT_IN_ASINHL, BUILT_IN_ASINL, BUILT_IN_ATAN, BUILT_IN_ATAN2, BUILT_IN_ATAN2F, BUILT_IN_ATAN2L, BUILT_IN_ATANF, BUILT_IN_ATANH, BUILT_IN_ATANHF, BUILT_IN_ATANHL, BUILT_IN_ATANL, BUILT_IN_CBRT, BUILT_IN_CBRTF, BUILT_IN_CBRTL, BUILT_IN_CEIL, BUILT_IN_CEILF, BUILT_IN_CEILL, BUILT_IN_COPYSIGN, BUILT_IN_COPYSIGNF, BUILT_IN_COPYSIGNL, BUILT_IN_COS, BUILT_IN_COSF, BUILT_IN_COSH, BUILT_IN_COSHF, BUILT_IN_COSHL, BUILT_IN_COSL, BUILT_IN_DREM, BUILT_IN_DREMF, BUILT_IN_DREML, BUILT_IN_ERF, BUILT_IN_ERFC, BUILT_IN_ERFCF, BUILT_IN_ERFCL, BUILT_IN_ERFF, BUILT_IN_ERFL, BUILT_IN_EXP, BUILT_IN_EXP10, BUILT_IN_EXP10F, BUILT_IN_EXP10L, BUILT_IN_EXP2, BUILT_IN_EXP2F, BUILT_IN_EXP2L, BUILT_IN_EXPF, BUILT_IN_EXPL, BUILT_IN_EXPM1, BUILT_IN_EXPM1F, BUILT_IN_EXPM1L, BUILT_IN_FABS, BUILT_IN_FABSF, BUILT_IN_FABSL, BUILT_IN_FDIM, BUILT_IN_FDIMF, BUILT_IN_FDIML, BUILT_IN_FLOOR, BUILT_IN_FLOORF, BUILT_IN_FLOORL, BUILT_IN_FMA, BUILT_IN_FMAF, BUILT_IN_FMAL, BUILT_IN_FMAX, BUILT_IN_FMAXF, BUILT_IN_FMAXL, BUILT_IN_FMIN, BUILT_IN_FMINF, BUILT_IN_FMINL, BUILT_IN_FMOD, BUILT_IN_FMODF, BUILT_IN_FMODL, BUILT_IN_FREXP, BUILT_IN_FREXPF, BUILT_IN_FREXPL, BUILT_IN_GAMMA, BUILT_IN_GAMMAF, BUILT_IN_GAMMAL, BUILT_IN_HUGE_VAL, BUILT_IN_HUGE_VALF, BUILT_IN_HUGE_VALL, BUILT_IN_HYPOT, BUILT_IN_HYPOTF, BUILT_IN_HYPOTL, BUILT_IN_ILOGB, BUILT_IN_ILOGBF, BUILT_IN_ILOGBL, BUILT_IN_INF, BUILT_IN_INFF, BUILT_IN_INFL, BUILT_IN_J0, BUILT_IN_J0F, BUILT_IN_J0L, BUILT_IN_J1, BUILT_IN_J1F, BUILT_IN_J1L, BUILT_IN_JN, BUILT_IN_JNF, BUILT_IN_JNL, BUILT_IN_LDEXP, BUILT_IN_LDEXPF, BUILT_IN_LDEXPL, BUILT_IN_LGAMMA, BUILT_IN_LGAMMAF, BUILT_IN_LGAMMAL, BUILT_IN_LLRINT, BUILT_IN_LLRINTF, BUILT_IN_LLRINTL, BUILT_IN_LLROUND, BUILT_IN_LLROUNDF, BUILT_IN_LLROUNDL, BUILT_IN_LOG, BUILT_IN_LOG10, BUILT_IN_LOG10F, BUILT_IN_LOG10L, BUILT_IN_LOG1P, BUILT_IN_LOG1PF, BUILT_IN_LOG1PL, BUILT_IN_LOG2, BUILT_IN_LOG2F, BUILT_IN_LOG2L, BUILT_IN_LOGB, BUILT_IN_LOGBF, BUILT_IN_LOGBL, BUILT_IN_LOGF, BUILT_IN_LOGL, BUILT_IN_LRINT, BUILT_IN_LRINTF, BUILT_IN_LRINTL, BUILT_IN_LROUND, BUILT_IN_LROUNDF, BUILT_IN_LROUNDL, BUILT_IN_MODF, BUILT_IN_MODFF, BUILT_IN_MODFL, BUILT_IN_NAN, BUILT_IN_NANF, BUILT_IN_NANL, BUILT_IN_NANS, BUILT_IN_NANSF, BUILT_IN_NANSL, BUILT_IN_NEARBYINT, BUILT_IN_NEARBYINTF, BUILT_IN_NEARBYINTL, BUILT_IN_NEXTAFTER, BUILT_IN_NEXTAFTERF, BUILT_IN_NEXTAFTERL, BUILT_IN_NEXTTOWARD, BUILT_IN_NEXTTOWARDF, BUILT_IN_NEXTTOWARDL, BUILT_IN_POW, BUILT_IN_POW10, BUILT_IN_POW10F, BUILT_IN_POW10L, BUILT_IN_POWF, BUILT_IN_POWL, BUILT_IN_REMAINDER, BUILT_IN_REMAINDERF, BUILT_IN_REMAINDERL, BUILT_IN_REMQUO, BUILT_IN_REMQUOF, BUILT_IN_REMQUOL, BUILT_IN_RINT, BUILT_IN_RINTF, BUILT_IN_RINTL, BUILT_IN_ROUND, BUILT_IN_ROUNDF, BUILT_IN_ROUNDL, BUILT_IN_SCALB, BUILT_IN_SCALBF, BUILT_IN_SCALBL, BUILT_IN_SCALBLN, BUILT_IN_SCALBLNF, BUILT_IN_SCALBLNL, BUILT_IN_SCALBN, BUILT_IN_SCALBNF, BUILT_IN_SCALBNL, BUILT_IN_SIGNBIT, BUILT_IN_SIGNBITF, BUILT_IN_SIGNBITL, BUILT_IN_SIGNIFICAND, BUILT_IN_SIGNIFICANDF, BUILT_IN_SIGNIFICANDL, BUILT_IN_SIN, BUILT_IN_SINCOS, BUILT_IN_SINCOSF, BUILT_IN_SINCOSL, BUILT_IN_SINF, BUILT_IN_SINH, BUILT_IN_SINHF, BUILT_IN_SINHL, BUILT_IN_SINL, BUILT_IN_SQRT, BUILT_IN_SQRTF, BUILT_IN_SQRTL, BUILT_IN_TAN, BUILT_IN_TANF, BUILT_IN_TANH, BUILT_IN_TANHF, BUILT_IN_TANHL, BUILT_IN_TANL, BUILT_IN_TGAMMA, BUILT_IN_TGAMMAF, BUILT_IN_TGAMMAL, BUILT_IN_TRUNC, BUILT_IN_TRUNCF, BUILT_IN_TRUNCL, BUILT_IN_Y0, BUILT_IN_Y0F, BUILT_IN_Y0L, BUILT_IN_Y1, BUILT_IN_Y1F, BUILT_IN_Y1L, BUILT_IN_YN, BUILT_IN_YNF, BUILT_IN_YNL, BUILT_IN_CABS, BUILT_IN_CABSF, BUILT_IN_CABSL, BUILT_IN_CACOS, BUILT_IN_CACOSF, BUILT_IN_CACOSH, BUILT_IN_CACOSHF, BUILT_IN_CACOSHL, BUILT_IN_CACOSL, BUILT_IN_CARG, BUILT_IN_CARGF, BUILT_IN_CARGL, BUILT_IN_CASIN, BUILT_IN_CASINF, BUILT_IN_CASINH, BUILT_IN_CASINHF, BUILT_IN_CASINHL, BUILT_IN_CASINL, BUILT_IN_CATAN, BUILT_IN_CATANF, BUILT_IN_CATANH, BUILT_IN_CATANHF, BUILT_IN_CATANHL, BUILT_IN_CATANL, BUILT_IN_CCOS, BUILT_IN_CCOSF, BUILT_IN_CCOSH, BUILT_IN_CCOSHF, BUILT_IN_CCOSHL, BUILT_IN_CCOSL, BUILT_IN_CEXP, BUILT_IN_CEXPF, BUILT_IN_CEXPL, BUILT_IN_CIMAG, BUILT_IN_CIMAGF, BUILT_IN_CIMAGL, BUILT_IN_CONJ, BUILT_IN_CONJF, BUILT_IN_CONJL, BUILT_IN_CPOW, BUILT_IN_CPOWF, BUILT_IN_CPOWL, BUILT_IN_CPROJ, BUILT_IN_CPROJF, BUILT_IN_CPROJL, BUILT_IN_CREAL, BUILT_IN_CREALF, BUILT_IN_CREALL, BUILT_IN_CSIN, BUILT_IN_CSINF, BUILT_IN_CSINH, BUILT_IN_CSINHF, BUILT_IN_CSINHL, BUILT_IN_CSINL, BUILT_IN_CSQRT, BUILT_IN_CSQRTF, BUILT_IN_CSQRTL, BUILT_IN_CTAN, BUILT_IN_CTANF, BUILT_IN_CTANH, BUILT_IN_CTANHF, BUILT_IN_CTANHL, BUILT_IN_CTANL, BUILT_IN_BCMP, BUILT_IN_BCOPY, BUILT_IN_BZERO, BUILT_IN_INDEX, BUILT_IN_MEMCMP, BUILT_IN_MEMCPY, BUILT_IN_MEMMOVE, BUILT_IN_MEMPCPY, BUILT_IN_MEMSET, BUILT_IN_RINDEX, BUILT_IN_STPCPY, BUILT_IN_STRCAT, BUILT_IN_STRCHR, BUILT_IN_STRCMP, BUILT_IN_STRCPY, BUILT_IN_STRCSPN, BUILT_IN_STRDUP, BUILT_IN_STRLEN, BUILT_IN_STRNCAT, BUILT_IN_STRNCMP, BUILT_IN_STRNCPY, BUILT_IN_STRPBRK, BUILT_IN_STRRCHR, BUILT_IN_STRSPN, BUILT_IN_STRSTR, BUILT_IN_FPRINTF, BUILT_IN_FPRINTF_UNLOCKED, BUILT_IN_FPUTC, BUILT_IN_FPUTC_UNLOCKED, BUILT_IN_FPUTS, BUILT_IN_FPUTS_UNLOCKED, BUILT_IN_FSCANF, BUILT_IN_FWRITE, BUILT_IN_FWRITE_UNLOCKED, BUILT_IN_PRINTF, BUILT_IN_PRINTF_UNLOCKED, BUILT_IN_PUTCHAR, BUILT_IN_PUTCHAR_UNLOCKED, BUILT_IN_PUTS, BUILT_IN_PUTS_UNLOCKED, BUILT_IN_SCANF, BUILT_IN_SNPRINTF, BUILT_IN_SPRINTF, BUILT_IN_SSCANF, BUILT_IN_VFPRINTF, BUILT_IN_VFSCANF, BUILT_IN_VPRINTF, BUILT_IN_VSCANF, BUILT_IN_VSNPRINTF, BUILT_IN_VSPRINTF, BUILT_IN_VSSCANF, BUILT_IN_ISALNUM, BUILT_IN_ISALPHA, BUILT_IN_ISASCII, BUILT_IN_ISBLANK, BUILT_IN_ISCNTRL, BUILT_IN_ISDIGIT, BUILT_IN_ISGRAPH, BUILT_IN_ISLOWER, BUILT_IN_ISPRINT, BUILT_IN_ISPUNCT, BUILT_IN_ISSPACE, BUILT_IN_ISUPPER, BUILT_IN_ISXDIGIT, BUILT_IN_TOASCII, BUILT_IN_TOLOWER, BUILT_IN_TOUPPER, BUILT_IN_ISWALNUM, BUILT_IN_ISWALPHA, BUILT_IN_ISWBLANK, BUILT_IN_ISWCNTRL, BUILT_IN_ISWDIGIT, BUILT_IN_ISWGRAPH, BUILT_IN_ISWLOWER, BUILT_IN_ISWPRINT, BUILT_IN_ISWPUNCT, BUILT_IN_ISWSPACE, BUILT_IN_ISWUPPER, BUILT_IN_ISWXDIGIT, BUILT_IN_TOWLOWER, BUILT_IN_TOWUPPER, BUILT_IN_ABORT, BUILT_IN_ABS, BUILT_IN_AGGREGATE_INCOMING_ADDRESS, BUILT_IN_ALLOCA, BUILT_IN_APPLY, BUILT_IN_APPLY_ARGS, BUILT_IN_ARGS_INFO, BUILT_IN_CALLOC, BUILT_IN_CLASSIFY_TYPE, BUILT_IN_CLZ, BUILT_IN_CLZIMAX, BUILT_IN_CLZL, BUILT_IN_CLZLL, BUILT_IN_CONSTANT_P, BUILT_IN_CTZ, BUILT_IN_CTZIMAX, BUILT_IN_CTZL, BUILT_IN_CTZLL, BUILT_IN_DCGETTEXT, BUILT_IN_DGETTEXT, BUILT_IN_DWARF_CFA, BUILT_IN_DWARF_SP_COLUMN, BUILT_IN_EH_RETURN, BUILT_IN_EH_RETURN_DATA_REGNO, BUILT_IN_EXECL, BUILT_IN_EXECLP, BUILT_IN_EXECLE, BUILT_IN_EXECV, BUILT_IN_EXECVP, BUILT_IN_EXECVE, BUILT_IN_EXIT, BUILT_IN_EXPECT, BUILT_IN_EXTEND_POINTER, BUILT_IN_EXTRACT_RETURN_ADDR, BUILT_IN_FFS, BUILT_IN_FFSIMAX, BUILT_IN_FFSL, BUILT_IN_FFSLL, BUILT_IN_FORK, BUILT_IN_FRAME_ADDRESS, BUILT_IN_FROB_RETURN_ADDR, BUILT_IN_GETTEXT, BUILT_IN_IMAXABS, BUILT_IN_INIT_DWARF_REG_SIZES, BUILT_IN_FINITE, BUILT_IN_FINITEF, BUILT_IN_FINITEL, BUILT_IN_ISINF, BUILT_IN_ISINFF, BUILT_IN_ISINFL, BUILT_IN_ISNAN, BUILT_IN_ISNANF, BUILT_IN_ISNANL, BUILT_IN_ISGREATER, BUILT_IN_ISGREATEREQUAL, BUILT_IN_ISLESS, BUILT_IN_ISLESSEQUAL, BUILT_IN_ISLESSGREATER, BUILT_IN_ISUNORDERED, BUILT_IN_LABS, BUILT_IN_LLABS, BUILT_IN_LONGJMP, BUILT_IN_MALLOC, BUILT_IN_NEXT_ARG, BUILT_IN_PARITY, BUILT_IN_PARITYIMAX, BUILT_IN_PARITYL, BUILT_IN_PARITYLL, BUILT_IN_POPCOUNT, BUILT_IN_POPCOUNTIMAX, BUILT_IN_POPCOUNTL, BUILT_IN_POPCOUNTLL, BUILT_IN_PREFETCH, BUILT_IN_RETURN, BUILT_IN_RETURN_ADDRESS, BUILT_IN_SAVEREGS, BUILT_IN_SETJMP, BUILT_IN_STACK_SAVE, BUILT_IN_STACK_RESTORE, BUILT_IN_STDARG_START, BUILT_IN_STRFMON, BUILT_IN_STRFTIME, BUILT_IN_TRAP, BUILT_IN_UNWIND_INIT, BUILT_IN_UPDATE_SETJMP_BUF, BUILT_IN_VA_COPY, BUILT_IN_VA_END, BUILT_IN_VA_START, BUILT_IN__EXIT, BUILT_IN__EXIT2, BUILT_IN_INIT_TRAMPOLINE, BUILT_IN_ADJUST_TRAMPOLINE, BUILT_IN_NONLOCAL_GOTO, BUILT_IN_PROFILE_FUNC_ENTER, BUILT_IN_PROFILE_FUNC_EXIT, END_BUILTINS }; extern const char *const built_in_names[(int) END_BUILTINS]; extern tree built_in_decls[(int) END_BUILTINS]; extern tree implicit_built_in_decls[(int) END_BUILTINS]; union tree_ann_d; struct tree_common { tree chain; tree type; union tree_ann_d *ann; __extension__ enum tree_code code : 8; unsigned side_effects_flag : 1; unsigned constant_flag : 1; unsigned addressable_flag : 1; unsigned volatile_flag : 1; unsigned readonly_flag : 1; unsigned unsigned_flag : 1; unsigned asm_written_flag: 1; unsigned nowarning_flag : 1; unsigned used_flag : 1; unsigned nothrow_flag : 1; unsigned static_flag : 1; unsigned public_flag : 1; unsigned private_flag : 1; unsigned protected_flag : 1; unsigned deprecated_flag : 1; unsigned invariant_flag : 1; unsigned lang_flag_0 : 1; unsigned lang_flag_1 : 1; unsigned lang_flag_2 : 1; unsigned lang_flag_3 : 1; unsigned lang_flag_4 : 1; unsigned lang_flag_5 : 1; unsigned lang_flag_6 : 1; unsigned visited : 1; }; extern void tree_check_failed (const tree, const char *, int, const char *, ...) __attribute__ ((__noreturn__)); extern void tree_not_check_failed (const tree, const char *, int, const char *, ...) __attribute__ ((__noreturn__)); extern void tree_class_check_failed (const tree, int, const char *, int, const char *) __attribute__ ((__noreturn__)); extern void tree_vec_elt_check_failed (int, int, const char *, int, const char *) __attribute__ ((__noreturn__)); extern void phi_node_elt_check_failed (int, int, const char *, int, const char *) __attribute__ ((__noreturn__)); extern void tree_operand_check_failed (int, enum tree_code, const char *, int, const char *) __attribute__ ((__noreturn__)); struct tree_int_cst { struct tree_common common; struct tree_int_cst_lowhi { unsigned long low; long high; } int_cst; }; struct real_value; struct tree_real_cst { struct tree_common common; struct real_value * real_cst_ptr; }; struct tree_string { struct tree_common common; int length; const char *pointer; }; struct tree_complex { struct tree_common common; tree real; tree imag; }; struct tree_vector { struct tree_common common; tree elements; }; struct _obstack_chunk { char *limit; struct _obstack_chunk *prev; char contents[4]; }; struct obstack { long chunk_size; struct _obstack_chunk *chunk; char *object_base; char *next_free; char *chunk_limit; int temp; int alignment_mask; struct _obstack_chunk *(*chunkfun) (void *, long); void (*freefun) (void *, struct _obstack_chunk *); void *extra_arg; unsigned use_extra_arg:1; unsigned maybe_empty_object:1; unsigned alloc_failed:1; }; extern void _obstack_newchunk (struct obstack *, int); extern void _obstack_free (struct obstack *, void *); extern int _obstack_begin (struct obstack *, int, int, void *(*) (long), void (*) (void *)); extern int _obstack_begin_1 (struct obstack *, int, int, void *(*) (void *, long), void (*) (void *, void *), void *); extern int _obstack_memory_used (struct obstack *); void obstack_init (struct obstack *obstack); void * obstack_alloc (struct obstack *obstack, int size); void * obstack_copy (struct obstack *obstack, void *address, int size); void * obstack_copy0 (struct obstack *obstack, void *address, int size); void obstack_free (struct obstack *obstack, void *block); void obstack_blank (struct obstack *obstack, int size); void obstack_grow (struct obstack *obstack, void *data, int size); void obstack_grow0 (struct obstack *obstack, void *data, int size); void obstack_1grow (struct obstack *obstack, int data_char); void obstack_ptr_grow (struct obstack *obstack, void *data); void obstack_int_grow (struct obstack *obstack, int data); void * obstack_finish (struct obstack *obstack); int obstack_object_size (struct obstack *obstack); int obstack_room (struct obstack *obstack); void obstack_make_room (struct obstack *obstack, int size); void obstack_1grow_fast (struct obstack *obstack, int data_char); void obstack_ptr_grow_fast (struct obstack *obstack, void *data); void obstack_int_grow_fast (struct obstack *obstack, int data); void obstack_blank_fast (struct obstack *obstack, int size); void * obstack_base (struct obstack *obstack); void * obstack_next_free (struct obstack *obstack); int obstack_alignment_mask (struct obstack *obstack); int obstack_chunk_size (struct obstack *obstack); int obstack_memory_used (struct obstack *obstack); extern void (*obstack_alloc_failed_handler) (void); extern int obstack_exit_failure; typedef struct ht_identifier ht_identifier; struct ht_identifier { const unsigned char *str; unsigned int len; unsigned int hash_value; }; typedef struct ht hash_table; typedef struct ht_identifier *hashnode; enum ht_lookup_option {HT_NO_INSERT = 0, HT_ALLOC, HT_ALLOCED}; struct ht { struct obstack stack; hashnode *entries; hashnode (*alloc_node) (hash_table *); void * (*alloc_subobject) (size_t); unsigned int nslots; unsigned int nelements; struct cpp_reader *pfile; unsigned int searches; unsigned int collisions; unsigned char entries_owned; }; extern hash_table *ht_create (unsigned int order); extern void ht_destroy (hash_table *); extern hashnode ht_lookup (hash_table *, const unsigned char *, size_t, enum ht_lookup_option); extern hashnode ht_lookup_with_hash (hash_table *, const unsigned char *, size_t, unsigned int, enum ht_lookup_option); typedef int (*ht_cb) (struct cpp_reader *, hashnode, const void *); extern void ht_forall (hash_table *, ht_cb, const void *); extern void ht_load (hash_table *ht, hashnode *entries, unsigned int nslots, unsigned int nelements, unsigned char own); extern void ht_dump_statistics (hash_table *); struct tree_identifier { struct tree_common common; struct ht_identifier id; }; struct tree_list { struct tree_common common; tree purpose; tree value; }; struct tree_vec { struct tree_common common; int length; tree a[1]; }; struct tree_exp { struct tree_common common; source_locus locus; int complexity; tree block; tree operands[1]; }; struct ptr_info_def; struct tree_ssa_name { struct tree_common common; tree var; unsigned int version; struct ptr_info_def *ptr_info; tree value_handle; void * aux; }; struct edge_def; struct phi_arg_d { tree def; struct edge_def * e; unsigned char nonzero; }; struct tree_phi_node { struct tree_common common; tree result; int num_args; int capacity; int rewritten; struct basic_block_def *bb; struct dataflow_d *df; struct phi_arg_d a[1]; }; struct varray_head_tag; struct tree_block { struct tree_common common; unsigned handler_block_flag : 1; unsigned abstract_flag : 1; unsigned block_num : 30; tree vars; tree subblocks; tree supercontext; tree abstract_origin; tree fragment_origin; tree fragment_chain; }; struct die_struct; struct tree_type { struct tree_common common; tree values; tree size; tree size_unit; tree attributes; unsigned int uid; unsigned int precision : 9; __extension__ enum machine_mode mode : 7; unsigned string_flag : 1; unsigned no_force_blk_flag : 1; unsigned needs_constructing_flag : 1; unsigned transparent_union_flag : 1; unsigned packed_flag : 1; unsigned restrict_flag : 1; unsigned contains_placeholder_bits : 2; unsigned lang_flag_0 : 1; unsigned lang_flag_1 : 1; unsigned lang_flag_2 : 1; unsigned lang_flag_3 : 1; unsigned lang_flag_4 : 1; unsigned lang_flag_5 : 1; unsigned lang_flag_6 : 1; unsigned user_align : 1; unsigned int align; tree pointer_to; tree reference_to; union tree_type_symtab { int address; char * pointer; struct die_struct * die; } symtab; tree name; tree minval; tree maxval; tree next_variant; tree main_variant; tree binfo; tree context; long alias_set; struct lang_type *lang_specific; }; struct tree_binfo { struct tree_common common; tree offset; tree vtable; tree virtuals; tree vptr_field; VEC_tree *base_accesses; tree inheritance; tree vtt_subvtt; tree vtt_vptr; VEC_tree base_binfos; }; enum symbol_visibility { VISIBILITY_DEFAULT, VISIBILITY_INTERNAL, VISIBILITY_HIDDEN, VISIBILITY_PROTECTED }; struct function; union alias_var_def; struct tree_decl { struct tree_common common; location_t locus; unsigned int uid; tree size; __extension__ enum machine_mode mode : 8; unsigned external_flag : 1; unsigned nonlocal_flag : 1; unsigned regdecl_flag : 1; unsigned inline_flag : 1; unsigned bit_field_flag : 1; unsigned virtual_flag : 1; unsigned ignored_flag : 1; unsigned abstract_flag : 1; unsigned in_system_header_flag : 1; unsigned common_flag : 1; unsigned defer_output : 1; unsigned transparent_union : 1; unsigned static_ctor_flag : 1; unsigned static_dtor_flag : 1; unsigned artificial_flag : 1; unsigned weak_flag : 1; unsigned non_addr_const_p : 1; unsigned no_instrument_function_entry_exit : 1; unsigned comdat_flag : 1; unsigned malloc_flag : 1; unsigned no_limit_stack : 1; __extension__ enum built_in_class built_in_class : 2; unsigned pure_flag : 1; unsigned non_addressable : 1; unsigned user_align : 1; unsigned uninlinable : 1; unsigned thread_local_flag : 1; unsigned declared_inline_flag : 1; unsigned seen_in_bind_expr : 1; __extension__ enum symbol_visibility visibility : 2; unsigned visibility_specified : 1; unsigned lang_flag_0 : 1; unsigned lang_flag_1 : 1; unsigned lang_flag_2 : 1; unsigned lang_flag_3 : 1; unsigned lang_flag_4 : 1; unsigned lang_flag_5 : 1; unsigned lang_flag_6 : 1; unsigned lang_flag_7 : 1; unsigned possibly_inlined : 1; unsigned preserve_flag: 1; unsigned gimple_formal_temp : 1; union tree_decl_u1 { enum built_in_function f; long i; struct tree_decl_u1_a { unsigned int align : 24; unsigned int off_align : 8; } a; } u1; tree size_unit; tree name; tree context; tree arguments; tree result; tree initial; tree abstract_origin; tree assembler_name; tree section_name; tree attributes; rtx rtl; union tree_decl_u2 { struct function * f; rtx r; tree t; int i; } u2; tree saved_tree; tree inlined_fns; tree vindex; long pointer_alias_set; union alias_var_def * alias_var; struct lang_decl *lang_specific; }; struct tree_statement_list_node { struct tree_statement_list_node *prev; struct tree_statement_list_node *next; tree stmt; }; struct tree_statement_list { struct tree_common common; struct tree_statement_list_node *head; struct tree_statement_list_node *tail; }; struct value_set; struct tree_value_handle { struct tree_common common; struct value_set * expr_set; unsigned int id; }; enum tree_node_structure_enum { TS_COMMON, TS_INT_CST, TS_REAL_CST, TS_VECTOR, TS_STRING, TS_COMPLEX, TS_IDENTIFIER, TS_DECL, TS_TYPE, TS_LIST, TS_VEC, TS_EXP, TS_SSA_NAME, TS_PHI_NODE, TS_BLOCK, TS_BINFO, TS_STATEMENT_LIST, TS_VALUE_HANDLE, LAST_TS_ENUM }; union tree_node { struct tree_common common; struct tree_int_cst int_cst; struct tree_real_cst real_cst; struct tree_vector vector; struct tree_string string; struct tree_complex complex; struct tree_identifier identifier; struct tree_decl decl; struct tree_type type; struct tree_list list; struct tree_vec vec; struct tree_exp exp; struct tree_ssa_name ssa_name; struct tree_phi_node phi; struct tree_block block; struct tree_binfo binfo; struct tree_statement_list stmt_list; struct tree_value_handle value_handle; }; enum tree_index { TI_ERROR_MARK, TI_INTQI_TYPE, TI_INTHI_TYPE, TI_INTSI_TYPE, TI_INTDI_TYPE, TI_INTTI_TYPE, TI_UINTQI_TYPE, TI_UINTHI_TYPE, TI_UINTSI_TYPE, TI_UINTDI_TYPE, TI_UINTTI_TYPE, TI_INTEGER_ZERO, TI_INTEGER_ONE, TI_INTEGER_MINUS_ONE, TI_NULL_POINTER, TI_SIZE_ZERO, TI_SIZE_ONE, TI_BITSIZE_ZERO, TI_BITSIZE_ONE, TI_BITSIZE_UNIT, TI_PUBLIC, TI_PROTECTED, TI_PRIVATE, TI_BOOLEAN_FALSE, TI_BOOLEAN_TRUE, TI_COMPLEX_INTEGER_TYPE, TI_COMPLEX_FLOAT_TYPE, TI_COMPLEX_DOUBLE_TYPE, TI_COMPLEX_LONG_DOUBLE_TYPE, TI_FLOAT_TYPE, TI_DOUBLE_TYPE, TI_LONG_DOUBLE_TYPE, TI_FLOAT_PTR_TYPE, TI_DOUBLE_PTR_TYPE, TI_LONG_DOUBLE_PTR_TYPE, TI_INTEGER_PTR_TYPE, TI_VOID_TYPE, TI_PTR_TYPE, TI_CONST_PTR_TYPE, TI_SIZE_TYPE, TI_PID_TYPE, TI_PTRDIFF_TYPE, TI_VA_LIST_TYPE, TI_BOOLEAN_TYPE, TI_FILEPTR_TYPE, TI_VOID_LIST_NODE, TI_MAIN_IDENTIFIER, TI_MAX }; extern tree global_trees[TI_MAX]; enum integer_type_kind { itk_char, itk_signed_char, itk_unsigned_char, itk_short, itk_unsigned_short, itk_int, itk_unsigned_int, itk_long, itk_unsigned_long, itk_long_long, itk_unsigned_long_long, itk_none }; typedef enum integer_type_kind integer_type_kind; extern tree integer_types[itk_none]; extern enum tls_model flag_tls_default; enum ptrmemfunc_vbit_where_t { ptrmemfunc_vbit_in_pfn, ptrmemfunc_vbit_in_delta }; extern tree frame_base_decl; extern tree decl_assembler_name (tree); extern size_t tree_size (tree); extern size_t tree_code_size (enum tree_code); extern tree make_node_stat (enum tree_code ); extern tree copy_node_stat (tree ); extern tree copy_list (tree); extern tree make_tree_binfo_stat (unsigned ); extern tree make_tree_vec_stat (int ); extern tree make_phi_node (tree, int); extern void init_phinodes (void); extern void fini_phinodes (void); extern void release_phi_node (tree); extern void init_ssanames (void); extern void fini_ssanames (void); extern tree make_ssa_name (tree, tree); extern tree duplicate_ssa_name (tree, tree); extern void release_ssa_name (tree); extern void release_defs (tree); extern void replace_ssa_name_symbol (tree, tree); extern void mark_for_rewrite (tree); extern void unmark_all_for_rewrite (void); extern unsigned char marked_for_rewrite_p (tree); extern unsigned char any_marked_for_rewrite_p (void); extern struct bitmap_head_def *marked_ssa_names (void); extern tree get_identifier (const char *); extern tree get_identifier_with_length (const char *, size_t); extern tree maybe_get_identifier (const char *); extern tree build (enum tree_code, tree, ...); extern tree build_nt (enum tree_code, ...); extern tree build0_stat (enum tree_code, tree ); extern tree build1_stat (enum tree_code, tree, tree ); extern tree build2_stat (enum tree_code, tree, tree, tree ); extern tree build3_stat (enum tree_code, tree, tree, tree, tree ); extern tree build4_stat (enum tree_code, tree, tree, tree, tree, tree ); extern tree build_int_cst (tree, long); extern tree build_int_cst_type (tree, long); extern tree build_int_cstu (tree, unsigned long); extern tree build_int_cst_wide (tree, unsigned long, long); extern tree build_vector (tree, tree); extern tree build_constructor (tree, tree); extern tree build_real_from_int_cst (tree, tree); extern tree build_complex (tree, tree, tree); extern tree build_string (int, const char *); extern tree build_tree_list_stat (tree, tree ); extern tree build_decl_stat (enum tree_code, tree, tree ); extern tree build_block (tree, tree, tree, tree, tree); extern void annotate_with_file_line (tree, const char *, int); extern void annotate_with_locus (tree, location_t); extern tree build_empty_stmt (void); extern tree make_signed_type (int); extern tree make_unsigned_type (int); extern tree unsigned_type_for (tree); extern void initialize_sizetypes (unsigned char); extern void set_sizetype (tree); extern void fixup_unsigned_type (tree); extern tree build_pointer_type_for_mode (tree, enum machine_mode, unsigned char); extern tree build_pointer_type (tree); extern tree build_reference_type_for_mode (tree, enum machine_mode, unsigned char); extern tree build_reference_type (tree); extern tree build_vector_type_for_mode (tree, enum machine_mode); extern tree build_vector_type (tree innertype, int nunits); extern tree build_type_no_quals (tree); extern tree build_index_type (tree); extern tree build_index_2_type (tree, tree); extern tree build_array_type (tree, tree); extern tree build_function_type (tree, tree); extern tree build_function_type_list (tree, ...); extern tree build_method_type_directly (tree, tree, tree); extern tree build_method_type (tree, tree); extern tree build_offset_type (tree, tree); extern tree build_complex_type (tree); extern tree array_type_nelts (tree); extern unsigned char in_array_bounds_p (tree); extern tree value_member (tree, tree); extern tree purpose_member (tree, tree); extern int attribute_list_equal (tree, tree); extern int attribute_list_contained (tree, tree); extern int tree_int_cst_equal (tree, tree); extern int tree_int_cst_lt (tree, tree); extern int tree_int_cst_compare (tree, tree); extern int host_integerp (tree, int); extern long tree_low_cst (tree, int); extern int tree_int_cst_msb (tree); extern int tree_int_cst_sgn (tree); extern int tree_expr_nonnegative_p (tree); extern unsigned char may_negate_without_overflow_p (tree); extern tree get_inner_array_type (tree); extern tree make_tree (tree, rtx); extern tree build_type_attribute_variant (tree, tree); extern tree build_decl_attribute_variant (tree, tree); struct attribute_spec { const char *const name; const int min_length; const int max_length; const unsigned char decl_required; const unsigned char type_required; const unsigned char function_type_required; tree (*const handler) (tree *node, tree name, tree args, int flags, unsigned char *no_add_attrs); }; enum attribute_flags { ATTR_FLAG_DECL_NEXT = 1, ATTR_FLAG_FUNCTION_NEXT = 2, ATTR_FLAG_ARRAY_NEXT = 4, ATTR_FLAG_TYPE_IN_PLACE = 8, ATTR_FLAG_BUILT_IN = 16 }; extern tree merge_decl_attributes (tree, tree); extern tree merge_type_attributes (tree, tree); extern void default_register_cpp_builtins (struct cpp_reader *); extern int valid_machine_attribute (tree, tree, tree, tree); extern int is_attribute_p (const char *, tree); extern tree lookup_attribute (const char *, tree); extern tree merge_attributes (tree, tree); extern unsigned char check_qualified_type (tree, tree, int); extern tree get_qualified_type (tree, int); extern tree build_qualified_type (tree, int); extern tree build_distinct_type_copy (tree); extern tree build_variant_type_copy (tree); extern void finish_builtin_struct (tree, const char *, tree, tree); extern void layout_type (tree); typedef struct record_layout_info_s { tree t; tree offset; unsigned int offset_align; tree bitpos; unsigned int record_align; unsigned int unpacked_align; tree prev_field; tree pending_statics; int remaining_in_alignment; int packed_maybe_necessary; } *record_layout_info; extern void set_lang_adjust_rli (void (*) (record_layout_info)); extern record_layout_info start_record_layout (tree); extern tree bit_from_pos (tree, tree); extern tree byte_from_pos (tree, tree); extern void pos_from_bit (tree *, tree *, unsigned int, tree); extern void normalize_offset (tree *, tree *, unsigned int); extern tree rli_size_unit_so_far (record_layout_info); extern tree rli_size_so_far (record_layout_info); extern void normalize_rli (record_layout_info); extern void place_field (record_layout_info, tree); extern void compute_record_mode (tree); extern void finish_record_layout (record_layout_info, int); extern tree type_hash_canon (unsigned int, tree); extern void layout_decl (tree, unsigned); extern void relayout_decl (tree); extern enum machine_mode mode_for_size_tree (tree, enum mode_class, int); extern tree non_lvalue (tree); extern tree pedantic_non_lvalue (tree); extern tree convert (tree, tree); extern unsigned int expr_align (tree); extern tree expr_first (tree); extern tree expr_last (tree); extern tree expr_only (tree); extern tree size_in_bytes (tree); extern long int_size_in_bytes (tree); extern tree bit_position (tree); extern long int_bit_position (tree); extern tree byte_position (tree); extern long int_byte_position (tree); enum size_type_kind { SIZETYPE, SSIZETYPE, BITSIZETYPE, SBITSIZETYPE, TYPE_KIND_LAST}; extern tree sizetype_tab[(int) TYPE_KIND_LAST]; extern tree size_int_kind (long, enum size_type_kind); extern tree size_binop (enum tree_code, tree, tree); extern tree size_diffop (tree, tree); extern tree round_up (tree, int); extern tree round_down (tree, int); extern tree get_pending_sizes (void); extern void put_pending_size (tree); extern void put_pending_sizes (tree); extern unsigned int maximum_field_alignment; extern unsigned int initial_max_fld_align; extern unsigned int set_alignment; extern tree chainon (tree, tree); extern tree tree_cons_stat (tree, tree, tree ); extern tree tree_last (tree); extern tree nreverse (tree); extern int list_length (tree); extern int fields_length (tree); extern unsigned char initializer_zerop (tree); extern void categorize_ctor_elements (tree, long *, long *); extern long count_type_elements (tree); extern int mostly_zeros_p (tree); extern void add_var_to_bind_expr (tree, tree); extern int integer_zerop (tree); extern int integer_onep (tree); extern int integer_all_onesp (tree); extern int integer_pow2p (tree); extern int integer_nonzerop (tree); extern unsigned char zero_p (tree); extern unsigned char cst_and_fits_in_hwi (tree); extern tree staticp (tree); extern tree save_expr (tree); extern tree skip_simple_arithmetic (tree); extern int first_rtl_op (enum tree_code); enum tree_node_structure_enum tree_node_structure (tree); extern unsigned char contains_placeholder_p (tree); extern unsigned char type_contains_placeholder_p (tree); extern tree substitute_in_expr (tree, tree, tree); extern tree substitute_placeholder_in_expr (tree, tree); extern tree variable_size (tree); extern tree stabilize_reference (tree); extern tree stabilize_reference_1 (tree); extern tree get_unwidened (tree, tree); extern tree get_narrower (tree, int *); extern tree get_inner_reference (tree, long *, long *, tree *, enum machine_mode *, int *, int *); extern int handled_component_p (tree); extern tree array_ref_element_size (tree); extern tree array_ref_low_bound (tree); extern tree array_ref_up_bound (tree); extern tree component_ref_field_offset (tree); extern tree get_containing_scope (tree); extern tree decl_function_context (tree); extern tree decl_type_context (tree); extern int real_zerop (tree); extern int pedantic_lvalues; extern tree current_function_decl; extern const char * current_function_func_begin_label; extern unsigned crc32_string (unsigned, const char *); extern void clean_symbol_name (char *); extern tree get_file_function_name_long (const char *); extern tree get_set_constructor_bits (tree, char *, int); extern tree get_set_constructor_bytes (tree, unsigned char *, int); extern tree get_callee_fndecl (tree); extern void change_decl_assembler_name (tree, tree); extern int type_num_arguments (tree); extern unsigned char associative_tree_code (enum tree_code); extern unsigned char commutative_tree_code (enum tree_code); extern void expand_expr_stmt (tree); extern void expand_expr_stmt_value (tree, int, int); extern int warn_if_unused_value (tree, location_t); extern void expand_decl_init (tree); extern void expand_label (tree); extern void expand_goto (tree); extern void expand_asm (tree, int); extern rtx expand_stack_save (void); extern void expand_stack_restore (tree); extern void expand_return (tree); extern int is_body_block (tree); extern void using_eh_for_cleanups (void); extern tree fold (tree); extern tree fold_initializer (tree); extern tree fold_convert (tree, tree); extern tree fold_single_bit_test (enum tree_code, tree, tree, tree); extern tree fold_ignored_result (tree); extern tree fold_abs_const (tree, tree); extern tree force_fit_type (tree, int, unsigned char, unsigned char); extern int add_double (unsigned long, long, unsigned long, long, unsigned long *, long *); extern int neg_double (unsigned long, long, unsigned long *, long *); extern int mul_double (unsigned long, long, unsigned long, long, unsigned long *, long *); extern void lshift_double (unsigned long, long, long, unsigned int, unsigned long *, long *, int); extern void rshift_double (unsigned long, long, long, unsigned int, unsigned long *, long *, int); extern void lrotate_double (unsigned long, long, long, unsigned int, unsigned long *, long *); extern void rrotate_double (unsigned long, long, long, unsigned int, unsigned long *, long *); extern int div_and_round_double (enum tree_code, int, unsigned long, long, unsigned long, long, unsigned long *, long *, unsigned long *, long *); enum operand_equal_flag { OEP_ONLY_CONST = 1, OEP_PURE_SAME = 2 }; extern int operand_equal_p (tree, tree, unsigned int); extern tree omit_one_operand (tree, tree, tree); extern tree omit_two_operands (tree, tree, tree, tree); extern tree invert_truthvalue (tree); extern tree nondestructive_fold_unary_to_constant (enum tree_code, tree, tree); extern tree nondestructive_fold_binary_to_constant (enum tree_code, tree, tree, tree); extern tree fold_read_from_constant_string (tree); extern tree int_const_binop (enum tree_code, tree, tree, int); extern tree build_fold_addr_expr (tree); extern tree build_fold_addr_expr_with_type (tree, tree); extern tree build_fold_indirect_ref (tree); extern tree constant_boolean_node (int, tree); extern unsigned char tree_swap_operands_p (tree, tree, unsigned char); extern enum tree_code swap_tree_comparison (enum tree_code); extern tree fold_builtin (tree, unsigned char); extern tree fold_builtin_fputs (tree, unsigned char, unsigned char, tree); extern tree fold_builtin_strcpy (tree, tree); extern tree fold_builtin_strncpy (tree, tree); extern enum built_in_function builtin_mathfn_code (tree); extern tree build_function_call_expr (tree, tree); extern tree mathfn_built_in (tree, enum built_in_function fn); extern tree strip_float_extensions (tree); extern tree simplify_builtin (tree, int); extern tree c_strlen (tree, int); extern tree std_gimplify_va_arg_expr (tree, tree, tree *, tree *); extern tree build_va_arg_indirect_ref (tree); extern tree strip_float_extensions (tree); extern void record_component_aliases (tree); extern long get_alias_set (tree); extern int alias_sets_conflict_p (long, long); extern int alias_sets_might_conflict_p (long, long); extern int objects_must_conflict_p (tree, tree); extern int really_constant_p (tree); extern int int_fits_type_p (tree, tree); extern unsigned char variably_modified_type_p (tree, tree); extern int tree_log2 (tree); extern int tree_floor_log2 (tree); extern int simple_cst_equal (tree, tree); extern unsigned int iterative_hash_expr (tree, unsigned int); extern int compare_tree_int (tree, unsigned long); extern int type_list_equal (tree, tree); extern int chain_member (tree, tree); extern tree type_hash_lookup (unsigned int, tree); extern void type_hash_add (unsigned int, tree); extern int simple_cst_list_equal (tree, tree); extern void dump_tree_statistics (void); extern void expand_function_end (void); extern void expand_function_start (tree); extern void expand_pending_sizes (tree); extern void recompute_tree_invarant_for_addr_expr (tree); extern unsigned char is_global_var (tree t); extern unsigned char needs_to_live_in_memory (tree); extern tree reconstruct_complex_type (tree, tree); extern int real_onep (tree); extern int real_twop (tree); extern int real_minus_onep (tree); extern void init_ttree (void); extern void build_common_tree_nodes (unsigned char, unsigned char); extern void build_common_tree_nodes_2 (int); extern tree build_nonstandard_integer_type (unsigned long, int); extern tree build_range_type (tree, tree, tree); extern long int_cst_value (tree); extern tree tree_fold_gcd (tree, tree); extern tree build_addr (tree); extern unsigned char fields_compatible_p (tree, tree); extern tree find_compatible_field (tree, tree); extern void expand_main_function (void); extern void init_dummy_function_start (void); extern void expand_dummy_function_end (void); extern void init_function_for_compilation (void); extern void allocate_struct_function (tree); extern void init_function_start (tree); extern unsigned char use_register_for_decl (tree); extern void assign_parms (tree); extern void setjmp_vars_warning (tree); extern void setjmp_args_warning (void); extern void init_temp_slots (void); extern void combine_temp_slots (void); extern void free_temp_slots (void); extern void pop_temp_slots (void); extern void push_temp_slots (void); extern void preserve_temp_slots (rtx); extern void preserve_rtl_expr_temps (tree); extern int aggregate_value_p (tree, tree); extern void push_function_context (void); extern void pop_function_context (void); extern void push_function_context_to (tree); extern void pop_function_context_from (tree); extern void print_rtl (FILE *, rtx); extern void debug_tree (tree); extern void print_node (FILE *, const char *, tree, int); extern void print_node_brief (FILE *, const char *, tree, int); extern void indent_to (FILE *, int); extern unsigned char debug_find_tree (tree, tree); extern tree unsave_expr_now (tree); extern rtx expand_builtin_return_addr (enum built_in_function, int, rtx); extern void check_max_integer_computation_mode (tree); extern rtx emit_line_note (location_t); extern int flags_from_decl_or_type (tree); extern int call_expr_flags (tree); extern int setjmp_call_p (tree); extern unsigned char alloca_call_p (tree); extern unsigned char must_pass_in_stack_var_size (enum machine_mode, tree); extern unsigned char must_pass_in_stack_var_size_or_pad (enum machine_mode, tree); extern tree decl_attributes (tree *, tree, int); extern void set_decl_abstract_flags (tree, int); extern void set_decl_origin_self (tree); extern void set_min_and_max_values_for_integral_type (tree, int, unsigned char); extern void fixup_signed_type (tree); extern void internal_reference_types (void); extern unsigned int update_alignment_for_field (record_layout_info, tree, unsigned int); extern void make_decl_rtl (tree); extern void make_decl_one_only (tree); extern int supports_one_only (void); extern void variable_section (tree, int); enum tls_model decl_tls_model (tree); extern void resolve_unique_section (tree, int, int); extern void mark_referenced (tree); extern void mark_decl_referenced (tree); extern void notice_global_symbol (tree); extern void set_user_assembler_name (tree, const char *); extern void expand_computed_goto (tree); extern unsigned char parse_output_constraint (const char **, int, int, int, unsigned char *, unsigned char *, unsigned char *); extern unsigned char parse_input_constraint (const char **, int, int, int, int, const char * const *, unsigned char *, unsigned char *); extern void expand_asm_operands (tree, tree, tree, tree, int, location_t); extern void expand_asm_expr (tree); extern unsigned char asm_op_is_mem_input (tree, tree); extern tree resolve_asm_operand_names (tree, tree, tree); extern void expand_case (tree); extern void expand_decl (tree); extern void expand_anon_union_decl (tree, tree, tree); extern tree create_artificial_label (void); extern void gimplify_function_tree (tree); extern const char *get_name (tree); extern tree unshare_expr (tree); extern void sort_case_labels (tree); extern tree get_file_function_name (int); extern char *dwarf2out_cfi_label (void); extern void dwarf2out_def_cfa (const char *, unsigned, long); extern void dwarf2out_window_save (const char *); extern void dwarf2out_args_size (const char *, long); extern void dwarf2out_reg_save (const char *, unsigned, long); extern void dwarf2out_return_save (const char *, long); extern void dwarf2out_return_reg (const char *, unsigned); typedef tree (*walk_tree_fn) (tree *, int *, void *); extern tree walk_tree (tree*, walk_tree_fn, void*, void*); extern tree walk_tree_without_duplicates (tree*, walk_tree_fn, void*); enum tree_dump_index { TDI_none, TDI_tu, TDI_class, TDI_original, TDI_generic, TDI_nested, TDI_inlined, TDI_vcg, TDI_tree_all, TDI_rtl_all, TDI_ipa_all, TDI_cgraph, DFI_MIN, DFI_sibling = DFI_MIN, DFI_eh, DFI_jump, DFI_cse, DFI_gcse, DFI_loop, DFI_bypass, DFI_cfg, DFI_bp, DFI_vpt, DFI_ce1, DFI_tracer, DFI_loop2, DFI_web, DFI_cse2, DFI_life, DFI_combine, DFI_ce2, DFI_regmove, DFI_sms, DFI_sched, DFI_lreg, DFI_greg, DFI_postreload, DFI_gcse2, DFI_flow2, DFI_peephole2, DFI_ce3, DFI_rnreg, DFI_bbro, DFI_branch_target_load, DFI_sched2, DFI_stack, DFI_vartrack, DFI_mach, DFI_dbr, TDI_end }; typedef struct dump_info *dump_info_p; extern char *get_dump_file_name (enum tree_dump_index); extern int dump_flag (dump_info_p, int, tree); extern int dump_enabled_p (enum tree_dump_index); extern int dump_initialized_p (enum tree_dump_index); extern FILE *dump_begin (enum tree_dump_index, int *); extern void dump_end (enum tree_dump_index, FILE *); extern void dump_node (tree, int, FILE *); extern int dump_switch_p (const char *); extern const char *dump_flag_name (enum tree_dump_index); extern void set_decl_rtl (tree, rtx); extern void set_decl_incoming_rtl (tree, rtx); typedef enum { d_kind, t_kind, b_kind, s_kind, r_kind, e_kind, c_kind, id_kind, perm_list_kind, temp_list_kind, vec_kind, binfo_kind, phi_kind, ssa_name_kind, x_kind, lang_decl, lang_type, all_kinds } tree_node_kind; extern int tree_node_counts[]; extern int tree_node_sizes[]; extern unsigned char in_gimple_form; tree lower_bound_in_type (tree, tree); tree upper_bound_in_type (tree, tree); extern unsigned char thread_through_all_blocks (void); extern tree get_base_address (tree t); extern const char empty_string[]; extern const char digit_vector[]; typedef void (*gt_pointer_operator) (void *, void *); enum gt_types_enum { gt_ggc_e_7c_scope, gt_ggc_e_9c_binding, gt_ggc_e_8eh_range, gt_ggc_e_13binding_level, gt_ggc_e_9java_line, gt_ggc_e_11parser_ctxt, gt_ggc_e_10jdeplist_s, gt_ggc_e_10java_lexer, gt_ggc_e_12ZipDirectory, gt_ggc_e_18treetreehash_entry, gt_ggc_e_5CPool, gt_ggc_e_3JCF, gt_ggc_e_11align_stack, gt_ggc_e_21pending_abstract_type, gt_ggc_e_9cp_parser, gt_ggc_e_17cp_parser_context, gt_ggc_e_8cp_lexer, gt_ggc_e_14cp_token_block, gt_ggc_e_8cp_token, gt_ggc_e_19VEC_deferred_access, gt_ggc_e_15VEC_tree_pair_s, gt_ggc_e_16named_label_list, gt_ggc_e_20named_label_use_list, gt_ggc_e_11saved_scope, gt_ggc_e_14cp_token_cache, gt_ggc_e_20VEC_cp_class_binding, gt_ggc_e_21VEC_cxx_saved_binding, gt_ggc_e_16cp_binding_level, gt_ggc_e_11cxx_binding, gt_ggc_e_15binding_entry_s, gt_ggc_e_15binding_table_s, gt_ggc_e_19v_must_def_optype_d, gt_ggc_e_13vuse_optype_d, gt_ggc_e_18v_may_def_optype_d, gt_ggc_e_12use_optype_d, gt_ggc_e_12def_optype_d, gt_ggc_e_15throw_stmt_node, gt_ggc_e_15edge_prediction, gt_ggc_e_23constant_descriptor_rtx, gt_ggc_e_24constant_descriptor_tree, gt_ggc_e_14in_named_entry, gt_ggc_e_17rtx_constant_pool, gt_ggc_e_9type_hash, gt_ggc_e_16string_pool_data, gt_ggc_e_9eh_region, gt_ggc_e_13ehl_map_entry, gt_ggc_e_16var_loc_list_def, gt_ggc_e_12var_loc_node, gt_ggc_e_16limbo_die_struct, gt_ggc_e_16dw_ranges_struct, gt_ggc_e_14pubname_struct, gt_ggc_e_28dw_separate_line_info_struct, gt_ggc_e_19dw_line_info_struct, gt_ggc_e_14dw_attr_struct, gt_ggc_e_18dw_loc_list_struct, gt_ggc_e_15queued_reg_save, gt_ggc_e_20indirect_string_node, gt_ggc_e_19dw_loc_descr_struct, gt_ggc_e_13dw_fde_struct, gt_ggc_e_13dw_cfi_struct, gt_ggc_e_8typeinfo, gt_ggc_e_15alias_set_entry, gt_ggc_e_10c_arg_info, gt_ggc_e_8c_switch, gt_ggc_e_18sorted_fields_type, gt_ggc_e_19cgraph_varpool_node, gt_ggc_e_11cgraph_edge, gt_ggc_e_18static_vars_info_d, gt_ggc_e_25global_static_vars_info_d, gt_ggc_e_24local_static_vars_info_d, gt_ggc_e_11cgraph_node, gt_ggc_e_8bb_ann_d, gt_ggc_e_17reorder_block_def, gt_ggc_e_7et_node, gt_ggc_e_4loop, gt_ggc_e_12elt_loc_list, gt_ggc_e_17cselib_val_struct, gt_ggc_e_8elt_list, gt_ggc_e_12reg_info_def, gt_ggc_e_14lang_tree_node, gt_ggc_e_9value_set, gt_ggc_e_24tree_statement_list_node, gt_ggc_e_9lang_decl, gt_ggc_e_13alias_var_def, gt_ggc_e_9lang_type, gt_ggc_e_10die_struct, gt_ggc_e_10dataflow_d, gt_ggc_e_8edge_def, gt_ggc_e_12ptr_info_def, gt_ggc_e_10real_value, gt_ggc_e_10tree_ann_d, gt_ggc_e_8VEC_tree, gt_ggc_e_13convert_optab, gt_ggc_e_5optab, gt_ggc_e_15basic_block_def, gt_ggc_e_9reg_attrs, gt_ggc_e_9mem_attrs, gt_ggc_e_17language_function, gt_ggc_e_9temp_slot, gt_ggc_e_15varray_head_tag, gt_ggc_e_20initial_value_struct, gt_ggc_e_13varasm_status, gt_ggc_e_9eh_status, gt_ggc_e_8function, gt_ggc_e_11expr_status, gt_ggc_e_11emit_status, gt_ggc_e_14sequence_stack, gt_ggc_e_14var_refs_queue, gt_ggc_e_15bitmap_head_def, gt_ggc_e_18bitmap_element_def, gt_ggc_e_17stack_local_entry, gt_ggc_e_16machine_function, gt_ggc_e_6answer, gt_ggc_e_9cpp_macro, gt_ggc_e_9cpp_token, gt_ggc_e_9tree_node, gt_ggc_e_9rtvec_def, gt_ggc_e_7rtx_def, gt_ggc_e_10location_s, gt_e_II17splay_tree_node_s, gt_e_P9tree_nodeP9tree_node17splay_tree_node_s, gt_e_IP9tree_node17splay_tree_node_s, gt_e_SP9tree_node17splay_tree_node_s, gt_e_P18treetreehash_entry4htab, gt_e_P21pending_abstract_type4htab, gt_e_P15throw_stmt_node4htab, gt_e_P23constant_descriptor_rtx4htab, gt_e_P24constant_descriptor_tree4htab, gt_e_P14in_named_entry4htab, gt_e_P9type_hash4htab, gt_e_P13ehl_map_entry4htab, gt_e_P9tree_node4htab, gt_e_P9reg_attrs4htab, gt_e_P9mem_attrs4htab, gt_e_P7rtx_def4htab, gt_e_SP9tree_node12splay_tree_s, gt_e_P16var_loc_list_def4htab, gt_e_P10die_struct4htab, gt_e_P20indirect_string_node4htab, gt_e_IP9tree_node12splay_tree_s, gt_e_P9tree_nodeP9tree_node12splay_tree_s, gt_e_P19cgraph_varpool_node4htab, gt_e_P11cgraph_node4htab, gt_e_P15alias_set_entry15varray_head_tag, gt_e_II12splay_tree_s, gt_e_P9temp_slot15varray_head_tag, gt_types_enum_last }; extern void gt_ggc_mx_c_scope (void *); extern void gt_ggc_mx_c_binding (void *); extern void gt_ggc_mx_eh_range (void *); extern void gt_ggc_mx_binding_level (void *); extern void gt_ggc_mx_java_line (void *); extern void gt_ggc_mx_parser_ctxt (void *); extern void gt_ggc_mx_jdeplist_s (void *); extern void gt_ggc_mx_java_lexer (void *); extern void gt_ggc_mx_ZipDirectory (void *); extern void gt_ggc_mx_treetreehash_entry (void *); extern void gt_ggc_mx_CPool (void *); extern void gt_ggc_mx_JCF (void *); extern void gt_ggc_mx_align_stack (void *); extern void gt_ggc_mx_pending_abstract_type (void *); extern void gt_ggc_mx_cp_parser (void *); extern void gt_ggc_mx_cp_parser_context (void *); extern void gt_ggc_mx_cp_lexer (void *); extern void gt_ggc_mx_cp_token_block (void *); extern void gt_ggc_mx_cp_token (void *); extern void gt_ggc_mx_VEC_deferred_access (void *); extern void gt_ggc_mx_VEC_tree_pair_s (void *); extern void gt_ggc_mx_named_label_list (void *); extern void gt_ggc_mx_named_label_use_list (void *); extern void gt_ggc_mx_saved_scope (void *); extern void gt_ggc_mx_cp_token_cache (void *); extern void gt_ggc_mx_VEC_cp_class_binding (void *); extern void gt_ggc_mx_VEC_cxx_saved_binding (void *); extern void gt_ggc_mx_cp_binding_level (void *); extern void gt_ggc_mx_cxx_binding (void *); extern void gt_ggc_mx_binding_entry_s (void *); extern void gt_ggc_mx_binding_table_s (void *); extern void gt_ggc_mx_v_must_def_optype_d (void *); extern void gt_ggc_mx_vuse_optype_d (void *); extern void gt_ggc_mx_v_may_def_optype_d (void *); extern void gt_ggc_mx_use_optype_d (void *); extern void gt_ggc_mx_def_optype_d (void *); extern void gt_ggc_mx_throw_stmt_node (void *); extern void gt_ggc_mx_edge_prediction (void *); extern void gt_ggc_mx_constant_descriptor_rtx (void *); extern void gt_ggc_mx_constant_descriptor_tree (void *); extern void gt_ggc_mx_in_named_entry (void *); extern void gt_ggc_mx_rtx_constant_pool (void *); extern void gt_ggc_mx_type_hash (void *); extern void gt_ggc_mx_string_pool_data (void *); extern void gt_ggc_mx_eh_region (void *); extern void gt_ggc_mx_ehl_map_entry (void *); extern void gt_ggc_mx_var_loc_list_def (void *); extern void gt_ggc_mx_var_loc_node (void *); extern void gt_ggc_mx_limbo_die_struct (void *); extern void gt_ggc_mx_dw_ranges_struct (void *); extern void gt_ggc_mx_pubname_struct (void *); extern void gt_ggc_mx_dw_separate_line_info_struct (void *); extern void gt_ggc_mx_dw_line_info_struct (void *); extern void gt_ggc_mx_dw_attr_struct (void *); extern void gt_ggc_mx_dw_loc_list_struct (void *); extern void gt_ggc_mx_queued_reg_save (void *); extern void gt_ggc_mx_indirect_string_node (void *); extern void gt_ggc_mx_dw_loc_descr_struct (void *); extern void gt_ggc_mx_dw_fde_struct (void *); extern void gt_ggc_mx_dw_cfi_struct (void *); extern void gt_ggc_mx_typeinfo (void *); extern void gt_ggc_mx_alias_set_entry (void *); extern void gt_ggc_mx_c_arg_info (void *); extern void gt_ggc_mx_c_switch (void *); extern void gt_ggc_mx_sorted_fields_type (void *); extern void gt_ggc_mx_cgraph_varpool_node (void *); extern void gt_ggc_mx_cgraph_edge (void *); extern void gt_ggc_mx_static_vars_info_d (void *); extern void gt_ggc_mx_global_static_vars_info_d (void *); extern void gt_ggc_mx_local_static_vars_info_d (void *); extern void gt_ggc_mx_cgraph_node (void *); extern void gt_ggc_mx_bb_ann_d (void *); extern void gt_ggc_mx_reorder_block_def (void *); extern void gt_ggc_mx_et_node (void *); extern void gt_ggc_mx_loop (void *); extern void gt_ggc_mx_elt_loc_list (void *); extern void gt_ggc_mx_cselib_val_struct (void *); extern void gt_ggc_mx_elt_list (void *); extern void gt_ggc_mx_reg_info_def (void *); extern void gt_ggc_mx_lang_tree_node (void *); extern void gt_ggc_mx_value_set (void *); extern void gt_ggc_mx_tree_statement_list_node (void *); extern void gt_ggc_mx_lang_decl (void *); extern void gt_ggc_mx_alias_var_def (void *); extern void gt_ggc_mx_lang_type (void *); extern void gt_ggc_mx_die_struct (void *); extern void gt_ggc_mx_dataflow_d (void *); extern void gt_ggc_mx_edge_def (void *); extern void gt_ggc_mx_ptr_info_def (void *); extern void gt_ggc_mx_real_value (void *); extern void gt_ggc_mx_tree_ann_d (void *); extern void gt_ggc_mx_VEC_tree (void *); extern void gt_ggc_mx_convert_optab (void *); extern void gt_ggc_mx_optab (void *); extern void gt_ggc_mx_basic_block_def (void *); extern void gt_ggc_mx_reg_attrs (void *); extern void gt_ggc_mx_mem_attrs (void *); extern void gt_ggc_mx_language_function (void *); extern void gt_ggc_mx_temp_slot (void *); extern void gt_ggc_mx_varray_head_tag (void *); extern void gt_ggc_mx_initial_value_struct (void *); extern void gt_ggc_mx_varasm_status (void *); extern void gt_ggc_mx_eh_status (void *); extern void gt_ggc_mx_function (void *); extern void gt_ggc_mx_expr_status (void *); extern void gt_ggc_mx_emit_status (void *); extern void gt_ggc_mx_sequence_stack (void *); extern void gt_ggc_mx_var_refs_queue (void *); extern void gt_ggc_mx_bitmap_head_def (void *); extern void gt_ggc_mx_bitmap_element_def (void *); extern void gt_ggc_mx_stack_local_entry (void *); extern void gt_ggc_mx_machine_function (void *); extern void gt_ggc_mx_answer (void *); extern void gt_ggc_mx_cpp_macro (void *); extern void gt_ggc_mx_cpp_token (void *); extern void gt_ggc_mx_rtvec_def (void *); extern void gt_ggc_mx_rtx_def (void *); extern void gt_ggc_mx_location_s (void *); extern void gt_ggc_m_II17splay_tree_node_s (void *); extern void gt_ggc_m_P9tree_nodeP9tree_node17splay_tree_node_s (void *); extern void gt_ggc_m_IP9tree_node17splay_tree_node_s (void *); extern void gt_ggc_m_SP9tree_node17splay_tree_node_s (void *); extern void gt_ggc_m_P18treetreehash_entry4htab (void *); extern void gt_ggc_m_P21pending_abstract_type4htab (void *); extern void gt_ggc_m_P15throw_stmt_node4htab (void *); extern void gt_ggc_m_P23constant_descriptor_rtx4htab (void *); extern void gt_ggc_m_P24constant_descriptor_tree4htab (void *); extern void gt_ggc_m_P14in_named_entry4htab (void *); extern void gt_ggc_m_P9type_hash4htab (void *); extern void gt_ggc_m_P13ehl_map_entry4htab (void *); extern void gt_ggc_m_P9tree_node4htab (void *); extern void gt_ggc_m_P9reg_attrs4htab (void *); extern void gt_ggc_m_P9mem_attrs4htab (void *); extern void gt_ggc_m_P7rtx_def4htab (void *); extern void gt_ggc_m_SP9tree_node12splay_tree_s (void *); extern void gt_ggc_m_P16var_loc_list_def4htab (void *); extern void gt_ggc_m_P10die_struct4htab (void *); extern void gt_ggc_m_P20indirect_string_node4htab (void *); extern void gt_ggc_m_IP9tree_node12splay_tree_s (void *); extern void gt_ggc_m_P9tree_nodeP9tree_node12splay_tree_s (void *); extern void gt_ggc_m_P19cgraph_varpool_node4htab (void *); extern void gt_ggc_m_P11cgraph_node4htab (void *); extern void gt_ggc_m_P15alias_set_entry15varray_head_tag (void *); extern void gt_ggc_m_II12splay_tree_s (void *); extern void gt_ggc_m_P9temp_slot15varray_head_tag (void *); extern void gt_pch_nx_c_scope (void *); extern void gt_pch_nx_c_binding (void *); extern void gt_pch_nx_eh_range (void *); extern void gt_pch_nx_binding_level (void *); extern void gt_pch_nx_java_line (void *); extern void gt_pch_nx_parser_ctxt (void *); extern void gt_pch_nx_jdeplist_s (void *); extern void gt_pch_nx_java_lexer (void *); extern void gt_pch_nx_ZipDirectory (void *); extern void gt_pch_nx_treetreehash_entry (void *); extern void gt_pch_nx_CPool (void *); extern void gt_pch_nx_JCF (void *); extern void gt_pch_nx_align_stack (void *); extern void gt_pch_nx_pending_abstract_type (void *); extern void gt_pch_nx_cp_parser (void *); extern void gt_pch_nx_cp_parser_context (void *); extern void gt_pch_nx_cp_lexer (void *); extern void gt_pch_nx_cp_token_block (void *); extern void gt_pch_nx_cp_token (void *); extern void gt_pch_nx_VEC_deferred_access (void *); extern void gt_pch_nx_VEC_tree_pair_s (void *); extern void gt_pch_nx_named_label_list (void *); extern void gt_pch_nx_named_label_use_list (void *); extern void gt_pch_nx_saved_scope (void *); extern void gt_pch_nx_cp_token_cache (void *); extern void gt_pch_nx_VEC_cp_class_binding (void *); extern void gt_pch_nx_VEC_cxx_saved_binding (void *); extern void gt_pch_nx_cp_binding_level (void *); extern void gt_pch_nx_cxx_binding (void *); extern void gt_pch_nx_binding_entry_s (void *); extern void gt_pch_nx_binding_table_s (void *); extern void gt_pch_nx_v_must_def_optype_d (void *); extern void gt_pch_nx_vuse_optype_d (void *); extern void gt_pch_nx_v_may_def_optype_d (void *); extern void gt_pch_nx_use_optype_d (void *); extern void gt_pch_nx_def_optype_d (void *); extern void gt_pch_nx_throw_stmt_node (void *); extern void gt_pch_nx_edge_prediction (void *); extern void gt_pch_nx_constant_descriptor_rtx (void *); extern void gt_pch_nx_constant_descriptor_tree (void *); extern void gt_pch_nx_in_named_entry (void *); extern void gt_pch_nx_rtx_constant_pool (void *); extern void gt_pch_nx_type_hash (void *); extern void gt_pch_nx_string_pool_data (void *); extern void gt_pch_nx_eh_region (void *); extern void gt_pch_nx_ehl_map_entry (void *); extern void gt_pch_nx_var_loc_list_def (void *); extern void gt_pch_nx_var_loc_node (void *); extern void gt_pch_nx_limbo_die_struct (void *); extern void gt_pch_nx_dw_ranges_struct (void *); extern void gt_pch_nx_pubname_struct (void *); extern void gt_pch_nx_dw_separate_line_info_struct (void *); extern void gt_pch_nx_dw_line_info_struct (void *); extern void gt_pch_nx_dw_attr_struct (void *); extern void gt_pch_nx_dw_loc_list_struct (void *); extern void gt_pch_nx_queued_reg_save (void *); extern void gt_pch_nx_indirect_string_node (void *); extern void gt_pch_nx_dw_loc_descr_struct (void *); extern void gt_pch_nx_dw_fde_struct (void *); extern void gt_pch_nx_dw_cfi_struct (void *); extern void gt_pch_nx_typeinfo (void *); extern void gt_pch_nx_alias_set_entry (void *); extern void gt_pch_nx_c_arg_info (void *); extern void gt_pch_nx_c_switch (void *); extern void gt_pch_nx_sorted_fields_type (void *); extern void gt_pch_nx_cgraph_varpool_node (void *); extern void gt_pch_nx_cgraph_edge (void *); extern void gt_pch_nx_static_vars_info_d (void *); extern void gt_pch_nx_global_static_vars_info_d (void *); extern void gt_pch_nx_local_static_vars_info_d (void *); extern void gt_pch_nx_cgraph_node (void *); extern void gt_pch_nx_bb_ann_d (void *); extern void gt_pch_nx_reorder_block_def (void *); extern void gt_pch_nx_et_node (void *); extern void gt_pch_nx_loop (void *); extern void gt_pch_nx_elt_loc_list (void *); extern void gt_pch_nx_cselib_val_struct (void *); extern void gt_pch_nx_elt_list (void *); extern void gt_pch_nx_reg_info_def (void *); extern void gt_pch_nx_lang_tree_node (void *); extern void gt_pch_nx_value_set (void *); extern void gt_pch_nx_tree_statement_list_node (void *); extern void gt_pch_nx_lang_decl (void *); extern void gt_pch_nx_alias_var_def (void *); extern void gt_pch_nx_lang_type (void *); extern void gt_pch_nx_die_struct (void *); extern void gt_pch_nx_dataflow_d (void *); extern void gt_pch_nx_edge_def (void *); extern void gt_pch_nx_ptr_info_def (void *); extern void gt_pch_nx_real_value (void *); extern void gt_pch_nx_tree_ann_d (void *); extern void gt_pch_nx_VEC_tree (void *); extern void gt_pch_nx_convert_optab (void *); extern void gt_pch_nx_optab (void *); extern void gt_pch_nx_basic_block_def (void *); extern void gt_pch_nx_reg_attrs (void *); extern void gt_pch_nx_mem_attrs (void *); extern void gt_pch_nx_language_function (void *); extern void gt_pch_nx_temp_slot (void *); extern void gt_pch_nx_varray_head_tag (void *); extern void gt_pch_nx_initial_value_struct (void *); extern void gt_pch_nx_varasm_status (void *); extern void gt_pch_nx_eh_status (void *); extern void gt_pch_nx_function (void *); extern void gt_pch_nx_expr_status (void *); extern void gt_pch_nx_emit_status (void *); extern void gt_pch_nx_sequence_stack (void *); extern void gt_pch_nx_var_refs_queue (void *); extern void gt_pch_nx_bitmap_head_def (void *); extern void gt_pch_nx_bitmap_element_def (void *); extern void gt_pch_nx_stack_local_entry (void *); extern void gt_pch_nx_machine_function (void *); extern void gt_pch_nx_answer (void *); extern void gt_pch_nx_cpp_macro (void *); extern void gt_pch_nx_cpp_token (void *); extern void gt_pch_nx_rtvec_def (void *); extern void gt_pch_nx_rtx_def (void *); extern void gt_pch_nx_location_s (void *); extern void gt_pch_n_II17splay_tree_node_s (void *); extern void gt_pch_n_P9tree_nodeP9tree_node17splay_tree_node_s (void *); extern void gt_pch_n_IP9tree_node17splay_tree_node_s (void *); extern void gt_pch_n_SP9tree_node17splay_tree_node_s (void *); extern void gt_pch_n_P18treetreehash_entry4htab (void *); extern void gt_pch_n_P21pending_abstract_type4htab (void *); extern void gt_pch_n_P15throw_stmt_node4htab (void *); extern void gt_pch_n_P23constant_descriptor_rtx4htab (void *); extern void gt_pch_n_P24constant_descriptor_tree4htab (void *); extern void gt_pch_n_P14in_named_entry4htab (void *); extern void gt_pch_n_P9type_hash4htab (void *); extern void gt_pch_n_P13ehl_map_entry4htab (void *); extern void gt_pch_n_P9tree_node4htab (void *); extern void gt_pch_n_P9reg_attrs4htab (void *); extern void gt_pch_n_P9mem_attrs4htab (void *); extern void gt_pch_n_P7rtx_def4htab (void *); extern void gt_pch_n_SP9tree_node12splay_tree_s (void *); extern void gt_pch_n_P16var_loc_list_def4htab (void *); extern void gt_pch_n_P10die_struct4htab (void *); extern void gt_pch_n_P20indirect_string_node4htab (void *); extern void gt_pch_n_IP9tree_node12splay_tree_s (void *); extern void gt_pch_n_P9tree_nodeP9tree_node12splay_tree_s (void *); extern void gt_pch_n_P19cgraph_varpool_node4htab (void *); extern void gt_pch_n_P11cgraph_node4htab (void *); extern void gt_pch_n_P15alias_set_entry15varray_head_tag (void *); extern void gt_pch_n_II12splay_tree_s (void *); extern void gt_pch_n_P9temp_slot15varray_head_tag (void *); extern void gt_pch_p_7c_scope (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_9c_binding (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_13binding_level (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_11parser_ctxt (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_18treetreehash_entry (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_5CPool (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_3JCF (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_11align_stack (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_21pending_abstract_type (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_9cp_parser (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_17cp_parser_context (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_8cp_lexer (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_14cp_token_block (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_8cp_token (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_19VEC_deferred_access (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_15VEC_tree_pair_s (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_16named_label_list (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_20named_label_use_list (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_11saved_scope (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_14cp_token_cache (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_20VEC_cp_class_binding (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_21VEC_cxx_saved_binding (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_16cp_binding_level (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_11cxx_binding (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_15binding_entry_s (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_15binding_table_s (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_19v_must_def_optype_d (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_13vuse_optype_d (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_18v_may_def_optype_d (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_12use_optype_d (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_12def_optype_d (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_15throw_stmt_node (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_15edge_prediction (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_23constant_descriptor_rtx (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_24constant_descriptor_tree (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_14in_named_entry (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_17rtx_constant_pool (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_9type_hash (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_16string_pool_data (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_9eh_region (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_13ehl_map_entry (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_16var_loc_list_def (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_12var_loc_node (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_16limbo_die_struct (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_16dw_ranges_struct (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_14pubname_struct (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_28dw_separate_line_info_struct (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_19dw_line_info_struct (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_14dw_attr_struct (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_18dw_loc_list_struct (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_15queued_reg_save (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_20indirect_string_node (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_19dw_loc_descr_struct (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_13dw_fde_struct (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_13dw_cfi_struct (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_8typeinfo (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_15alias_set_entry (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_18sorted_fields_type (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_19cgraph_varpool_node (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_11cgraph_edge (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_18static_vars_info_d (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_25global_static_vars_info_d (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_24local_static_vars_info_d (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_11cgraph_node (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_8bb_ann_d (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_12elt_loc_list (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_17cselib_val_struct (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_8elt_list (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_14lang_tree_node (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_24tree_statement_list_node (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_9lang_decl (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_9lang_type (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_10die_struct (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_10dataflow_d (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_8edge_def (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_12ptr_info_def (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_10real_value (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_10tree_ann_d (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_8VEC_tree (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_13convert_optab (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_5optab (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_15basic_block_def (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_9reg_attrs (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_9mem_attrs (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_17language_function (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_9temp_slot (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_15varray_head_tag (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_20initial_value_struct (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_13varasm_status (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_9eh_status (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_8function (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_11expr_status (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_11emit_status (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_14sequence_stack (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_14var_refs_queue (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_15bitmap_head_def (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_18bitmap_element_def (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_17stack_local_entry (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_16machine_function (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_6answer (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_9cpp_macro (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_9cpp_token (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_9rtvec_def (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_7rtx_def (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_10location_s (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_II17splay_tree_node_s (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_P9tree_nodeP9tree_node17splay_tree_node_s (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_IP9tree_node17splay_tree_node_s (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_SP9tree_node17splay_tree_node_s (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_P18treetreehash_entry4htab (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_P21pending_abstract_type4htab (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_P15throw_stmt_node4htab (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_P23constant_descriptor_rtx4htab (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_P24constant_descriptor_tree4htab (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_P14in_named_entry4htab (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_P9type_hash4htab (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_P13ehl_map_entry4htab (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_P9tree_node4htab (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_P9reg_attrs4htab (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_P9mem_attrs4htab (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_P7rtx_def4htab (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_SP9tree_node12splay_tree_s (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_P16var_loc_list_def4htab (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_P10die_struct4htab (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_P20indirect_string_node4htab (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_IP9tree_node12splay_tree_s (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_P9tree_nodeP9tree_node12splay_tree_s (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_P19cgraph_varpool_node4htab (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_P11cgraph_node4htab (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_P15alias_set_entry15varray_head_tag (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_II12splay_tree_s (void *, void *, gt_pointer_operator, void *); extern void gt_pch_p_P9temp_slot15varray_head_tag (void *, void *, gt_pointer_operator, void *); typedef void (*gt_note_pointers) (void *, void *, gt_pointer_operator, void *); typedef void (*gt_handle_reorder) (void *, void *, gt_pointer_operator, void *); extern int gt_pch_note_object (void *, void *, gt_note_pointers); extern void gt_pch_note_reorder (void *, void *, gt_handle_reorder); typedef void (*gt_pointer_walker) (void *); struct ggc_root_tab { void *base; size_t nelt; size_t stride; gt_pointer_walker cb; gt_pointer_walker pchw; }; extern const struct ggc_root_tab * const gt_ggc_rtab[]; extern const struct ggc_root_tab * const gt_ggc_deletable_rtab[]; extern const struct ggc_root_tab * const gt_pch_cache_rtab[]; extern const struct ggc_root_tab * const gt_pch_scalar_rtab[]; struct htab; struct ggc_cache_tab { struct htab * *base; size_t nelt; size_t stride; gt_pointer_walker cb; gt_pointer_walker pchw; int (*marked_p) (const void *); }; extern const struct ggc_cache_tab * const gt_ggc_cache_rtab[]; extern int ggc_set_mark (const void *); extern int ggc_marked_p (const void *); extern void ggc_mark_stringpool (void); extern void ggc_mark_roots (void); extern void gt_pch_save_stringpool (void); extern void gt_pch_fixup_stringpool (void); extern void gt_pch_restore_stringpool (void); extern void gt_pch_p_S (void *, void *, gt_pointer_operator, void *); extern void gt_pch_n_S (const void *); extern void gt_ggc_m_S (void *); extern void init_stringpool (void); struct alloc_zone; extern void init_ggc (void); extern struct alloc_zone *new_ggc_zone (const char *); extern void destroy_ggc_zone (struct alloc_zone *); extern void ggc_push_context (void); extern void ggc_pop_context (void); struct ggc_pch_data; extern struct ggc_pch_data *init_ggc_pch (void); extern void ggc_pch_count_object (struct ggc_pch_data *, void *, size_t, unsigned char); extern size_t ggc_pch_total_size (struct ggc_pch_data *); extern void ggc_pch_this_base (struct ggc_pch_data *, void *); extern char *ggc_pch_alloc_object (struct ggc_pch_data *, void *, size_t, unsigned char); extern void ggc_pch_prepare_write (struct ggc_pch_data *, FILE *); extern void ggc_pch_write_object (struct ggc_pch_data *, FILE *, void *, void *, size_t, unsigned char); extern void ggc_pch_finish (struct ggc_pch_data *, FILE *); extern void ggc_pch_read (FILE *, void *); extern struct alloc_zone *garbage_zone; extern struct alloc_zone *rtl_zone; extern struct alloc_zone *tree_zone; extern unsigned char ggc_force_collect; extern void *ggc_alloc_stat (size_t ); extern void *ggc_alloc_zone_stat (size_t, struct alloc_zone * ); extern void *ggc_alloc_typed_stat (enum gt_types_enum, size_t ); extern void *ggc_alloc_cleared_stat (size_t ); extern void *ggc_alloc_cleared_zone (size_t, struct alloc_zone * ); extern void *ggc_realloc_stat (void *, size_t ); extern void *ggc_calloc (size_t, size_t); extern void ggc_free (void *); extern void ggc_record_overhead (size_t, size_t, void * ); extern void ggc_free_overhead (void *); extern void ggc_prune_overhead_list (void); extern void dump_ggc_loc_statistics (void); extern void *ggc_splay_alloc (int, void *); extern void ggc_splay_dont_free (void *, void *); extern const char *ggc_alloc_string (const char *contents, int length); extern void ggc_collect (void); extern size_t ggc_get_size (const void *); extern void gt_pch_save (FILE *f); extern void gt_pch_restore (FILE *f); typedef struct ggc_statistics { int unused; } ggc_statistics; extern void ggc_print_common_statistics (FILE *, ggc_statistics *); extern void ggc_print_statistics (void); extern void stringpool_statistics (void); extern int ggc_min_expand_heuristic (void); extern int ggc_min_heapsize_heuristic (void); extern void init_ggc_heuristics (void); struct var_refs_queue { rtx modified; enum machine_mode promoted_mode; int unsignedp; struct var_refs_queue *next; }; struct sequence_stack { rtx first; rtx last; struct sequence_stack *next; }; extern struct sequence_stack *sequence_stack; struct simple_obstack_stack { struct obstack *obstack; struct simple_obstack_stack *next; }; struct emit_status { int x_reg_rtx_no; int x_first_label_num; rtx x_first_insn; rtx x_last_insn; struct sequence_stack *sequence_stack; int x_cur_insn_uid; location_t x_last_location; int regno_pointer_align_length; unsigned char * regno_pointer_align; rtx * x_regno_reg_rtx; }; struct expr_status { int x_pending_stack_adjust; int x_inhibit_defer_pop; int x_stack_pointer_delta; rtx x_saveregs_value; rtx x_apply_args_value; rtx x_forced_labels; }; struct function { struct eh_status *eh; struct expr_status *expr; struct emit_status *emit; struct varasm_status *varasm; tree saved_tree; tree saved_args; tree saved_static_chain_decl; tree decl; struct function *outer; int pops_args; int args_size; int pretend_args_size; int outgoing_args_size; rtx arg_offset_rtx; CUMULATIVE_ARGS args_info; rtx return_rtx; rtx internal_arg_pointer; struct initial_value_struct *hard_reg_initial_vals; rtx x_nonlocal_goto_handler_labels; rtx x_return_label; rtx x_naked_return_label; rtx x_stack_slot_list; rtx x_tail_recursion_reentry; rtx x_arg_pointer_save_area; long x_frame_offset; tree static_chain_decl; tree nonlocal_goto_save_area; rtx x_parm_birth_insn; struct varray_head_tag * x_used_temp_slots; struct temp_slot *x_avail_temp_slots; int x_temp_slot_level; struct var_refs_queue *fixup_var_refs_queue; int inlinable; int no_debugging_symbols; rtvec original_arg_vector; tree original_decl_initial; int inl_max_label_num; int funcdef_no; struct machine_function * machine; unsigned int stack_alignment_needed; unsigned int preferred_stack_boundary; unsigned char recursive_call_emit; unsigned char tail_call_emit; struct language_function * language; rtx epilogue_delay_list; enum function_frequency { FUNCTION_FREQUENCY_UNLIKELY_EXECUTED, FUNCTION_FREQUENCY_NORMAL, FUNCTION_FREQUENCY_HOT } function_frequency; int max_jumptable_ents; int last_label_uid; location_t function_end_locus; struct varray_head_tag *ib_boundaries_block; tree unexpanded_var_list; unsigned int returns_struct : 1; unsigned int returns_pcc_struct : 1; unsigned int returns_pointer : 1; unsigned int calls_setjmp : 1; unsigned int calls_longjmp : 1; unsigned int calls_alloca : 1; unsigned int calls_eh_return : 1; unsigned int has_nonlocal_label : 1; unsigned int has_nonlocal_goto : 1; unsigned int contains_functions : 1; unsigned int has_computed_jump : 1; unsigned int is_thunk : 1; unsigned int all_throwers_are_sibcalls : 1; unsigned int instrument_entry_exit : 1; unsigned int profile : 1; unsigned int limit_stack : 1; unsigned int stdarg : 1; unsigned int x_dont_save_pending_sizes_p : 1; unsigned int uses_const_pool : 1; unsigned int uses_pic_offset_table : 1; unsigned int uses_eh_lsda : 1; unsigned int arg_pointer_save_area_init : 1; }; extern struct function *cfun; extern struct function *outer_function_chain; extern int virtuals_instantiated; extern int trampolines_created; struct function *find_function_data (tree); extern void reorder_blocks (void); extern void number_blocks (tree); extern void clear_block_marks (tree); extern tree blocks_nreverse (tree); extern void reset_block_changes (void); extern void record_block_change (tree); extern void finalize_block_changes (void); extern void check_block_change (rtx, tree *); extern void free_block_changes (void); extern long get_frame_size (void); extern long get_func_frame_size (struct function *); extern struct machine_function * (*init_machine_status) (void); extern void restore_emit_status (struct function *); extern void free_after_parsing (struct function *); extern void free_after_compilation (struct function *); extern void init_varasm_status (struct function *); extern rtx get_arg_pointer_save_area (struct function *); extern void init_virtual_regs (struct emit_status *); extern void instantiate_virtual_regs (void); extern const char *current_function_name (void); extern void init_function_once (void); extern void do_warn_unused_parameter (tree); extern unsigned char pass_by_reference (CUMULATIVE_ARGS *, enum machine_mode, tree, unsigned char); extern unsigned char reference_callee_copied (CUMULATIVE_ARGS *, enum machine_mode, tree, unsigned char); typedef unsigned int hashval_t; typedef hashval_t (*htab_hash) (const void *); typedef int (*htab_eq) (const void *, const void *); typedef void (*htab_del) (void *); typedef int (*htab_trav) (void **, void *); typedef void * (*htab_alloc) (size_t, size_t); typedef void (*htab_free) (void *); typedef void * (*htab_alloc_with_arg) (void *, size_t, size_t); typedef void (*htab_free_with_arg) (void *, void *); struct htab { htab_hash hash_f; htab_eq eq_f; htab_del del_f; void * * entries; size_t size; size_t n_elements; size_t n_deleted; unsigned int searches; unsigned int collisions; htab_alloc alloc_f; htab_free free_f; void * alloc_arg; htab_alloc_with_arg alloc_with_arg_f; htab_free_with_arg free_with_arg_f; unsigned int size_prime_index; }; typedef struct htab *htab_t; enum insert_option {NO_INSERT, INSERT}; extern htab_t htab_create_alloc (size_t, htab_hash, htab_eq, htab_del, htab_alloc, htab_free); extern htab_t htab_create_alloc_ex (size_t, htab_hash, htab_eq, htab_del, void *, htab_alloc_with_arg, htab_free_with_arg); extern htab_t htab_create (size_t, htab_hash, htab_eq, htab_del); extern htab_t htab_try_create (size_t, htab_hash, htab_eq, htab_del); extern void htab_set_functions_ex (htab_t, htab_hash, htab_eq, htab_del, void *, htab_alloc_with_arg, htab_free_with_arg); extern void htab_delete (htab_t); extern void htab_empty (htab_t); extern void * htab_find (htab_t, const void *); extern void * *htab_find_slot (htab_t, const void *, enum insert_option); extern void * htab_find_with_hash (htab_t, const void *, hashval_t); extern void * *htab_find_slot_with_hash (htab_t, const void *, hashval_t, enum insert_option); extern void htab_clear_slot (htab_t, void **); extern void htab_remove_elt (htab_t, void *); extern void htab_remove_elt_with_hash (htab_t, void *, hashval_t); extern void htab_traverse (htab_t, htab_trav, void *); extern void htab_traverse_noresize (htab_t, htab_trav, void *); extern size_t htab_size (htab_t); extern size_t htab_elements (htab_t); extern double htab_collisions (htab_t); extern htab_hash htab_hash_pointer; extern htab_eq htab_eq_pointer; extern hashval_t htab_hash_string (const void *); extern hashval_t iterative_hash (const void *, size_t, hashval_t); typedef unsigned long int splay_tree_key; typedef unsigned long int splay_tree_value; typedef struct splay_tree_node_s *splay_tree_node; typedef int (*splay_tree_compare_fn) (splay_tree_key, splay_tree_key); typedef void (*splay_tree_delete_key_fn) (splay_tree_key); typedef void (*splay_tree_delete_value_fn) (splay_tree_value); typedef int (*splay_tree_foreach_fn) (splay_tree_node, void*); typedef void * (*splay_tree_allocate_fn) (int, void *); typedef void (*splay_tree_deallocate_fn) (void *, void *); struct splay_tree_node_s { splay_tree_key key; splay_tree_value value; splay_tree_node left; splay_tree_node right; }; struct splay_tree_s { splay_tree_node root; splay_tree_compare_fn comp; splay_tree_delete_key_fn delete_key; splay_tree_delete_value_fn delete_value; splay_tree_allocate_fn allocate; splay_tree_deallocate_fn deallocate; void * allocate_data; }; typedef struct splay_tree_s *splay_tree; extern splay_tree splay_tree_new (splay_tree_compare_fn, splay_tree_delete_key_fn, splay_tree_delete_value_fn); extern splay_tree splay_tree_new_with_allocator (splay_tree_compare_fn, splay_tree_delete_key_fn, splay_tree_delete_value_fn, splay_tree_allocate_fn, splay_tree_deallocate_fn, void *); extern void splay_tree_delete (splay_tree); extern splay_tree_node splay_tree_insert (splay_tree, splay_tree_key, splay_tree_value); extern void splay_tree_remove (splay_tree, splay_tree_key); extern splay_tree_node splay_tree_lookup (splay_tree, splay_tree_key); extern splay_tree_node splay_tree_predecessor (splay_tree, splay_tree_key); extern splay_tree_node splay_tree_successor (splay_tree, splay_tree_key); extern splay_tree_node splay_tree_max (splay_tree); extern splay_tree_node splay_tree_min (splay_tree); extern int splay_tree_foreach (splay_tree, splay_tree_foreach_fn, void*); extern int splay_tree_compare_ints (splay_tree_key, splay_tree_key); extern int splay_tree_compare_pointers (splay_tree_key, splay_tree_key); struct const_equiv_data { rtx rtx; unsigned age; }; enum varray_data_enum { VARRAY_DATA_C, VARRAY_DATA_UC, VARRAY_DATA_S, VARRAY_DATA_US, VARRAY_DATA_I, VARRAY_DATA_U, VARRAY_DATA_L, VARRAY_DATA_UL, VARRAY_DATA_HINT, VARRAY_DATA_UHINT, VARRAY_DATA_GENERIC, VARRAY_DATA_GENERIC_NOGC, VARRAY_DATA_CPTR, VARRAY_DATA_RTX, VARRAY_DATA_RTVEC, VARRAY_DATA_TREE, VARRAY_DATA_BITMAP, VARRAY_DATA_REG, VARRAY_DATA_CONST_EQUIV, VARRAY_DATA_BB, VARRAY_DATA_TE, VARRAY_DATA_EDGE, VARRAY_DATA_TREE_PTR, NUM_VARRAY_DATA }; typedef union varray_data_tag { char c[1]; unsigned char uc[1]; short s[1]; unsigned short us[1]; int i[1]; unsigned int u[1]; long l[1]; unsigned long ul[1]; long hint[1]; unsigned long uhint[1]; void * generic[1]; void * generic_nogc[1]; char * cptr[1]; rtx rtx[1]; rtvec rtvec[1]; tree tree[1]; struct bitmap_head_def * bitmap[1]; struct reg_info_def * reg[1]; struct const_equiv_data const_equiv[1]; struct basic_block_def * bb[1]; struct elt_list * te[1]; struct edge_def * e[1]; tree * tp[1]; } varray_data; struct varray_head_tag { size_t num_elements; size_t elements_used; enum varray_data_enum type; const char *name; varray_data data; }; typedef struct varray_head_tag *varray_type; extern varray_type varray_init (size_t, enum varray_data_enum, const char *); extern varray_type varray_grow (varray_type, size_t); extern void varray_clear (varray_type); extern void varray_copy (varray_type v1, varray_type v2); extern void dump_varray_statistics (void); extern void varray_check_failed (varray_type, size_t, const char *, int, const char *) __attribute__ ((__noreturn__)); extern void varray_underflow (varray_type, const char *, int, const char *) __attribute__ ((__noreturn__)); typedef struct cpp_reader cpp_reader; typedef struct cpp_buffer cpp_buffer; typedef struct cpp_options cpp_options; typedef struct cpp_token cpp_token; typedef struct cpp_string cpp_string; typedef struct cpp_hashnode cpp_hashnode; typedef struct cpp_macro cpp_macro; typedef struct cpp_callbacks cpp_callbacks; typedef struct cpp_dir cpp_dir; struct answer; struct _cpp_file; enum cpp_ttype { CPP_EQ, CPP_NOT, CPP_GREATER, CPP_LESS, CPP_PLUS, CPP_MINUS, CPP_MULT, CPP_DIV, CPP_MOD, CPP_AND, CPP_OR, CPP_XOR, CPP_RSHIFT, CPP_LSHIFT, CPP_MIN, CPP_MAX, CPP_COMPL, CPP_AND_AND, CPP_OR_OR, CPP_QUERY, CPP_COLON, CPP_COMMA, CPP_OPEN_PAREN, CPP_CLOSE_PAREN, CPP_EOF, CPP_EQ_EQ, CPP_NOT_EQ, CPP_GREATER_EQ, CPP_LESS_EQ, CPP_PLUS_EQ, CPP_MINUS_EQ, CPP_MULT_EQ, CPP_DIV_EQ, CPP_MOD_EQ, CPP_AND_EQ, CPP_OR_EQ, CPP_XOR_EQ, CPP_RSHIFT_EQ, CPP_LSHIFT_EQ, CPP_MIN_EQ, CPP_MAX_EQ, CPP_HASH, CPP_PASTE, CPP_OPEN_SQUARE, CPP_CLOSE_SQUARE, CPP_OPEN_BRACE, CPP_CLOSE_BRACE, CPP_SEMICOLON, CPP_ELLIPSIS, CPP_PLUS_PLUS, CPP_MINUS_MINUS, CPP_DEREF, CPP_DOT, CPP_SCOPE, CPP_DEREF_STAR, CPP_DOT_STAR, CPP_ATSIGN, CPP_NAME, CPP_AT_NAME, CPP_NUMBER, CPP_CHAR, CPP_WCHAR, CPP_OTHER, CPP_STRING, CPP_WSTRING, CPP_OBJC_STRING, CPP_HEADER_NAME, CPP_COMMENT, CPP_MACRO_ARG, CPP_PRAGMA, CPP_PADDING, N_TTYPES, CPP_LAST_EQ = CPP_MAX, CPP_FIRST_DIGRAPH = CPP_HASH, CPP_LAST_PUNCTUATOR= CPP_DOT_STAR, CPP_LAST_CPP_OP = CPP_LESS_EQ }; enum c_lang {CLK_GNUC89 = 0, CLK_GNUC99, CLK_STDC89, CLK_STDC94, CLK_STDC99, CLK_GNUCXX, CLK_CXX98, CLK_ASM}; struct cpp_string { unsigned int len; const unsigned char *text; }; enum cpp_token_fld_kind { CPP_TOKEN_FLD_NODE, CPP_TOKEN_FLD_SOURCE, CPP_TOKEN_FLD_STR, CPP_TOKEN_FLD_ARG_NO, CPP_TOKEN_FLD_NONE }; struct cpp_token { source_location src_loc; __extension__ enum cpp_ttype type : 8; unsigned char flags; union cpp_token_u { cpp_hashnode * node; cpp_token * source; struct cpp_string str; unsigned int arg_no; } val; }; extern enum cpp_token_fld_kind cpp_token_val_index (cpp_token *tok); typedef unsigned int cppchar_t; typedef int cppchar_signed_t; enum cpp_deps_style { DEPS_NONE = 0, DEPS_USER, DEPS_SYSTEM }; struct cpp_options { unsigned int tabstop; enum c_lang lang; unsigned char cplusplus; unsigned char cplusplus_comments; unsigned char objc; unsigned char discard_comments; unsigned char discard_comments_in_macro_exp; unsigned char trigraphs; unsigned char digraphs; unsigned char extended_numbers; unsigned char print_include_names; unsigned char pedantic_errors; unsigned char inhibit_warnings; unsigned char warn_deprecated; unsigned char warn_system_headers; unsigned char inhibit_errors; unsigned char warn_comments; unsigned char warn_missing_include_dirs; unsigned char warn_trigraphs; unsigned char warn_multichar; unsigned char warn_traditional; unsigned char warn_long_long; unsigned char warn_endif_labels; unsigned char warn_num_sign_change; unsigned char warn_variadic_macros; unsigned char warnings_are_errors; unsigned char remap; unsigned char dollars_in_ident; unsigned char warn_dollars; unsigned char warn_undef; unsigned char warn_unused_macros; unsigned char c99; unsigned char std; unsigned char pedantic; unsigned char preprocessed; unsigned char show_column; unsigned char operator_names; unsigned char traditional; const char *narrow_charset; const char *wide_charset; const char *input_charset; unsigned char warn_invalid_pch; unsigned char restore_pch_deps; struct { enum cpp_deps_style style; unsigned char missing_files; unsigned char phony_targets; unsigned char ignore_main_file; } deps; size_t precision, char_precision, int_precision, wchar_precision; unsigned char unsigned_char, unsigned_wchar; unsigned char bytes_big_endian; unsigned char stdc_0_in_system_headers; unsigned char defer_pragmas; }; typedef const char *(*missing_header_cb)(cpp_reader *, const char *header, cpp_dir **); struct cpp_callbacks { void (*line_change) (cpp_reader *, const cpp_token *, int); void (*file_change) (cpp_reader *, const struct line_map *); void (*dir_change) (cpp_reader *, const char *); void (*include) (cpp_reader *, unsigned int, const unsigned char *, const char *, int); void (*define) (cpp_reader *, unsigned int, cpp_hashnode *); void (*undef) (cpp_reader *, unsigned int, cpp_hashnode *); void (*ident) (cpp_reader *, unsigned int, const cpp_string *); void (*def_pragma) (cpp_reader *, unsigned int); int (*valid_pch) (cpp_reader *, const char *, int); void (*read_pch) (cpp_reader *, const char *, int, const char *); missing_header_cb missing_header; }; struct cpp_dir { struct cpp_dir *next; char *name; unsigned int len; unsigned char sysp; const char **name_map; char *(*construct) (const char *header, cpp_dir *dir); ino_t ino; dev_t dev; unsigned char user_supplied_p; }; extern const char *progname; enum node_type { NT_VOID = 0, NT_MACRO, NT_ASSERTION }; enum builtin_type { BT_SPECLINE = 0, BT_DATE, BT_FILE, BT_BASE_FILE, BT_INCLUDE_LEVEL, BT_TIME, BT_STDC, BT_PRAGMA }; enum { NTV_MACRO, NTV_ANSWER, NTV_BUILTIN, NTV_ARGUMENT, NTV_NONE }; struct cpp_hashnode { struct ht_identifier ident; unsigned int is_directive : 1; unsigned int directive_index : 7; unsigned char rid_code; __extension__ enum node_type type : 8; unsigned char flags; union _cpp_hashnode_value { cpp_macro * macro; struct answer * answers; enum builtin_type builtin; unsigned short arg_index; } value; }; extern cpp_reader *cpp_create_reader (enum c_lang, struct ht *, struct line_maps *); extern void cpp_set_lang (cpp_reader *, enum c_lang); extern void cpp_set_include_chains (cpp_reader *, cpp_dir *, cpp_dir *, int); extern cpp_options *cpp_get_options (cpp_reader *); extern cpp_callbacks *cpp_get_callbacks (cpp_reader *); extern void cpp_set_callbacks (cpp_reader *, cpp_callbacks *); extern struct deps *cpp_get_deps (cpp_reader *); extern const char *cpp_read_main_file (cpp_reader *, const char *); extern void cpp_init_builtins (cpp_reader *, int); extern void cpp_post_options (cpp_reader *); extern void cpp_init_iconv (cpp_reader *); extern int cpp_finish (cpp_reader *, FILE *deps_stream); extern void cpp_destroy (cpp_reader *); extern unsigned int cpp_errors (cpp_reader *); extern unsigned int cpp_token_len (const cpp_token *); extern unsigned char *cpp_token_as_text (cpp_reader *, const cpp_token *); extern unsigned char *cpp_spell_token (cpp_reader *, const cpp_token *, unsigned char *); extern void cpp_register_pragma (cpp_reader *, const char *, const char *, void (*) (cpp_reader *)); extern void cpp_handle_deferred_pragma (cpp_reader *, const cpp_string *); extern int cpp_avoid_paste (cpp_reader *, const cpp_token *, const cpp_token *); extern const cpp_token *cpp_get_token (cpp_reader *); extern const unsigned char *cpp_macro_definition (cpp_reader *, const cpp_hashnode *); extern void _cpp_backup_tokens (cpp_reader *, unsigned int); extern cppchar_t cpp_interpret_charconst (cpp_reader *, const cpp_token *, unsigned int *, int *); extern unsigned char cpp_interpret_string (cpp_reader *, const cpp_string *, size_t, cpp_string *, unsigned char); extern unsigned char cpp_interpret_string_notranslate (cpp_reader *, const cpp_string *, size_t, cpp_string *, unsigned char); extern void cpp_define (cpp_reader *, const char *); extern void cpp_assert (cpp_reader *, const char *); extern void cpp_undef (cpp_reader *, const char *); extern void cpp_unassert (cpp_reader *, const char *); extern void cpp_undef_all (cpp_reader *); extern cpp_buffer *cpp_push_buffer (cpp_reader *, const unsigned char *, size_t, int); extern int cpp_defined (cpp_reader *, const unsigned char *, int); typedef unsigned long cpp_num_part; typedef struct cpp_num cpp_num; struct cpp_num { cpp_num_part high; cpp_num_part low; unsigned char unsignedp; unsigned char overflow; }; extern unsigned cpp_classify_number (cpp_reader *, const cpp_token *); extern cpp_num cpp_interpret_integer (cpp_reader *, const cpp_token *, unsigned int type); cpp_num cpp_num_sign_extend (cpp_num, size_t); extern void cpp_error (cpp_reader *, int, const char *msgid, ...) __attribute__ ((__format__ (__printf__, 3, 4))) __attribute__ ((__nonnull__ (3))); extern void cpp_errno (cpp_reader *, int, const char *msgid); extern void cpp_error_with_line (cpp_reader *, int, source_location, unsigned, const char *msgid, ...) __attribute__ ((__format__ (__printf__, 5, 6))) __attribute__ ((__nonnull__ (5))); extern int cpp_ideq (const cpp_token *, const char *); extern void cpp_output_line (cpp_reader *, FILE *); extern void cpp_output_token (const cpp_token *, FILE *); extern const char *cpp_type2name (enum cpp_ttype); extern cppchar_t cpp_parse_escape (cpp_reader *, const unsigned char ** pstr, const unsigned char *limit, int wide); extern cpp_hashnode *cpp_lookup (cpp_reader *, const unsigned char *, unsigned int); typedef int (*cpp_cb) (cpp_reader *, cpp_hashnode *, void *); extern void cpp_forall_identifiers (cpp_reader *, cpp_cb, void *); extern void cpp_scan_nooutput (cpp_reader *); extern int cpp_sys_macro_p (cpp_reader *); extern unsigned char *cpp_quote_string (unsigned char *, const unsigned char *, unsigned int); extern unsigned char cpp_included (cpp_reader *, const char *); extern void cpp_make_system_header (cpp_reader *, int, int); extern unsigned char cpp_push_include (cpp_reader *, const char *); extern void cpp_change_file (cpp_reader *, enum lc_reason, const char *); extern const char *cpp_get_path (struct _cpp_file *); extern cpp_dir *cpp_get_dir (struct _cpp_file *); extern cpp_buffer *cpp_get_buffer (cpp_reader *); extern struct _cpp_file *cpp_get_file (cpp_buffer *); extern cpp_buffer *cpp_get_prev (cpp_buffer *); struct save_macro_data; extern int cpp_save_state (cpp_reader *, FILE *); extern int cpp_write_pch_deps (cpp_reader *, FILE *); extern int cpp_write_pch_state (cpp_reader *, FILE *); extern int cpp_valid_state (cpp_reader *, const char *, int); extern void cpp_prepare_state (cpp_reader *, struct save_macro_data **); extern int cpp_read_state (cpp_reader *, const char *, FILE *, struct save_macro_data *); enum rid { RID_STATIC = 0, RID_UNSIGNED, RID_LONG, RID_CONST, RID_EXTERN, RID_REGISTER, RID_TYPEDEF, RID_SHORT, RID_INLINE, RID_VOLATILE, RID_SIGNED, RID_AUTO, RID_RESTRICT, RID_COMPLEX, RID_THREAD, RID_FRIEND, RID_VIRTUAL, RID_EXPLICIT, RID_EXPORT, RID_MUTABLE, RID_IN, RID_OUT, RID_INOUT, RID_BYCOPY, RID_BYREF, RID_ONEWAY, RID_INT, RID_CHAR, RID_FLOAT, RID_DOUBLE, RID_VOID, RID_ENUM, RID_STRUCT, RID_UNION, RID_IF, RID_ELSE, RID_WHILE, RID_DO, RID_FOR, RID_SWITCH, RID_CASE, RID_DEFAULT, RID_BREAK, RID_CONTINUE, RID_RETURN, RID_GOTO, RID_SIZEOF, RID_ASM, RID_TYPEOF, RID_ALIGNOF, RID_ATTRIBUTE, RID_VA_ARG, RID_EXTENSION, RID_IMAGPART, RID_REALPART, RID_LABEL, RID_PTRBASE, RID_PTREXTENT, RID_PTRVALUE, RID_CHOOSE_EXPR, RID_TYPES_COMPATIBLE_P, RID_FUNCTION_NAME, RID_PRETTY_FUNCTION_NAME, RID_C99_FUNCTION_NAME, RID_BOOL, RID_WCHAR, RID_CLASS, RID_PUBLIC, RID_PRIVATE, RID_PROTECTED, RID_TEMPLATE, RID_NULL, RID_CATCH, RID_DELETE, RID_FALSE, RID_NAMESPACE, RID_NEW, RID_OFFSETOF, RID_OPERATOR, RID_THIS, RID_THROW, RID_TRUE, RID_TRY, RID_TYPENAME, RID_TYPEID, RID_USING, RID_CONSTCAST, RID_DYNCAST, RID_REINTCAST, RID_STATCAST, RID_ID, RID_AT_ENCODE, RID_AT_END, RID_AT_CLASS, RID_AT_ALIAS, RID_AT_DEFS, RID_AT_PRIVATE, RID_AT_PROTECTED, RID_AT_PUBLIC, RID_AT_PROTOCOL, RID_AT_SELECTOR, RID_AT_THROW, RID_AT_TRY, RID_AT_CATCH, RID_AT_FINALLY, RID_AT_SYNCHRONIZED, RID_AT_INTERFACE, RID_AT_IMPLEMENTATION, RID_MAX, RID_FIRST_MODIFIER = RID_STATIC, RID_LAST_MODIFIER = RID_ONEWAY, RID_FIRST_AT = RID_AT_ENCODE, RID_LAST_AT = RID_AT_IMPLEMENTATION, RID_FIRST_PQ = RID_IN, RID_LAST_PQ = RID_ONEWAY }; extern tree *ridpointers; enum c_tree_index { CTI_WCHAR_TYPE, CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE, CTI_WINT_TYPE, CTI_SIGNED_SIZE_TYPE, CTI_UNSIGNED_PTRDIFF_TYPE, CTI_INTMAX_TYPE, CTI_UINTMAX_TYPE, CTI_WIDEST_INT_LIT_TYPE, CTI_WIDEST_UINT_LIT_TYPE, CTI_CHAR_ARRAY_TYPE, CTI_WCHAR_ARRAY_TYPE, CTI_INT_ARRAY_TYPE, CTI_STRING_TYPE, CTI_CONST_STRING_TYPE, CTI_TRUTHVALUE_TYPE, CTI_TRUTHVALUE_TRUE, CTI_TRUTHVALUE_FALSE, CTI_DEFAULT_FUNCTION_TYPE, CTI_FUNCTION_NAME_DECL, CTI_PRETTY_FUNCTION_NAME_DECL, CTI_C99_FUNCTION_NAME_DECL, CTI_SAVED_FUNCTION_NAME_DECLS, CTI_VOID_ZERO, CTI_MAX }; struct c_common_identifier { struct tree_common common; struct cpp_hashnode node; }; extern tree c_global_trees[CTI_MAX]; struct sorted_fields_type { int len; tree elts[1]; }; typedef enum c_language_kind { clk_c = 0, clk_objc = 1, clk_cxx = 2, clk_objcxx = 3 } c_language_kind; extern c_language_kind c_language; struct stmt_tree_s { tree x_cur_stmt_list; int stmts_are_full_exprs_p; }; typedef struct stmt_tree_s *stmt_tree; struct c_language_function { struct stmt_tree_s x_stmt_tree; }; extern void (*lang_expand_function_end) (void); extern int (*lang_missing_noreturn_ok_p) (tree); extern void (*lang_post_pch_load) (void); extern void push_file_scope (void); extern void pop_file_scope (void); extern int yyparse (void); extern stmt_tree current_stmt_tree (void); extern tree push_stmt_list (void); extern tree re_push_stmt_list (tree); extern tree pop_stmt_list (tree); extern tree add_stmt (tree); extern void push_cleanup (tree, tree, unsigned char); extern tree walk_stmt_tree (tree *, walk_tree_fn, void *); extern int c_expand_decl (tree); extern int field_decl_cmp (const void *, const void *); extern void resort_sorted_fields (void *, void *, gt_pointer_operator, void *); extern unsigned char has_c_linkage (tree decl); extern int flag_preprocess_only; extern int flag_nil_receivers; extern int flag_objc_exceptions; extern int flag_objc_sjlj_exceptions; extern int flag_zero_link; extern int flag_replace_objc_classes; extern char flag_no_line_commands; extern char flag_no_output; extern char flag_dump_macros; extern char flag_dump_includes; extern unsigned char flag_pch_preprocess; extern const char *pch_file; extern int flag_iso; extern int flag_undef; extern int flag_no_builtin; extern int flag_no_nonansi_builtin; extern int flag_short_double; extern int flag_short_wchar; extern int flag_ms_extensions; extern int flag_no_asm; extern int flag_const_strings; extern int flag_signed_bitfields; extern int explicit_flag_signed_bitfields; extern int warn_write_strings; extern int warn_unknown_pragmas; extern int warn_format; extern int flag_cond_mismatch; extern int flag_isoc94; extern int flag_isoc99; extern int flag_hosted; extern int warn_main; extern int flag_gen_declaration; extern int flag_next_runtime; extern int print_struct_values; extern const char *constant_string_class_name; extern int flag_no_gnu_keywords; extern int flag_implement_inlines; extern int flag_implicit_templates; extern int flag_implicit_inline_templates; extern int flag_use_repository; extern int flag_optional_diags; extern int flag_elide_constructors; extern int flag_default_inline; extern int flag_rtti; extern int flag_conserve_space; extern int flag_access_control; extern int flag_check_new; extern int flag_new_for_scope; extern int flag_weak; extern int flag_working_directory; extern int flag_use_cxa_atexit; extern int flag_permissive; extern int flag_enforce_eh_specs; extern int flag_threadsafe_statics; extern int warn_implicit; extern int max_tinst_depth; extern int skip_evaluation; extern const struct attribute_spec c_common_attribute_table[]; extern const struct attribute_spec c_common_format_attribute_table[]; extern tree (*make_fname_decl) (tree, int); extern tree identifier_global_value (tree); extern void record_builtin_type (enum rid, const char *, tree); extern tree build_void_list_node (void); extern void start_fname_decls (void); extern void finish_fname_decls (void); extern const char *fname_as_string (int); extern tree fname_decl (unsigned, tree); extern void check_function_arguments (tree, tree); extern void check_function_arguments_recurse (void (*) (void *, tree, unsigned long), void *, tree, unsigned long); extern void check_function_format (tree, tree); extern void set_Wformat (int); extern tree handle_format_attribute (tree *, tree, tree, int, unsigned char *); extern tree handle_format_arg_attribute (tree *, tree, tree, int, unsigned char *); extern int c_common_handle_option (size_t code, const char *arg, int value); extern unsigned char c_common_missing_argument (const char *opt, size_t code); extern tree c_common_type_for_mode (enum machine_mode, int); extern tree c_common_type_for_size (unsigned int, int); extern tree c_common_unsigned_type (tree); extern tree c_common_signed_type (tree); extern tree c_common_signed_or_unsigned_type (int, tree); extern tree c_common_truthvalue_conversion (tree); extern void c_apply_type_quals_to_decl (int, tree); extern tree c_sizeof_or_alignof_type (tree, enum tree_code, int); extern tree c_alignof_expr (tree); extern void binary_op_error (enum tree_code); extern tree fix_string_type (tree); struct varray_head_tag; extern void constant_expression_warning (tree); extern tree convert_and_check (tree, tree); extern void overflow_warning (tree); extern void unsigned_conversion_warning (tree, tree); extern unsigned char c_determine_visibility (tree); extern tree shorten_compare (tree *, tree *, tree *, enum tree_code *); extern tree pointer_int_sum (enum tree_code, tree, tree); extern unsigned int min_precision (tree, int); extern tree c_build_qualified_type (tree, int); extern void c_common_nodes_and_builtins (void); extern void disable_builtin_function (const char *); extern tree build_va_arg (tree, tree); extern unsigned int c_common_init_options (unsigned int, const char **); extern unsigned char c_common_post_options (const char **); extern unsigned char c_common_init (void); extern void c_common_finish (void); extern void c_common_parse_file (int); extern long c_common_get_alias_set (tree); extern void c_register_builtin_type (tree, const char*); extern unsigned char c_promoting_integer_type_p (tree); extern int self_promoting_args_p (tree); extern tree strip_array_types (tree); extern tree strip_pointer_operator (tree); extern void c_parse_file (void); extern void finish_file (void); enum c_tree_code { C_DUMMY_TREE_CODE = LAST_AND_UNUSED_TREE_CODE, SIZEOF_EXPR, ARROW_EXPR, ALIGNOF_EXPR, EXPR_STMT, FOR_STMT, WHILE_STMT, DO_STMT, BREAK_STMT, CONTINUE_STMT, SWITCH_STMT, STMT_EXPR, COMPOUND_LITERAL_EXPR, LAST_C_TREE_CODE }; extern unsigned char statement_code_p[256]; extern int stmts_are_full_exprs_p (void); extern int anon_aggr_type_p (tree); extern void emit_local_var (tree); extern tree do_case (tree, tree); extern tree build_stmt (enum tree_code, ...); extern tree build_case_label (tree, tree, tree); extern tree build_continue_stmt (void); extern tree build_break_stmt (void); extern tree build_unary_op (enum tree_code, tree, int); extern tree build_binary_op (enum tree_code, tree, tree, int); extern int lvalue_p (tree); extern tree default_conversion (tree); extern tree common_type (tree, tree); extern tree decl_constant_value (tree); extern tree boolean_increment (enum tree_code, tree); extern int case_compare (splay_tree_key, splay_tree_key); extern tree c_add_case_label (splay_tree, tree, tree, tree, tree); extern void c_do_switch_warnings (splay_tree, tree); extern tree build_function_call (tree, tree); extern tree finish_label_address_expr (tree); extern tree lookup_label (tree); extern int vector_types_convertible_p (tree t1, tree t2); extern rtx c_expand_expr (tree, rtx, enum machine_mode, int, rtx *); extern tree c_staticp (tree); extern int c_common_unsafe_for_reeval (tree); extern void init_c_lex (void); extern void c_cpp_builtins (cpp_reader *); extern int pending_lang_change; struct c_fileinfo { int time; short interface_only; short interface_unknown; }; struct c_fileinfo *get_fileinfo (const char *); extern void dump_time_statistics (void); extern unsigned char c_dump_tree (void *, tree); extern void c_warn_unused_result (tree *); extern void verify_sequence_points (tree); extern tree fold_offsetof (tree); extern void c_genericize (tree); extern int c_gimplify_expr (tree *, tree *, tree *); extern tree c_build_bind_expr (tree, tree); extern void pch_init (void); extern int c_common_valid_pch (cpp_reader *pfile, const char *name, int fd); extern void c_common_read_pch (cpp_reader *pfile, const char *name, int fd, const char *orig); extern void c_common_write_pch (void); extern void c_common_no_more_pch (void); extern void c_common_pch_pragma (cpp_reader *pfile); extern void builtin_define_with_value (const char *, const char *, int); extern void c_stddef_cpp_builtins (void); extern void fe_file_change (const struct line_map *); extern void c_parse_error (const char *, enum cpp_ttype, tree); extern tree objc_is_class_name (tree); extern tree objc_is_object_ptr (tree); extern void objc_check_decl (tree); extern int objc_is_reserved_word (tree); extern int objc_comptypes (tree, tree, int); extern tree objc_message_selector (void); extern tree objc_lookup_ivar (tree); extern void objc_clear_super_receiver (void); extern int objc_is_public (tree, tree); extern tree objc_is_id (tree); extern void objc_declare_alias (tree, tree); extern void objc_declare_class (tree); extern void objc_declare_protocols (tree); extern tree objc_build_message_expr (tree); extern tree objc_finish_message_expr (tree, tree, tree); extern tree objc_build_selector_expr (tree); extern tree objc_build_protocol_expr (tree); extern tree objc_build_encode_expr (tree); extern tree objc_build_string_object (tree); extern tree objc_get_protocol_qualified_type (tree, tree); extern tree objc_get_class_reference (tree); extern tree objc_get_class_ivars (tree); extern void objc_start_class_interface (tree, tree, tree); extern void objc_start_category_interface (tree, tree, tree); extern void objc_start_protocol (tree, tree); extern void objc_continue_interface (void); extern void objc_finish_interface (void); extern void objc_start_class_implementation (tree, tree); extern void objc_start_category_implementation (tree, tree); extern void objc_continue_implementation (void); extern void objc_finish_implementation (void); extern void objc_set_visibility (int); extern void objc_set_method_type (enum tree_code); extern tree objc_build_method_signature (tree, tree, tree); extern void objc_add_method_declaration (tree); extern void objc_start_method_definition (tree); extern void objc_finish_method_definition (tree); extern void objc_add_instance_variable (tree); extern tree objc_build_keyword_decl (tree, tree, tree); extern tree objc_build_throw_stmt (tree); extern void objc_begin_try_stmt (location_t, tree); extern void objc_finish_try_stmt (void); extern void objc_begin_catch_clause (tree); extern void objc_finish_catch_clause (void); extern void objc_build_finally_clause (location_t, tree); extern void objc_build_synchronized (location_t, tree, tree); extern int objc_static_init_needed_p (void); extern tree objc_generate_static_init_call (tree); extern void *objc_get_current_scope (void); extern void objc_mark_locals_volatile (void *); extern void init_pp_output (FILE *); extern void preprocess_file (cpp_reader *); extern void pp_file_change (const struct line_map *); extern void pp_dir_change (cpp_reader *, const char *); typedef struct binding_table_s *binding_table; typedef struct binding_entry_s *binding_entry; typedef void (*bt_foreach_proc) (binding_entry, void *); struct binding_entry_s { binding_entry chain; tree name; tree type; }; extern void binding_table_remove_anonymous_types (binding_table); extern void binding_table_foreach (binding_table, bt_foreach_proc, void *); extern binding_entry binding_table_find (binding_table, tree); extern void cxx_remember_type_decls (binding_table); typedef struct cxx_binding cxx_binding; typedef struct cp_binding_level cxx_scope; struct cxx_binding { cxx_binding *previous; tree value; tree type; cxx_scope *scope; unsigned value_is_inherited : 1; unsigned is_local : 1; }; typedef struct cxx_saved_binding { tree identifier; cxx_binding *binding; tree real_type_value; } cxx_saved_binding; typedef struct VEC_cxx_saved_binding { unsigned num; unsigned alloc; cxx_saved_binding vec[1]; } VEC_cxx_saved_binding; static __inline__ unsigned VEC_cxx_saved_binding_length (const VEC_cxx_saved_binding *vec_) { return vec_ ? vec_->num : 0; } static __inline__ cxx_saved_binding *VEC_cxx_saved_binding_last (VEC_cxx_saved_binding *vec_ ,const char *file_,unsigned line_,const char *function_) { (void)((vec_ && vec_->num) ? 0 : (vec_assert_fail ("last","VEC(cxx_saved_binding)" ,file_,line_,function_), 0)); return &vec_->vec[vec_->num - 1]; } static __inline__ cxx_saved_binding *VEC_cxx_saved_binding_index (VEC_cxx_saved_binding *vec_, unsigned ix_ ,const char *file_,unsigned line_,const char *function_) { (void)((vec_ && ix_ < vec_->num) ? 0 : (vec_assert_fail ("index","VEC(cxx_saved_binding)" ,file_,line_,function_), 0)); return &vec_->vec[ix_]; } static __inline__ int VEC_cxx_saved_binding_iterate (VEC_cxx_saved_binding *vec_, unsigned ix_, cxx_saved_binding **ptr) { if (vec_ && ix_ < vec_->num) { *ptr = &vec_->vec[ix_]; return 1; } else { *ptr = 0; return 0; } } static __inline__ VEC_cxx_saved_binding *VEC_cxx_saved_binding_alloc (int alloc_ ) { return (VEC_cxx_saved_binding *) vec_gc_o_reserve (((void *)0), alloc_ - !alloc_, __builtin_offsetof (VEC_cxx_saved_binding, vec), sizeof (cxx_saved_binding) ); } static __inline__ void VEC_cxx_saved_binding_free (VEC_cxx_saved_binding **vec_) { vec_gc_free (*vec_); *vec_ = ((void *)0); } static __inline__ size_t VEC_cxx_saved_binding_embedded_size (int alloc_) { return __builtin_offsetof (VEC_cxx_saved_binding, vec) + alloc_ * sizeof(cxx_saved_binding); } static __inline__ void VEC_cxx_saved_binding_embedded_init (VEC_cxx_saved_binding *vec_, int alloc_) { vec_->num = 0; vec_->alloc = alloc_; } static __inline__ int VEC_cxx_saved_binding_space (VEC_cxx_saved_binding *vec_, int alloc_) { return vec_ ? ((vec_)->alloc - (vec_)->num < (unsigned)(alloc_ < 0 ? 1 : alloc_)) : alloc_ != 0; } static __inline__ int VEC_cxx_saved_binding_reserve (VEC_cxx_saved_binding **vec_, int alloc_ ) { int extend = VEC_cxx_saved_binding_space (*vec_, alloc_); if (extend) *vec_ = (VEC_cxx_saved_binding *) vec_gc_o_reserve (*vec_, alloc_, __builtin_offsetof (VEC_cxx_saved_binding, vec), sizeof (cxx_saved_binding) ); return extend; } static __inline__ cxx_saved_binding *VEC_cxx_saved_binding_quick_push (VEC_cxx_saved_binding *vec_, const cxx_saved_binding *obj_ ,const char *file_,unsigned line_,const char *function_) { cxx_saved_binding *slot_; (void)((vec_->num < vec_->alloc) ? 0 : (vec_assert_fail ("push","VEC(cxx_saved_binding)" ,file_,line_,function_), 0)); slot_ = &vec_->vec[vec_->num++]; if (obj_) *slot_ = *obj_; return slot_; } static __inline__ cxx_saved_binding *VEC_cxx_saved_binding_safe_push (VEC_cxx_saved_binding **vec_, const cxx_saved_binding *obj_ ,const char *file_,unsigned line_,const char *function_ ) { VEC_cxx_saved_binding_reserve (vec_, -1 ); return VEC_cxx_saved_binding_quick_push (*vec_, obj_ ,file_,line_,function_); } static __inline__ void VEC_cxx_saved_binding_pop (VEC_cxx_saved_binding *vec_ ,const char *file_,unsigned line_,const char *function_) { (void)((vec_->num) ? 0 : (vec_assert_fail ("pop","VEC(cxx_saved_binding)" ,file_,line_,function_), 0)); --vec_->num; } static __inline__ void VEC_cxx_saved_binding_truncate (VEC_cxx_saved_binding *vec_, unsigned size_ ,const char *file_,unsigned line_,const char *function_) { (void)((vec_ ? vec_->num >= size_ : !size_) ? 0 : (vec_assert_fail ("truncate","VEC(cxx_saved_binding)" ,file_,line_,function_), 0)); if (vec_) vec_->num = size_; } static __inline__ cxx_saved_binding *VEC_cxx_saved_binding_replace (VEC_cxx_saved_binding *vec_, unsigned ix_, const cxx_saved_binding *obj_ ,const char *file_,unsigned line_,const char *function_) { cxx_saved_binding *slot_; (void)((ix_ < vec_->num) ? 0 : (vec_assert_fail ("replace","VEC(cxx_saved_binding)" ,file_,line_,function_), 0)); slot_ = &vec_->vec[ix_]; if (obj_) *slot_ = *obj_; return slot_; } static __inline__ unsigned VEC_cxx_saved_binding_lower_bound (VEC_cxx_saved_binding *vec_, const cxx_saved_binding *obj_, unsigned char (*lessthan_)(const cxx_saved_binding *, const cxx_saved_binding *) ,const char *file_,unsigned line_,const char *function_) { unsigned int len_ = VEC_cxx_saved_binding_length (vec_); unsigned int half_, middle_; unsigned int first_ = 0; while (len_ > 0) { cxx_saved_binding *middle_elem_; half_ = len_ >> 1; middle_ = first_; middle_ += half_; middle_elem_ = VEC_cxx_saved_binding_index (vec_, middle_ ,file_,line_,function_); if (lessthan_ (middle_elem_, obj_)) { first_ = middle_; ++first_; len_ = len_ - half_ - 1; } else len_ = half_; } return first_; } static __inline__ cxx_saved_binding *VEC_cxx_saved_binding_quick_insert (VEC_cxx_saved_binding *vec_, unsigned ix_, const cxx_saved_binding *obj_ ,const char *file_,unsigned line_,const char *function_) { cxx_saved_binding *slot_; (void)((vec_->num < vec_->alloc) ? 0 : (vec_assert_fail ("insert","VEC(cxx_saved_binding)" ,file_,line_,function_), 0)); (void)((ix_ <= vec_->num) ? 0 : (vec_assert_fail ("insert","VEC(cxx_saved_binding)" ,file_,line_,function_), 0)); slot_ = &vec_->vec[ix_]; memmove (slot_ + 1, slot_, (vec_->num++ - ix_) * sizeof (cxx_saved_binding)); if (obj_) *slot_ = *obj_; return slot_; } static __inline__ cxx_saved_binding *VEC_cxx_saved_binding_safe_insert (VEC_cxx_saved_binding **vec_, unsigned ix_, const cxx_saved_binding *obj_ ,const char *file_,unsigned line_,const char *function_ ) { VEC_cxx_saved_binding_reserve (vec_, -1 ); return VEC_cxx_saved_binding_quick_insert (*vec_, ix_, obj_ ,file_,line_,function_); } static __inline__ void VEC_cxx_saved_binding_ordered_remove (VEC_cxx_saved_binding *vec_, unsigned ix_ ,const char *file_,unsigned line_,const char *function_) { cxx_saved_binding *slot_; (void)((ix_ < vec_->num) ? 0 : (vec_assert_fail ("remove","VEC(cxx_saved_binding)" ,file_,line_,function_), 0)); slot_ = &vec_->vec[ix_]; memmove (slot_, slot_ + 1, (--vec_->num - ix_) * sizeof (cxx_saved_binding)); } static __inline__ void VEC_cxx_saved_binding_unordered_remove (VEC_cxx_saved_binding *vec_, unsigned ix_ ,const char *file_,unsigned line_,const char *function_) { (void)((ix_ < vec_->num) ? 0 : (vec_assert_fail ("remove","VEC(cxx_saved_binding)" ,file_,line_,function_), 0)); vec_->vec[ix_] = vec_->vec[--vec_->num]; } static __inline__ cxx_saved_binding *VEC_cxx_saved_binding_address (VEC_cxx_saved_binding *vec_) { return vec_ ? vec_->vec : 0; } struct vec_swallow_trailing_semi; extern tree identifier_type_value (tree); extern void set_identifier_type_value (tree, tree); extern void pop_binding (tree, tree); extern tree constructor_name_full (tree); extern tree constructor_name (tree); extern unsigned char constructor_name_p (tree, tree); typedef enum scope_kind { sk_block = 0, sk_cleanup, sk_try, sk_catch, sk_for, sk_function_parms, sk_class, sk_namespace, sk_template_parms, sk_template_spec } scope_kind; typedef struct cp_class_binding { cxx_binding base; tree identifier; } cp_class_binding; typedef struct VEC_cp_class_binding { unsigned num; unsigned alloc; cp_class_binding vec[1]; } VEC_cp_class_binding; static __inline__ unsigned VEC_cp_class_binding_length (const VEC_cp_class_binding *vec_) { return vec_ ? vec_->num : 0; } static __inline__ cp_class_binding *VEC_cp_class_binding_last (VEC_cp_class_binding *vec_ ,const char *file_,unsigned line_,const char *function_) { (void)((vec_ && vec_->num) ? 0 : (vec_assert_fail ("last","VEC(cp_class_binding)" ,file_,line_,function_), 0)); return &vec_->vec[vec_->num - 1]; } static __inline__ cp_class_binding *VEC_cp_class_binding_index (VEC_cp_class_binding *vec_, unsigned ix_ ,const char *file_,unsigned line_,const char *function_) { (void)((vec_ && ix_ < vec_->num) ? 0 : (vec_assert_fail ("index","VEC(cp_class_binding)" ,file_,line_,function_), 0)); return &vec_->vec[ix_]; } static __inline__ int VEC_cp_class_binding_iterate (VEC_cp_class_binding *vec_, unsigned ix_, cp_class_binding **ptr) { if (vec_ && ix_ < vec_->num) { *ptr = &vec_->vec[ix_]; return 1; } else { *ptr = 0; return 0; } } static __inline__ VEC_cp_class_binding *VEC_cp_class_binding_alloc (int alloc_ ) { return (VEC_cp_class_binding *) vec_gc_o_reserve (((void *)0), alloc_ - !alloc_, __builtin_offsetof (VEC_cp_class_binding, vec), sizeof (cp_class_binding) ); } static __inline__ void VEC_cp_class_binding_free (VEC_cp_class_binding **vec_) { vec_gc_free (*vec_); *vec_ = ((void *)0); } static __inline__ size_t VEC_cp_class_binding_embedded_size (int alloc_) { return __builtin_offsetof (VEC_cp_class_binding, vec) + alloc_ * sizeof(cp_class_binding); } static __inline__ void VEC_cp_class_binding_embedded_init (VEC_cp_class_binding *vec_, int alloc_) { vec_->num = 0; vec_->alloc = alloc_; } static __inline__ int VEC_cp_class_binding_space (VEC_cp_class_binding *vec_, int alloc_) { return vec_ ? ((vec_)->alloc - (vec_)->num < (unsigned)(alloc_ < 0 ? 1 : alloc_)) : alloc_ != 0; } static __inline__ int VEC_cp_class_binding_reserve (VEC_cp_class_binding **vec_, int alloc_ ) { int extend = VEC_cp_class_binding_space (*vec_, alloc_); if (extend) *vec_ = (VEC_cp_class_binding *) vec_gc_o_reserve (*vec_, alloc_, __builtin_offsetof (VEC_cp_class_binding, vec), sizeof (cp_class_binding) ); return extend; } static __inline__ cp_class_binding *VEC_cp_class_binding_quick_push (VEC_cp_class_binding *vec_, const cp_class_binding *obj_ ,const char *file_,unsigned line_,const char *function_) { cp_class_binding *slot_; (void)((vec_->num < vec_->alloc) ? 0 : (vec_assert_fail ("push","VEC(cp_class_binding)" ,file_,line_,function_), 0)); slot_ = &vec_->vec[vec_->num++]; if (obj_) *slot_ = *obj_; return slot_; } static __inline__ cp_class_binding *VEC_cp_class_binding_safe_push (VEC_cp_class_binding **vec_, const cp_class_binding *obj_ ,const char *file_,unsigned line_,const char *function_ ) { VEC_cp_class_binding_reserve (vec_, -1 ); return VEC_cp_class_binding_quick_push (*vec_, obj_ ,file_,line_,function_); } static __inline__ void VEC_cp_class_binding_pop (VEC_cp_class_binding *vec_ ,const char *file_,unsigned line_,const char *function_) { (void)((vec_->num) ? 0 : (vec_assert_fail ("pop","VEC(cp_class_binding)" ,file_,line_,function_), 0)); --vec_->num; } static __inline__ void VEC_cp_class_binding_truncate (VEC_cp_class_binding *vec_, unsigned size_ ,const char *file_,unsigned line_,const char *function_) { (void)((vec_ ? vec_->num >= size_ : !size_) ? 0 : (vec_assert_fail ("truncate","VEC(cp_class_binding)" ,file_,line_,function_), 0)); if (vec_) vec_->num = size_; } static __inline__ cp_class_binding *VEC_cp_class_binding_replace (VEC_cp_class_binding *vec_, unsigned ix_, const cp_class_binding *obj_ ,const char *file_,unsigned line_,const char *function_) { cp_class_binding *slot_; (void)((ix_ < vec_->num) ? 0 : (vec_assert_fail ("replace","VEC(cp_class_binding)" ,file_,line_,function_), 0)); slot_ = &vec_->vec[ix_]; if (obj_) *slot_ = *obj_; return slot_; } static __inline__ unsigned VEC_cp_class_binding_lower_bound (VEC_cp_class_binding *vec_, const cp_class_binding *obj_, unsigned char (*lessthan_)(const cp_class_binding *, const cp_class_binding *) ,const char *file_,unsigned line_,const char *function_) { unsigned int len_ = VEC_cp_class_binding_length (vec_); unsigned int half_, middle_; unsigned int first_ = 0; while (len_ > 0) { cp_class_binding *middle_elem_; half_ = len_ >> 1; middle_ = first_; middle_ += half_; middle_elem_ = VEC_cp_class_binding_index (vec_, middle_ ,file_,line_,function_); if (lessthan_ (middle_elem_, obj_)) { first_ = middle_; ++first_; len_ = len_ - half_ - 1; } else len_ = half_; } return first_; } static __inline__ cp_class_binding *VEC_cp_class_binding_quick_insert (VEC_cp_class_binding *vec_, unsigned ix_, const cp_class_binding *obj_ ,const char *file_,unsigned line_,const char *function_) { cp_class_binding *slot_; (void)((vec_->num < vec_->alloc) ? 0 : (vec_assert_fail ("insert","VEC(cp_class_binding)" ,file_,line_,function_), 0)); (void)((ix_ <= vec_->num) ? 0 : (vec_assert_fail ("insert","VEC(cp_class_binding)" ,file_,line_,function_), 0)); slot_ = &vec_->vec[ix_]; memmove (slot_ + 1, slot_, (vec_->num++ - ix_) * sizeof (cp_class_binding)); if (obj_) *slot_ = *obj_; return slot_; } static __inline__ cp_class_binding *VEC_cp_class_binding_safe_insert (VEC_cp_class_binding **vec_, unsigned ix_, const cp_class_binding *obj_ ,const char *file_,unsigned line_,const char *function_ ) { VEC_cp_class_binding_reserve (vec_, -1 ); return VEC_cp_class_binding_quick_insert (*vec_, ix_, obj_ ,file_,line_,function_); } static __inline__ void VEC_cp_class_binding_ordered_remove (VEC_cp_class_binding *vec_, unsigned ix_ ,const char *file_,unsigned line_,const char *function_) { cp_class_binding *slot_; (void)((ix_ < vec_->num) ? 0 : (vec_assert_fail ("remove","VEC(cp_class_binding)" ,file_,line_,function_), 0)); slot_ = &vec_->vec[ix_]; memmove (slot_, slot_ + 1, (--vec_->num - ix_) * sizeof (cp_class_binding)); } static __inline__ void VEC_cp_class_binding_unordered_remove (VEC_cp_class_binding *vec_, unsigned ix_ ,const char *file_,unsigned line_,const char *function_) { (void)((ix_ < vec_->num) ? 0 : (vec_assert_fail ("remove","VEC(cp_class_binding)" ,file_,line_,function_), 0)); vec_->vec[ix_] = vec_->vec[--vec_->num]; } static __inline__ cp_class_binding *VEC_cp_class_binding_address (VEC_cp_class_binding *vec_) { return vec_ ? vec_->vec : 0; } struct vec_swallow_trailing_semi; struct cp_binding_level { tree names; size_t names_size; tree namespaces; varray_type static_decls; tree vtables; binding_table type_decls; tree usings; tree using_directives; VEC_cp_class_binding *class_shadowed; tree type_shadowed; tree shadowed_labels; tree blocks; tree this_entity; struct cp_binding_level *level_chain; tree dead_vars_from_for; tree statement_list; int binding_depth; __extension__ enum scope_kind kind : 4; unsigned int explicit_spec_p : 1; unsigned keep : 1; unsigned more_cleanups_ok : 1; unsigned have_cleanups : 1; }; extern tree global_namespace; extern tree global_scope_name; extern tree global_type_node; extern cxx_scope *leave_scope (void); extern unsigned char kept_level_p (void); extern int global_bindings_p (void); extern unsigned char toplevel_bindings_p (void); extern unsigned char namespace_bindings_p (void); extern unsigned char template_parm_scope_p (void); extern scope_kind innermost_scope_kind (void); extern cxx_scope *begin_scope (scope_kind, tree); extern void print_binding_stack (void); extern void print_binding_level (cxx_scope *); extern void push_to_top_level (void); extern void pop_from_top_level (void); extern void pop_everything (void); extern void keep_next_level (unsigned char); extern unsigned char is_ancestor (tree, tree); extern unsigned char push_scope (tree); extern void pop_scope (tree); extern void push_binding_level (struct cp_binding_level *); extern void push_namespace (tree); extern void pop_namespace (void); extern void push_nested_namespace (tree); extern void pop_nested_namespace (tree); extern void pushlevel_class (void); extern void poplevel_class (void); extern tree pushdecl_with_scope (tree, cxx_scope *); extern tree lookup_tag (enum tree_code, tree, cxx_scope *, int); extern tree lookup_tag_reverse (tree, tree); extern tree lookup_name (tree, int); extern tree lookup_name_real (tree, int, int, unsigned char, int, int); extern tree namespace_binding (tree, tree); extern void set_namespace_binding (tree, tree, tree); extern tree lookup_namespace_name (tree, tree); extern tree lookup_qualified_name (tree, tree, unsigned char, unsigned char); extern tree lookup_name_nonclass (tree); extern tree lookup_function_nonclass (tree, tree, unsigned char); extern void push_local_binding (tree, tree, int); extern unsigned char pushdecl_class_level (tree); extern tree pushdecl_namespace_level (tree); extern unsigned char push_class_level_binding (tree, tree); extern void storetags (tree); extern tree getdecls (void); extern tree cp_namespace_decls (tree); extern void set_decl_namespace (tree, tree, unsigned char); extern tree current_decl_namespace (void); extern void push_decl_namespace (tree); extern void pop_decl_namespace (void); extern void do_namespace_alias (tree, tree); extern void do_toplevel_using_decl (tree, tree, tree); extern void do_local_using_decl (tree, tree, tree); extern tree do_class_using_decl (tree); extern void do_using_directive (tree); extern tree lookup_arg_dependent (tree, tree, tree); extern unsigned char is_associated_namespace (tree, tree); extern void parse_using_directive (tree, tree); extern tree innermost_non_namespace_value (tree); extern cxx_binding *outer_binding (tree, cxx_binding *, unsigned char); static __inline__ unsigned char get_global_value_if_present (tree id, tree *decl) { tree global_value = namespace_binding (id, global_namespace); if (global_value) *decl = global_value; return global_value != ((void *)0); } static __inline__ unsigned char is_typename_at_global_scope (tree id) { tree global_value = namespace_binding (id, global_namespace); return global_value && ((enum tree_code) (global_value)->common.code) == TYPE_DECL; } struct diagnostic_context; struct lang_identifier { struct c_common_identifier c_common; cxx_binding *namespace_bindings; cxx_binding *bindings; tree class_template_info; tree label_value; }; struct template_parm_index_s { struct tree_common common; long index; long level; long orig_level; tree decl; }; typedef struct template_parm_index_s template_parm_index; struct tinst_level_s { struct tree_common common; tree decl; location_t locus; }; typedef struct tinst_level_s * tinst_level_t; struct ptrmem_cst { struct tree_common common; rtx rtl; tree member; }; typedef struct ptrmem_cst * ptrmem_cst_t; struct tree_overload { struct tree_common common; tree function; }; struct tree_baselink { struct tree_common common; tree binfo; tree functions; tree access_binfo; }; typedef enum cp_id_kind { CP_ID_KIND_NONE, CP_ID_KIND_UNQUALIFIED, CP_ID_KIND_UNQUALIFIED_DEPENDENT, CP_ID_KIND_TEMPLATE_ID, CP_ID_KIND_QUALIFIED } cp_id_kind; struct tree_default_arg { struct tree_common common; struct cp_token_cache *tokens; }; enum cp_tree_node_structure_enum { TS_CP_GENERIC, TS_CP_IDENTIFIER, TS_CP_TPI, TS_CP_TINST_LEVEL, TS_CP_PTRMEM, TS_CP_BINDING, TS_CP_OVERLOAD, TS_CP_BASELINK, TS_CP_WRAPPER, TS_CP_DEFAULT_ARG, LAST_TS_CP_ENUM }; union lang_tree_node { union tree_node generic; struct template_parm_index_s tpi; struct tinst_level_s tinst_level; struct ptrmem_cst ptrmem; struct tree_overload overload; struct tree_baselink baselink; struct tree_default_arg default_arg; struct lang_identifier identifier; }; enum cp_tree_index { CPTI_JAVA_BYTE_TYPE, CPTI_JAVA_SHORT_TYPE, CPTI_JAVA_INT_TYPE, CPTI_JAVA_LONG_TYPE, CPTI_JAVA_FLOAT_TYPE, CPTI_JAVA_DOUBLE_TYPE, CPTI_JAVA_CHAR_TYPE, CPTI_JAVA_BOOLEAN_TYPE, CPTI_WCHAR_DECL, CPTI_VTABLE_ENTRY_TYPE, CPTI_DELTA_TYPE, CPTI_VTABLE_INDEX_TYPE, CPTI_CLEANUP_TYPE, CPTI_VTT_PARM_TYPE, CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE, CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE, CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE, CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE, CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE, CPTI_CLASS_TYPE, CPTI_UNKNOWN_TYPE, CPTI_VTBL_TYPE, CPTI_VTBL_PTR_TYPE, CPTI_STD, CPTI_ABI, CPTI_TYPE_INFO_TYPE, CPTI_TYPE_INFO_PTR_TYPE, CPTI_TYPE_INFO_REF_TYPE, CPTI_ABORT_FNDECL, CPTI_GLOBAL_DELETE_FNDECL, CPTI_AGGR_TAG, CPTI_CTOR_IDENTIFIER, CPTI_COMPLETE_CTOR_IDENTIFIER, CPTI_BASE_CTOR_IDENTIFIER, CPTI_DTOR_IDENTIFIER, CPTI_COMPLETE_DTOR_IDENTIFIER, CPTI_BASE_DTOR_IDENTIFIER, CPTI_DELETING_DTOR_IDENTIFIER, CPTI_DELTA_IDENTIFIER, CPTI_IN_CHARGE_IDENTIFIER, CPTI_VTT_PARM_IDENTIFIER, CPTI_NELTS_IDENTIFIER, CPTI_THIS_IDENTIFIER, CPTI_PFN_IDENTIFIER, CPTI_VPTR_IDENTIFIER, CPTI_STD_IDENTIFIER, CPTI_LANG_NAME_C, CPTI_LANG_NAME_CPLUSPLUS, CPTI_LANG_NAME_JAVA, CPTI_EMPTY_EXCEPT_SPEC, CPTI_NULL, CPTI_JCLASS, CPTI_TERMINATE, CPTI_CALL_UNEXPECTED, CPTI_ATEXIT, CPTI_DSO_HANDLE, CPTI_DCAST, CPTI_KEYED_CLASSES, CPTI_MAX }; extern tree cp_global_trees[CPTI_MAX]; struct saved_scope { VEC_cxx_saved_binding *old_bindings; tree old_namespace; tree decl_ns_list; tree class_name; tree class_type; tree access_specifier; tree function_decl; varray_type lang_base; tree lang_name; tree template_parms; struct cp_binding_level *x_previous_class_level; tree x_saved_tree; long x_processing_template_decl; int x_processing_specialization; unsigned char x_processing_explicit_instantiation; int need_pop_function_context; struct stmt_tree_s x_stmt_tree; struct cp_binding_level *class_bindings; struct cp_binding_level *bindings; struct saved_scope *prev; }; extern struct saved_scope *scope_chain; struct language_function { struct c_language_function base; tree x_cdtor_label; tree x_current_class_ptr; tree x_current_class_ref; tree x_eh_spec_block; tree x_in_charge_parm; tree x_vtt_parm; tree x_return_value; int returns_value; int returns_null; int returns_abnormally; int in_function_try_handler; int in_base_initializer; unsigned int can_throw : 1; struct named_label_use_list *x_named_label_uses; struct named_label_list *x_named_labels; struct cp_binding_level *bindings; varray_type x_local_names; }; enum cplus_tree_code { CP_DUMMY_TREE_CODE = LAST_C_TREE_CODE, OFFSET_REF, PTRMEM_CST, NEW_EXPR, VEC_NEW_EXPR, DELETE_EXPR, VEC_DELETE_EXPR, SCOPE_REF, MEMBER_REF, TYPE_EXPR, AGGR_INIT_EXPR, THROW_EXPR, EMPTY_CLASS_EXPR, ALIAS_DECL, BASELINK, TEMPLATE_DECL, TEMPLATE_PARM_INDEX, TEMPLATE_TYPE_PARM, TEMPLATE_TEMPLATE_PARM, BOUND_TEMPLATE_TEMPLATE_PARM, TYPENAME_TYPE, UNBOUND_CLASS_TEMPLATE, TYPEOF_TYPE, USING_DECL, USING_STMT, DEFAULT_ARG, TEMPLATE_ID_EXPR, OVERLOAD, MODOP_EXPR, CAST_EXPR, REINTERPRET_CAST_EXPR, CONST_CAST_EXPR, STATIC_CAST_EXPR, DYNAMIC_CAST_EXPR, DOTSTAR_EXPR, TYPEID_EXPR, PSEUDO_DTOR_EXPR, NON_DEPENDENT_EXPR, CTOR_INITIALIZER, TRY_BLOCK, EH_SPEC_BLOCK, HANDLER, MUST_NOT_THROW_EXPR, CLEANUP_STMT, IF_STMT, TAG_DEFN, TINST_LEVEL, OFFSETOF_EXPR, LAST_CPLUS_TREE_CODE }; enum languages { lang_c, lang_cplusplus, lang_java }; typedef struct tree_pair_s { tree purpose; tree value; } tree_pair_s; typedef tree_pair_s *tree_pair_p; typedef struct VEC_tree_pair_s { unsigned num; unsigned alloc; tree_pair_s vec[1]; } VEC_tree_pair_s; static __inline__ unsigned VEC_tree_pair_s_length (const VEC_tree_pair_s *vec_) { return vec_ ? vec_->num : 0; } static __inline__ tree_pair_s *VEC_tree_pair_s_last (VEC_tree_pair_s *vec_ ,const char *file_,unsigned line_,const char *function_) { (void)((vec_ && vec_->num) ? 0 : (vec_assert_fail ("last","VEC(tree_pair_s)" ,file_,line_,function_), 0)); return &vec_->vec[vec_->num - 1]; } static __inline__ tree_pair_s *VEC_tree_pair_s_index (VEC_tree_pair_s *vec_, unsigned ix_ ,const char *file_,unsigned line_,const char *function_) { (void)((vec_ && ix_ < vec_->num) ? 0 : (vec_assert_fail ("index","VEC(tree_pair_s)" ,file_,line_,function_), 0)); return &vec_->vec[ix_]; } static __inline__ int VEC_tree_pair_s_iterate (VEC_tree_pair_s *vec_, unsigned ix_, tree_pair_s **ptr) { if (vec_ && ix_ < vec_->num) { *ptr = &vec_->vec[ix_]; return 1; } else { *ptr = 0; return 0; } } static __inline__ VEC_tree_pair_s *VEC_tree_pair_s_alloc (int alloc_ ) { return (VEC_tree_pair_s *) vec_gc_o_reserve (((void *)0), alloc_ - !alloc_, __builtin_offsetof (VEC_tree_pair_s, vec), sizeof (tree_pair_s) ); } static __inline__ void VEC_tree_pair_s_free (VEC_tree_pair_s **vec_) { vec_gc_free (*vec_); *vec_ = ((void *)0); } static __inline__ size_t VEC_tree_pair_s_embedded_size (int alloc_) { return __builtin_offsetof (VEC_tree_pair_s, vec) + alloc_ * sizeof(tree_pair_s); } static __inline__ void VEC_tree_pair_s_embedded_init (VEC_tree_pair_s *vec_, int alloc_) { vec_->num = 0; vec_->alloc = alloc_; } static __inline__ int VEC_tree_pair_s_space (VEC_tree_pair_s *vec_, int alloc_) { return vec_ ? ((vec_)->alloc - (vec_)->num < (unsigned)(alloc_ < 0 ? 1 : alloc_)) : alloc_ != 0; } static __inline__ int VEC_tree_pair_s_reserve (VEC_tree_pair_s **vec_, int alloc_ ) { int extend = VEC_tree_pair_s_space (*vec_, alloc_); if (extend) *vec_ = (VEC_tree_pair_s *) vec_gc_o_reserve (*vec_, alloc_, __builtin_offsetof (VEC_tree_pair_s, vec), sizeof (tree_pair_s) ); return extend; } static __inline__ tree_pair_s *VEC_tree_pair_s_quick_push (VEC_tree_pair_s *vec_, const tree_pair_s *obj_ ,const char *file_,unsigned line_,const char *function_) { tree_pair_s *slot_; (void)((vec_->num < vec_->alloc) ? 0 : (vec_assert_fail ("push","VEC(tree_pair_s)" ,file_,line_,function_), 0)); slot_ = &vec_->vec[vec_->num++]; if (obj_) *slot_ = *obj_; return slot_; } static __inline__ tree_pair_s *VEC_tree_pair_s_safe_push (VEC_tree_pair_s **vec_, const tree_pair_s *obj_ ,const char *file_,unsigned line_,const char *function_ ) { VEC_tree_pair_s_reserve (vec_, -1 ); return VEC_tree_pair_s_quick_push (*vec_, obj_ ,file_,line_,function_); } static __inline__ void VEC_tree_pair_s_pop (VEC_tree_pair_s *vec_ ,const char *file_,unsigned line_,const char *function_) { (void)((vec_->num) ? 0 : (vec_assert_fail ("pop","VEC(tree_pair_s)" ,file_,line_,function_), 0)); --vec_->num; } static __inline__ void VEC_tree_pair_s_truncate (VEC_tree_pair_s *vec_, unsigned size_ ,const char *file_,unsigned line_,const char *function_) { (void)((vec_ ? vec_->num >= size_ : !size_) ? 0 : (vec_assert_fail ("truncate","VEC(tree_pair_s)" ,file_,line_,function_), 0)); if (vec_) vec_->num = size_; } static __inline__ tree_pair_s *VEC_tree_pair_s_replace (VEC_tree_pair_s *vec_, unsigned ix_, const tree_pair_s *obj_ ,const char *file_,unsigned line_,const char *function_) { tree_pair_s *slot_; (void)((ix_ < vec_->num) ? 0 : (vec_assert_fail ("replace","VEC(tree_pair_s)" ,file_,line_,function_), 0)); slot_ = &vec_->vec[ix_]; if (obj_) *slot_ = *obj_; return slot_; } static __inline__ unsigned VEC_tree_pair_s_lower_bound (VEC_tree_pair_s *vec_, const tree_pair_s *obj_, unsigned char (*lessthan_)(const tree_pair_s *, const tree_pair_s *) ,const char *file_,unsigned line_,const char *function_) { unsigned int len_ = VEC_tree_pair_s_length (vec_); unsigned int half_, middle_; unsigned int first_ = 0; while (len_ > 0) { tree_pair_s *middle_elem_; half_ = len_ >> 1; middle_ = first_; middle_ += half_; middle_elem_ = VEC_tree_pair_s_index (vec_, middle_ ,file_,line_,function_); if (lessthan_ (middle_elem_, obj_)) { first_ = middle_; ++first_; len_ = len_ - half_ - 1; } else len_ = half_; } return first_; } static __inline__ tree_pair_s *VEC_tree_pair_s_quick_insert (VEC_tree_pair_s *vec_, unsigned ix_, const tree_pair_s *obj_ ,const char *file_,unsigned line_,const char *function_) { tree_pair_s *slot_; (void)((vec_->num < vec_->alloc) ? 0 : (vec_assert_fail ("insert","VEC(tree_pair_s)" ,file_,line_,function_), 0)); (void)((ix_ <= vec_->num) ? 0 : (vec_assert_fail ("insert","VEC(tree_pair_s)" ,file_,line_,function_), 0)); slot_ = &vec_->vec[ix_]; memmove (slot_ + 1, slot_, (vec_->num++ - ix_) * sizeof (tree_pair_s)); if (obj_) *slot_ = *obj_; return slot_; } static __inline__ tree_pair_s *VEC_tree_pair_s_safe_insert (VEC_tree_pair_s **vec_, unsigned ix_, const tree_pair_s *obj_ ,const char *file_,unsigned line_,const char *function_ ) { VEC_tree_pair_s_reserve (vec_, -1 ); return VEC_tree_pair_s_quick_insert (*vec_, ix_, obj_ ,file_,line_,function_); } static __inline__ void VEC_tree_pair_s_ordered_remove (VEC_tree_pair_s *vec_, unsigned ix_ ,const char *file_,unsigned line_,const char *function_) { tree_pair_s *slot_; (void)((ix_ < vec_->num) ? 0 : (vec_assert_fail ("remove","VEC(tree_pair_s)" ,file_,line_,function_), 0)); slot_ = &vec_->vec[ix_]; memmove (slot_, slot_ + 1, (--vec_->num - ix_) * sizeof (tree_pair_s)); } static __inline__ void VEC_tree_pair_s_unordered_remove (VEC_tree_pair_s *vec_, unsigned ix_ ,const char *file_,unsigned line_,const char *function_) { (void)((ix_ < vec_->num) ? 0 : (vec_assert_fail ("remove","VEC(tree_pair_s)" ,file_,line_,function_), 0)); vec_->vec[ix_] = vec_->vec[--vec_->num]; } static __inline__ tree_pair_s *VEC_tree_pair_s_address (VEC_tree_pair_s *vec_) { return vec_ ? vec_->vec : 0; } struct vec_swallow_trailing_semi; struct lang_type_header { unsigned int is_lang_type_class : 1; unsigned int has_type_conversion : 1; unsigned int has_init_ref : 1; unsigned int has_default_ctor : 1; unsigned int uses_multiple_inheritance : 1; unsigned int const_needs_init : 1; unsigned int ref_needs_init : 1; unsigned int has_const_assign_ref : 1; }; struct lang_type_class { struct lang_type_header h; unsigned char align; unsigned has_mutable : 1; unsigned com_interface : 1; unsigned non_pod_class : 1; unsigned nearly_empty_p : 1; unsigned user_align : 1; unsigned has_assign_ref : 1; unsigned has_new : 1; unsigned has_array_new : 1; unsigned gets_delete : 2; unsigned interface_only : 1; unsigned interface_unknown : 1; unsigned contains_empty_class_p : 1; unsigned anon_aggr : 1; unsigned non_zero_init : 1; unsigned empty_p : 1; unsigned marks: 6; unsigned vec_new_uses_cookie : 1; unsigned declared_class : 1; unsigned being_defined : 1; unsigned redefined : 1; unsigned debug_requested : 1; unsigned use_template : 2; unsigned fields_readonly : 1; unsigned ptrmemfunc_flag : 1; unsigned was_anonymous : 1; unsigned lazy_default_ctor : 1; unsigned lazy_copy_ctor : 1; unsigned lazy_assignment_op : 1; unsigned has_const_init_ref : 1; unsigned has_complex_init_ref : 1; unsigned has_complex_assign_ref : 1; unsigned non_aggregate : 1; unsigned java_interface : 1; unsigned dummy : 8; tree primary_base; VEC_tree_pair_s *vcall_indices; tree vtables; tree typeinfo_var; VEC_tree *vbases; binding_table nested_udts; tree as_base; VEC_tree *pure_virtuals; tree friend_classes; VEC_tree * methods; tree key_method; tree decl_list; tree template_info; tree befriending_classes; }; struct lang_type_ptrmem { struct lang_type_header h; tree record; }; struct lang_type { union lang_type_u { struct lang_type_header h; struct lang_type_class c; struct lang_type_ptrmem ptrmem; } u; }; struct lang_decl_flags { __extension__ enum languages language : 4; unsigned global_ctor_p : 1; unsigned global_dtor_p : 1; unsigned anticipated_p : 1; unsigned template_conv_p : 1; unsigned operator_attr : 1; unsigned constructor_attr : 1; unsigned destructor_attr : 1; unsigned friend_attr : 1; unsigned static_function : 1; unsigned pure_virtual : 1; unsigned has_in_charge_parm_p : 1; unsigned has_vtt_parm_p : 1; unsigned deferred : 1; unsigned use_template : 2; unsigned nonconverting : 1; unsigned not_really_extern : 1; unsigned initialized_in_class : 1; unsigned assignment_operator_p : 1; unsigned u1sel : 1; unsigned u2sel : 1; unsigned can_be_full : 1; unsigned this_thunk_p : 1; unsigned repo_available_p : 1; unsigned dummy : 4; union lang_decl_u { tree template_info; struct cp_binding_level * level; } u; union lang_decl_u2 { tree access; int discriminator; } u2; }; struct lang_decl { struct lang_decl_flags decl_flags; union lang_decl_u4 { struct full_lang_decl { tree befriending_classes; tree context; tree cloned_function; long fixed_offset; enum tree_code operator_code; unsigned u3sel : 1; unsigned pending_inline_p : 1; union lang_decl_u3 { struct sorted_fields_type * sorted_fields; struct cp_token_cache * pending_inline_info; struct language_function * saved_language_function; } u; } f; } u; }; enum tag_types { none_type = 0, record_type, class_type, union_type, enum_type, typename_type }; typedef enum cp_lvalue_kind { clk_none = 0, clk_ordinary = 1, clk_class = 2, clk_bitfield = 4, clk_packed = 8 } cp_lvalue_kind; typedef enum tmpl_spec_kind { tsk_none, tsk_invalid_member_spec, tsk_invalid_expl_inst, tsk_excessive_parms, tsk_insufficient_parms, tsk_template, tsk_expl_spec, tsk_expl_inst } tmpl_spec_kind; typedef enum access_kind { ak_none = 0, ak_public = 1, ak_protected = 2, ak_private = 3 } access_kind; typedef enum special_function_kind { sfk_none = 0, sfk_constructor, sfk_copy_constructor, sfk_assignment_operator, sfk_destructor, sfk_complete_destructor, sfk_base_destructor, sfk_deleting_destructor, sfk_conversion } special_function_kind; typedef enum linkage_kind { lk_none, lk_internal, lk_external } linkage_kind; typedef enum tsubst_flags_t { tf_none = 0, tf_error = 1 << 0, tf_warning = 1 << 1, tf_ignore_bad_quals = 1 << 2, tf_keep_type_decl = 1 << 3, tf_ptrmem_ok = 1 << 4, tf_user = 1 << 5, tf_conv = 1 << 6 } tsubst_flags_t; typedef enum base_access { ba_any = 0, ba_ignore = 1, ba_check = 2, ba_not_special = 3, ba_quiet = 4 } base_access; typedef enum deferring_kind { dk_no_deferred = 0, dk_deferred = 1, dk_no_check = 2 } deferring_kind; typedef enum base_kind { bk_inaccessible = -3, bk_ambig = -2, bk_not_base = -1, bk_same_type = 0, bk_proper_base = 1, bk_via_virtual = 2 } base_kind; extern tree error_mark_list; extern tree integer_two_node; extern tree integer_three_node; extern int function_depth; typedef enum unification_kind_t { DEDUCE_CALL, DEDUCE_CONV, DEDUCE_EXACT, DEDUCE_ORDER } unification_kind_t; extern int current_class_depth; extern varray_type local_classes; extern int at_eof; extern tree static_aggregates; extern tree static_ctors; extern tree static_dtors; enum overload_flags { NO_SPECIAL = 0, DTOR_FLAG, OP_FLAG, TYPENAME_FLAG }; extern void init_reswords (void); extern const char **opname_tab, **assignop_tab; typedef struct operator_name_info_t { tree identifier; const char *name; const char *mangled_name; int arity; } operator_name_info_t; extern operator_name_info_t operator_name_info [(int) LAST_CPLUS_TREE_CODE]; extern operator_name_info_t assignment_operator_name_info [(int) LAST_CPLUS_TREE_CODE]; typedef int cp_cv_quals; typedef enum cp_storage_class { sc_none = 0, sc_auto, sc_register, sc_static, sc_extern, sc_mutable } cp_storage_class; typedef enum cp_decl_spec { ds_first, ds_signed = ds_first, ds_unsigned, ds_short, ds_long, ds_const, ds_volatile, ds_restrict, ds_inline, ds_virtual, ds_explicit, ds_friend, ds_typedef, ds_complex, ds_thread, ds_last } cp_decl_spec; typedef struct cp_decl_specifier_seq { unsigned specs[(int) ds_last]; tree type; tree attributes; tree redefined_builtin_type; cp_storage_class storage_class; unsigned int user_defined_type_p : 1; unsigned int multiple_types_p : 1; unsigned int multiple_storage_classes_p : 1; unsigned int any_specifiers_p : 1; unsigned int explicit_int_p : 1; unsigned int explicit_char_p : 1; } cp_decl_specifier_seq; typedef enum cp_declarator_kind { cdk_id, cdk_function, cdk_array, cdk_pointer, cdk_reference, cdk_ptrmem, cdk_error } cp_declarator_kind; typedef struct cp_declarator cp_declarator; typedef struct cp_parameter_declarator cp_parameter_declarator; struct cp_parameter_declarator { cp_parameter_declarator *next; cp_decl_specifier_seq decl_specifiers; cp_declarator *declarator; tree default_argument; unsigned char ellipsis_p; }; struct cp_declarator { cp_declarator_kind kind; tree attributes; cp_declarator *declarator; union { struct { tree name; special_function_kind sfk; } id; struct { cp_parameter_declarator *parameters; cp_cv_quals qualifiers; tree exception_specification; } function; struct { tree bounds; } array; struct { cp_cv_quals qualifiers; tree class_type; } pointer; } u; }; extern cp_declarator *cp_error_declarator; extern cp_parameter_declarator *no_parameters; extern unsigned char check_dtor_name (tree, tree); extern tree build_vfield_ref (tree, tree); extern tree build_conditional_expr (tree, tree, tree); extern tree build_addr_func (tree); extern tree build_call (tree, tree); extern unsigned char null_ptr_cst_p (tree); extern unsigned char sufficient_parms_p (tree); extern tree type_decays_to (tree); extern tree build_user_type_conversion (tree, tree, int); extern tree build_new_function_call (tree, tree); extern tree build_operator_new_call (tree, tree, tree *, tree *); extern tree build_new_method_call (tree, tree, tree, tree, int); extern tree build_special_member_call (tree, tree, tree, tree, int); extern tree build_new_op (enum tree_code, int, tree, tree, tree, unsigned char *); extern tree build_op_delete_call (enum tree_code, tree, tree, unsigned char, tree); extern unsigned char can_convert (tree, tree); extern unsigned char can_convert_arg (tree, tree, tree); extern unsigned char can_convert_arg_bad (tree, tree, tree); extern unsigned char enforce_access (tree, tree); extern tree convert_default_arg (tree, tree, tree, int); extern tree convert_arg_to_ellipsis (tree); extern tree build_x_va_arg (tree, tree); extern tree cxx_type_promotes_to (tree); extern tree type_passed_as (tree); extern tree convert_for_arg_passing (tree, tree); extern tree cp_convert_parm_for_inlining (tree, tree, tree); extern unsigned char is_properly_derived_from (tree, tree); extern tree initialize_reference (tree, tree, tree, tree *); extern tree make_temporary_var_for_ref_to_temp (tree, tree); extern tree strip_top_quals (tree); extern tree perform_implicit_conversion (tree, tree); extern tree perform_direct_initialization_if_possible (tree, tree); extern tree in_charge_arg_for_name (tree); extern tree build_cxx_call (tree, tree); extern void validate_conversion_obstack (void); extern tree build_base_path (enum tree_code, tree, tree, int); extern tree convert_to_base (tree, tree, unsigned char); extern tree convert_to_base_statically (tree, tree); extern tree build_vtbl_ref (tree, tree); extern tree build_vfn_ref (tree, tree); extern tree get_vtable_decl (tree, int); extern void resort_type_method_vec (void *, void *, gt_pointer_operator, void *); extern void add_method (tree, tree); extern int currently_open_class (tree); extern tree currently_open_derived_class (tree); extern tree finish_struct (tree, tree); extern void finish_struct_1 (tree); extern int resolves_to_fixed_type_p (tree, int *); extern void init_class_processing (void); extern int is_empty_class (tree); extern void pushclass (tree); extern void popclass (void); extern void push_nested_class (tree); extern void pop_nested_class (void); extern int current_lang_depth (void); extern void push_lang_context (tree); extern void pop_lang_context (void); extern tree instantiate_type (tree, tree, tsubst_flags_t); extern void print_class_statistics (void); extern void cxx_print_statistics (void); extern void cxx_print_xnode (FILE *, tree, int); extern void cxx_print_decl (FILE *, tree, int); extern void cxx_print_type (FILE *, tree, int); extern void cxx_print_identifier (FILE *, tree, int); extern void cxx_print_error_function (struct diagnostic_context *, const char *); extern void build_self_reference (void); extern int same_signature_p (tree, tree); extern void warn_hidden (tree); extern void maybe_add_class_template_decl_list (tree, tree, int); extern tree get_enclosing_class (tree); extern void unreverse_member_declarations (tree); extern void invalidate_class_lookup_cache (void); extern void maybe_note_name_used_in_class (tree, tree); extern void note_name_declared_in_class (tree, tree); extern tree get_vtbl_decl_for_binfo (tree); extern tree get_vtt_name (tree); extern tree get_primary_binfo (tree); extern void debug_class (tree); extern void debug_thunks (tree); extern tree cp_fold_obj_type_ref (tree, tree); extern void set_linkage_according_to_type (tree, tree); extern void determine_key_method (tree); extern tree convert_to_reference (tree, tree, int, int, tree); extern tree convert_from_reference (tree); extern tree convert_lvalue (tree, tree); extern tree force_rvalue (tree); extern tree ocp_convert (tree, tree, int, int); extern tree cp_convert (tree, tree); extern tree convert_to_void (tree, const char * ); extern tree convert_force (tree, tree, int); extern tree build_type_conversion (tree, tree); extern tree build_expr_type_conversion (int, tree, unsigned char); extern tree type_promotes_to (tree); extern tree perform_qualification_conversions (tree, tree); extern void clone_function_decl (tree, int); extern void adjust_clone_args (tree); extern tree poplevel (int, int, int); extern void insert_block (tree); extern tree pushdecl (tree); extern void cxx_init_decl_processing (void); enum cp_tree_node_structure_enum cp_tree_node_structure (union lang_tree_node *); extern unsigned char cxx_mark_addressable (tree); extern void cxx_push_function_context (struct function *); extern void cxx_pop_function_context (struct function *); extern void cxx_mark_function_context (struct function *); extern void maybe_push_cleanup_level (tree); extern void finish_scope (void); extern void delete_block (tree); extern void add_block_current_level (tree); extern void push_switch (tree); extern void pop_switch (void); extern void pushtag (tree, tree, int); extern tree make_anon_name (void); extern void clear_anon_tags (void); extern int decls_match (tree, tree); extern tree duplicate_decls (tree, tree); extern tree pushdecl_top_level (tree); extern tree pushdecl_top_level_and_finish (tree, tree); extern tree push_using_decl (tree, tree); extern tree declare_local_label (tree); extern tree define_label (location_t, tree); extern void check_goto (tree); extern void define_case_label (void); extern tree make_typename_type (tree, tree, tsubst_flags_t); extern tree make_unbound_class_template (tree, tree, tsubst_flags_t); extern tree check_for_out_of_scope_variable (tree); extern tree build_library_fn (tree, tree); extern tree build_library_fn_ptr (const char *, tree); extern tree build_cp_library_fn_ptr (const char *, tree); extern tree push_library_fn (tree, tree); extern tree push_void_library_fn (tree, tree); extern tree push_throw_library_fn (tree, tree); extern int init_type_desc (void); extern tree check_tag_decl (cp_decl_specifier_seq *); extern tree shadow_tag (cp_decl_specifier_seq *); extern tree groktypename (cp_decl_specifier_seq *, const cp_declarator *); extern tree start_decl (const cp_declarator *, cp_decl_specifier_seq *, int, tree, tree, unsigned char *); extern void start_decl_1 (tree); extern void cp_finish_decl (tree, tree, tree, int); extern void finish_decl (tree, tree, tree); extern int complete_array_type (tree, tree, int); extern tree build_ptrmemfunc_type (tree); extern tree build_ptrmem_type (tree, tree); extern int copy_fn_p (tree); extern tree get_scope_of_declarator (const cp_declarator *); extern void grok_special_member_properties (tree); extern int grok_ctor_properties (tree, tree); extern unsigned char grok_op_properties (tree, int, unsigned char); extern tree xref_tag (enum tag_types, tree, unsigned char, unsigned char); extern tree xref_tag_from_type (tree, tree, int); extern void xref_basetypes (tree, tree); extern tree start_enum (tree); extern void finish_enum (tree); extern void build_enumerator (tree, tree, tree); extern void start_preparsed_function (tree, tree, int); extern int start_function (cp_decl_specifier_seq *, const cp_declarator *, tree); extern tree begin_function_body (void); extern void finish_function_body (tree); extern tree finish_function (int); extern tree start_method (cp_decl_specifier_seq *, const cp_declarator *, tree); extern tree finish_method (tree); extern void maybe_register_incomplete_var (tree); extern void complete_vars (tree); extern void finish_stmt (void); extern void print_other_binding_stack (struct cp_binding_level *); extern void revert_static_member_fn (tree); extern void fixup_anonymous_aggr (tree); extern int check_static_variable_definition (tree, tree); extern tree compute_array_index_type (tree, tree); extern tree check_default_argument (tree, tree); extern int vtable_decl_p (tree, void *); extern int vtype_decl_p (tree, void *); extern int sigtable_decl_p (tree, void *); typedef unsigned char (*walk_globals_pred) (tree, void *); typedef unsigned char (*walk_globals_fn) (tree *, void *); extern unsigned char walk_globals (walk_globals_pred, walk_globals_fn, void *); extern unsigned char walk_vtables (walk_globals_pred, walk_globals_fn, void *); typedef int (*walk_namespaces_fn) (tree, void *); extern int walk_namespaces (walk_namespaces_fn, void *); extern int wrapup_globals_for_namespace (tree, void *); extern tree create_implicit_typedef (tree, tree); extern tree maybe_push_decl (tree); extern tree force_target_expr (tree, tree); extern tree build_target_expr_with_type (tree, tree); extern int local_variable_p (tree); extern int nonstatic_local_decl_p (tree); extern tree declare_global_var (tree, tree); extern tree register_dtor_fn (tree); extern tmpl_spec_kind current_tmpl_spec_kind (int); extern tree cp_fname_init (const char *, tree *); extern tree builtin_function (const char *name, tree type, int code, enum built_in_class cl, const char *libname, tree attrs); extern tree check_elaborated_type_specifier (enum tag_types, tree, unsigned char); extern void warn_extern_redeclared_static (tree, tree); extern unsigned char cp_missing_noreturn_ok_p (tree); extern void initialize_artificial_var (tree, tree); extern unsigned char have_extern_spec; extern unsigned char check_java_method (tree); extern cp_cv_quals grok_method_quals (tree, tree, cp_cv_quals); extern void maybe_retrofit_in_chrg (tree); extern void maybe_make_one_only (tree); extern void grokclassfn (tree, tree, enum overload_flags, cp_cv_quals); extern tree grok_array_decl (tree, tree); extern tree delete_sanity (tree, tree, unsigned char, int); extern tree check_classfn (tree, tree, tree); extern void check_member_template (tree); extern tree grokfield (const cp_declarator *, cp_decl_specifier_seq *, tree, tree, tree); extern tree grokbitfield (const cp_declarator *, cp_decl_specifier_seq *, tree); extern tree groktypefield (tree, tree); extern void cplus_decl_attributes (tree *, tree, int); extern void finish_anon_union (tree); extern tree finish_table (tree, tree, tree, int); extern void cp_finish_file (void); extern tree coerce_new_type (tree); extern tree coerce_delete_type (tree); extern void comdat_linkage (tree); extern void determine_visibility (tree); extern void import_export_decl (tree); extern tree build_cleanup (tree); extern tree build_offset_ref_call_from_tree (tree, tree); extern void check_default_args (tree); extern void mark_used (tree); extern void finish_static_data_member_decl (tree, tree, tree, int); extern tree cp_build_parm_decl (tree, tree); extern tree build_artificial_parm (tree, tree); extern tree get_guard (tree); extern tree get_guard_cond (tree); extern tree set_guard (tree); extern tree cxx_callgraph_analyze_expr (tree *, int *, tree); extern void mark_needed (tree); extern unsigned char decl_needed_p (tree); extern void note_vague_linkage_fn (tree); extern void init_error (void); extern const char *type_as_string (tree, int); extern const char *decl_as_string (tree, int); extern const char *expr_as_string (tree, int); extern const char *context_as_string (tree, int); extern const char *lang_decl_name (tree, int); extern const char *language_to_string (enum languages); extern void print_instantiation_context (void); extern void init_exception_processing (void); extern tree expand_start_catch_block (tree); extern void expand_end_catch_block (void); extern void expand_builtin_throw (void); extern void expand_exception_blocks (void); extern tree build_exc_ptr (void); extern tree build_throw (tree); extern void mark_all_runtime_matches (void); extern int nothrow_libfn_p (tree); extern void check_handlers (tree); extern void choose_personality_routine (enum languages); extern tree eh_type_info (tree); extern rtx cxx_expand_expr (tree, rtx, enum machine_mode, int, rtx *); extern tree cplus_expand_constant (tree); extern int is_friend (tree, tree); extern void make_friend_class (tree, tree, unsigned char); extern void add_friend (tree, tree, unsigned char); extern tree do_friend (tree, tree, tree, tree, enum overload_flags, cp_cv_quals, int); extern tree expand_member_init (tree); extern void emit_mem_initializers (tree); extern tree build_aggr_init (tree, tree, int); extern tree build_init (tree, tree, int); extern int is_aggr_type (tree, int); extern tree get_type_value (tree); extern tree build_zero_init (tree, tree, unsigned char); extern tree build_offset_ref (tree, tree, unsigned char); extern tree build_new (tree, tree, tree, tree, int); extern tree build_vec_init (tree, tree, tree, int); extern tree build_x_delete (tree, int, tree); extern tree build_delete (tree, tree, special_function_kind, int, int); extern void push_base_cleanups (void); extern tree build_vbase_delete (tree, tree); extern tree build_vec_delete (tree, tree, special_function_kind, int); extern tree create_temporary_var (tree); extern void initialize_vtbl_ptrs (tree); extern tree build_java_class_ref (tree); extern void cxx_dup_lang_specific_decl (tree); extern void print_parse_statistics (void); extern void do_pending_inlines (void); extern void yyungetc (int, int); extern void snarf_method (tree); extern void see_typename (void); extern tree unqualified_name_lookup_error (tree); extern tree unqualified_fn_lookup_error (tree); extern tree build_lang_decl (enum tree_code, tree, tree); extern void retrofit_lang_decl (tree); extern tree copy_decl (tree); extern tree copy_type (tree); extern tree cxx_make_type (enum tree_code); extern tree make_aggr_type (enum tree_code); extern void yyerror (const char *); extern void yyhook (int); extern int cp_type_qual_from_rid (tree); extern unsigned char cxx_init (void); extern void cxx_finish (void); extern void init_method (void); extern tree make_thunk (tree, unsigned char, tree, tree); extern void finish_thunk (tree); extern void use_thunk (tree, unsigned char); extern void synthesize_method (tree); extern tree implicitly_declare_fn (special_function_kind, tree, unsigned char); extern tree lazily_declare_fn (special_function_kind, tree); extern tree skip_artificial_parms_for (tree, tree); extern unsigned char maybe_clone_body (tree); extern void check_template_shadow (tree); extern tree get_innermost_template_args (tree, int); extern void maybe_begin_member_template_processing (tree); extern void maybe_end_member_template_processing (void); extern tree finish_member_template_decl (tree); extern void begin_template_parm_list (void); extern void begin_specialization (void); extern void reset_specialization (void); extern void end_specialization (void); extern void begin_explicit_instantiation (void); extern void end_explicit_instantiation (void); extern tree check_explicit_specialization (tree, tree, int, int); extern tree process_template_parm (tree, tree, unsigned char); extern tree end_template_parm_list (tree); extern void end_template_decl (void); extern tree current_template_args (void); extern tree push_template_decl (tree); extern tree push_template_decl_real (tree, int); extern void redeclare_class_template (tree, tree); extern tree lookup_template_class (tree, tree, tree, tree, int, tsubst_flags_t); extern tree lookup_template_function (tree, tree); extern int uses_template_parms (tree); extern int uses_template_parms_level (tree, int); extern tree instantiate_class_template (tree); extern tree instantiate_template (tree, tree, tsubst_flags_t); extern int fn_type_unification (tree, tree, tree, tree, tree, unification_kind_t, int); extern tree tinst_for_decl (void); extern void mark_decl_instantiated (tree, int); extern int more_specialized (tree, tree, int, int); extern void mark_class_instantiated (tree, int); extern void do_decl_instantiation (tree, tree); extern void do_type_instantiation (tree, tree, tsubst_flags_t); extern tree instantiate_decl (tree, int, int); extern int push_tinst_level (tree); extern void pop_tinst_level (void); extern int more_specialized_class (tree, tree, tree); extern int is_member_template (tree); extern int comp_template_parms (tree, tree); extern int template_class_depth (tree); extern int is_specialization_of (tree, tree); extern unsigned char is_specialization_of_friend (tree, tree); extern int comp_template_args (tree, tree); extern void maybe_process_partial_specialization (tree); extern void maybe_check_template_type (tree); extern tree most_specialized_instantiation (tree); extern void print_candidates (tree); extern void instantiate_pending_templates (int); extern tree tsubst_default_argument (tree, tree, tree); extern tree tsubst_copy_and_build (tree, tree, tsubst_flags_t, tree, unsigned char); extern tree most_general_template (tree); extern tree get_mostly_instantiated_function_type (tree); extern int problematic_instantiation_changed (void); extern void record_last_problematic_instantiation (void); extern tree current_instantiation (void); extern tree maybe_get_template_decl_from_type_decl (tree); extern int processing_template_parmlist; extern unsigned char dependent_type_p (tree); extern unsigned char any_dependent_template_arguments_p (tree); extern unsigned char dependent_template_p (tree); extern unsigned char dependent_template_id_p (tree, tree); extern unsigned char type_dependent_expression_p (tree); extern unsigned char any_type_dependent_arguments_p (tree); extern unsigned char value_dependent_expression_p (tree); extern tree resolve_typename_type (tree, unsigned char); extern tree template_for_substitution (tree); extern tree build_non_dependent_expr (tree); extern tree build_non_dependent_args (tree); extern unsigned char reregister_specialization (tree, tree, tree); extern tree fold_non_dependent_expr (tree); extern void init_repo (void); extern int repo_emit_p (tree); extern unsigned char repo_export_class_p (tree); extern void finish_repo (void); extern varray_type unemitted_tinfo_decls; extern void init_rtti_processing (void); extern tree build_typeid (tree); extern tree get_tinfo_decl (tree); extern tree get_typeid (tree); extern tree build_dynamic_cast (tree, tree); extern void emit_support_tinfos (void); extern unsigned char emit_tinfo_decl (tree); extern unsigned char accessible_base_p (tree, tree); extern tree lookup_base (tree, tree, base_access, base_kind *); extern int types_overlap_p (tree, tree); extern tree get_dynamic_cast_base_type (tree, tree); extern int accessible_p (tree, tree); extern tree lookup_field_1 (tree, tree, unsigned char); extern tree lookup_field (tree, tree, int, unsigned char); extern int lookup_fnfields_1 (tree, tree); extern tree lookup_fnfields (tree, tree, int); extern tree lookup_member (tree, tree, int, unsigned char); extern int look_for_overrides (tree, tree); extern void get_pure_virtuals (tree); extern void maybe_suppress_debug_info (tree); extern void note_debug_info_needed (tree); extern void print_search_statistics (void); extern void reinit_search_statistics (void); extern tree current_scope (void); extern int at_function_scope_p (void); extern unsigned char at_class_scope_p (void); extern unsigned char at_namespace_scope_p (void); extern tree context_for_name_lookup (tree); extern tree lookup_conversions (tree); extern tree binfo_for_vtable (tree); extern tree binfo_from_vbase (tree); extern tree binfo_for_vbase (tree, tree); extern tree look_for_overrides_here (tree, tree); extern int check_final_overrider (tree, tree); extern tree dfs_walk (tree, tree (*) (tree, void *), tree (*) (tree, int, void *), void *); extern tree dfs_walk_real (tree, tree (*) (tree, void *), tree (*) (tree, void *), tree (*) (tree, int, void *), void *); extern tree dfs_unmark (tree, void *); extern tree markedp (tree, int, void *); extern tree unmarkedp (tree, int, void *); extern tree binfo_via_virtual (tree, tree); extern tree build_baselink (tree, tree, tree, tree); extern tree adjust_result_of_qualified_name_lookup (tree, tree, tree); extern tree copied_binfo (tree, tree); extern tree original_binfo (tree, tree); extern void push_deferring_access_checks (deferring_kind); extern void resume_deferring_access_checks (void); extern void stop_deferring_access_checks (void); extern void pop_deferring_access_checks (void); extern tree get_deferred_access_checks (void); extern void pop_to_parent_deferring_access_checks (void); extern void perform_deferred_access_checks (void); extern void perform_or_defer_access_check (tree, tree); extern void init_cp_semantics (void); extern tree do_poplevel (tree); extern void add_decl_expr (tree); extern tree finish_expr_stmt (tree); extern tree begin_if_stmt (void); extern void finish_if_stmt_cond (tree, tree); extern tree finish_then_clause (tree); extern void begin_else_clause (tree); extern void finish_else_clause (tree); extern void finish_if_stmt (tree); extern tree begin_while_stmt (void); extern void finish_while_stmt_cond (tree, tree); extern void finish_while_stmt (tree); extern tree begin_do_stmt (void); extern void finish_do_body (tree); extern void finish_do_stmt (tree, tree); extern tree finish_return_stmt (tree); extern tree begin_for_stmt (void); extern void finish_for_init_stmt (tree); extern void finish_for_cond (tree, tree); extern void finish_for_expr (tree, tree); extern void finish_for_stmt (tree); extern tree finish_break_stmt (void); extern tree finish_continue_stmt (void); extern tree begin_switch_stmt (void); extern void finish_switch_cond (tree, tree); extern void finish_switch_stmt (tree); extern tree finish_case_label (tree, tree); extern tree finish_goto_stmt (tree); extern tree begin_try_block (void); extern void finish_try_block (tree); extern tree begin_eh_spec_block (void); extern void finish_eh_spec_block (tree, tree); extern void finish_handler_sequence (tree); extern tree begin_function_try_block (void); extern void finish_function_try_block (tree); extern void finish_function_handler_sequence (tree); extern void finish_cleanup_try_block (tree); extern tree begin_handler (void); extern void finish_handler_parms (tree, tree); extern void begin_catch_block (tree); extern void finish_handler (tree); extern void finish_cleanup (tree, tree); enum { BCS_NO_SCOPE = 1, BCS_TRY_BLOCK = 2, BCS_FN_BODY = 4 }; extern tree begin_compound_stmt (unsigned int); extern void finish_compound_stmt (tree); extern tree finish_asm_stmt (int, tree, tree, tree, tree); extern tree finish_label_stmt (tree); extern void finish_label_decl (tree); extern void finish_subobject (tree); extern tree finish_parenthesized_expr (tree); extern tree finish_non_static_data_member (tree, tree, tree); extern tree begin_stmt_expr (void); extern tree finish_stmt_expr_expr (tree, tree); extern tree finish_stmt_expr (tree, unsigned char); extern tree perform_koenig_lookup (tree, tree); extern tree finish_call_expr (tree, tree, unsigned char, unsigned char); extern tree finish_increment_expr (tree, enum tree_code); extern tree finish_this_expr (void); extern tree finish_pseudo_destructor_expr (tree, tree, tree); extern tree finish_unary_op_expr (enum tree_code, tree); extern tree finish_compound_literal (tree, tree); extern tree finish_fname (tree); extern void finish_translation_unit (void); extern tree finish_template_type_parm (tree, tree); extern tree finish_template_template_parm (tree, tree); extern tree begin_class_definition (tree); extern void finish_default_args (void); extern void finish_template_decl (tree); extern tree finish_template_type (tree, tree, int); extern tree finish_base_specifier (tree, tree, unsigned char); extern void finish_member_declaration (tree); extern void check_multiple_declarators (void); extern void qualified_name_lookup_error (tree, tree, tree); extern tree finish_id_expression (tree, tree, tree, cp_id_kind *, tree *, unsigned char, unsigned char, unsigned char *, const char **); extern tree finish_typeof (tree); extern void finish_decl_cleanup (tree, tree); extern void finish_eh_cleanup (tree); extern void expand_body (tree); extern void cxx_expand_function_start (void); extern void finish_mem_initializers (tree); extern void setup_vtbl_ptr (tree, tree); extern void clear_out_block (void); extern tree check_template_template_default_arg (tree); extern void expand_or_defer_fn (tree); extern void check_accessibility_of_qualified_id (tree, tree, tree); extern tree finish_qualified_id_expr (tree, tree, unsigned char, unsigned char); extern void simplify_aggr_init_expr (tree *); extern void finalize_nrv (tree *, tree, tree); extern void lang_check_failed (const char *, int, const char *); extern tree stabilize_expr (tree, tree *); extern void stabilize_call (tree, tree *); extern unsigned char stabilize_init (tree, tree *); extern tree add_stmt_to_compound (tree, tree); extern tree cxx_maybe_build_cleanup (tree); extern void init_tree (void); extern int pod_type_p (tree); extern int zero_init_p (tree); extern tree canonical_type_variant (tree); extern tree copy_binfo (tree, tree, tree, tree *, int); extern int member_p (tree); extern cp_lvalue_kind real_lvalue_p (tree); extern int lvalue_or_else (tree, const char *); extern tree build_min (enum tree_code, tree, ...); extern tree build_min_nt (enum tree_code, ...); extern tree build_min_non_dep (enum tree_code, tree, ...); extern tree build_cplus_new (tree, tree); extern tree get_target_expr (tree); extern tree build_cplus_staticfn_type (tree, tree, tree); extern tree build_cplus_array_type (tree, tree); extern tree hash_tree_cons (tree, tree, tree); extern tree hash_tree_chain (tree, tree); extern tree hash_chainon (tree, tree); extern int count_functions (tree); extern int is_overloaded_fn (tree); extern tree get_first_fn (tree); extern int bound_pmf_p (tree); extern tree ovl_cons (tree, tree); extern tree build_overload (tree, tree); extern tree function_arg_chain (tree); extern int promotes_to_aggr_type (tree, enum tree_code); extern const char *cxx_printable_name (tree, int); extern tree build_exception_variant (tree, tree); extern tree bind_template_template_parm (tree, tree); extern tree array_type_nelts_total (tree); extern tree array_type_nelts_top (tree); extern tree break_out_target_exprs (tree); extern tree get_type_decl (tree); extern tree decl_namespace_context (tree); extern tree lvalue_type (tree); extern tree error_type (tree); extern int varargs_function_p (tree); extern int really_overloaded_fn (tree); extern unsigned char cp_tree_equal (tree, tree); extern tree no_linkage_check (tree, unsigned char); extern void debug_binfo (tree); extern tree build_dummy_object (tree); extern tree maybe_dummy_object (tree, tree *); extern int is_dummy_object (tree); extern const struct attribute_spec cxx_attribute_table[]; extern tree make_tinst_level (tree, location_t); extern tree make_ptrmem_cst (tree, tree); extern tree cp_build_type_attribute_variant (tree, tree); extern tree cp_build_qualified_type_real (tree, int, tsubst_flags_t); extern special_function_kind special_function_p (tree); extern unsigned char name_p (tree); extern int count_trees (tree); extern int char_type_p (tree); extern void verify_stmt_tree (tree); extern tree find_tree (tree, tree); extern linkage_kind decl_linkage (tree); extern tree cp_walk_subtrees (tree*, int*, walk_tree_fn, void*, void*); extern int cp_cannot_inline_tree_fn (tree*); extern tree cp_add_pending_fn_decls (void*,tree); extern int cp_is_overload_p (tree); extern int cp_auto_var_in_fn_p (tree,tree); extern void cp_update_decl_after_saving (tree, void *); extern int string_conv_p (tree, tree, int); extern tree cp_truthvalue_conversion (tree); extern tree condition_conversion (tree); extern tree target_type (tree); extern tree require_complete_type (tree); extern tree complete_type (tree); extern tree complete_type_or_diagnostic (tree, tree, int); extern int type_unknown_p (tree); extern tree commonparms (tree, tree); extern tree original_type (tree); extern unsigned char comp_except_specs (tree, tree, unsigned char); extern unsigned char comptypes (tree, tree, int); extern unsigned char compparms (tree, tree); extern int comp_cv_qualification (tree, tree); extern int comp_cv_qual_signature (tree, tree); extern tree cxx_sizeof_or_alignof_expr (tree, enum tree_code); extern tree cxx_sizeof_or_alignof_type (tree, enum tree_code, unsigned char); extern tree inline_conversion (tree); extern tree decay_conversion (tree); extern tree perform_integral_promotions (tree); extern tree build_class_member_access_expr (tree, tree, tree, unsigned char); extern tree finish_class_member_access_expr (tree, tree); extern tree build_x_indirect_ref (tree, const char *); extern tree build_indirect_ref (tree, const char *); extern tree build_array_ref (tree, tree); extern tree get_member_function_from_ptrfunc (tree *, tree); extern tree convert_arguments (tree, tree, tree, int); extern tree build_x_binary_op (enum tree_code, tree, tree, unsigned char *); extern tree build_x_unary_op (enum tree_code, tree); extern tree unary_complex_lvalue (enum tree_code, tree); extern tree build_x_conditional_expr (tree, tree, tree); extern tree build_x_compound_expr_from_list (tree, const char *); extern tree build_x_compound_expr (tree, tree); extern tree build_compound_expr (tree, tree); extern tree build_static_cast (tree, tree); extern tree build_reinterpret_cast (tree, tree); extern tree build_const_cast (tree, tree); extern tree build_c_cast (tree, tree); extern tree build_x_modify_expr (tree, enum tree_code, tree); extern tree build_modify_expr (tree, enum tree_code, tree); extern tree dubious_conversion_warnings (tree, tree, const char *, tree, int); extern tree convert_for_initialization (tree, tree, tree, int, const char *, tree, int); extern int comp_ptr_ttypes (tree, tree); extern int ptr_reasonably_similar (tree, tree); extern tree build_ptrmemfunc (tree, tree, int); extern int cp_type_quals (tree); extern unsigned char cp_has_mutable_p (tree); extern unsigned char at_least_as_qualified_p (tree, tree); extern unsigned char more_qualified_p (tree, tree); extern tree build_ptrmemfunc1 (tree, tree, tree); extern void expand_ptrmemfunc_cst (tree, tree *, tree *); extern tree pfn_from_ptrmemfunc (tree); extern tree type_after_usual_arithmetic_conversions (tree, tree); extern tree composite_pointer_type (tree, tree, tree, tree, const char*); extern tree merge_types (tree, tree); extern tree check_return_expr (tree); extern tree build_ptrmemfunc_access_expr (tree, tree); extern tree build_address (tree); extern tree build_nop (tree, tree); extern tree non_reference (tree); extern tree lookup_anon_field (tree, tree); extern unsigned char invalid_nonstatic_memfn_p (tree); extern void require_complete_eh_spec_types (tree, tree); extern void cxx_incomplete_type_diagnostic (tree, tree, int); extern void cxx_incomplete_type_error (tree, tree); extern tree error_not_base_type (tree, tree); extern tree binfo_or_else (tree, tree); extern void readonly_error (tree, const char *, int); extern void complete_type_check_abstract (tree); extern int abstract_virtuals_error (tree, tree); extern tree store_init_value (tree, tree); extern tree digest_init (tree, tree, tree *); extern tree build_scoped_ref (tree, tree, tree *); extern tree build_x_arrow (tree); extern tree build_m_component_ref (tree, tree); extern tree build_functional_cast (tree, tree); extern tree add_exception_specifier (tree, tree, int); extern tree merge_exception_specifiers (tree, tree); extern void init_mangle (void); extern void mangle_decl (tree); extern const char *mangle_type_string (tree); extern tree mangle_typeinfo_for_type (tree); extern tree mangle_typeinfo_string_for_type (tree); extern tree mangle_vtbl_for_type (tree); extern tree mangle_vtt_for_type (tree); extern tree mangle_ctor_vtbl_for_type (tree, tree); extern tree mangle_thunk (tree, int, tree, tree); extern tree mangle_conv_op_name_for_type (tree); extern tree mangle_guard_variable (tree); extern tree mangle_ref_init_variable (tree); extern unsigned char cp_dump_tree (void *, tree); extern int cp_gimplify_expr (tree *, tree *, tree *); extern void cp_genericize (tree); extern void cp_error_at (const char *, ...) __attribute__ ((__format__ (__gcc_cxxdiag__, 1, 2))) __attribute__ ((__nonnull__ (1))); extern void cp_warning_at (const char *, ...) __attribute__ ((__format__ (__gcc_cxxdiag__, 1, 2))) __attribute__ ((__nonnull__ (1))); extern void cp_pedwarn_at (const char *, ...) __attribute__ ((__format__ (__gcc_cxxdiag__, 1, 2))) __attribute__ ((__nonnull__ (1))); extern int warn_abi; extern int warn_aggregate_return; extern int warn_bad_function_cast; extern int warn_cast_align; extern int warn_cast_qual; extern int warn_char_subscripts; extern int warn_conversion; extern int warn_ctor_dtor_privacy; extern int warn_declaration_after_statement; extern int warn_deprecated; extern int warn_deprecated; extern int warn_deprecated_decl; extern int warn_disabled_optimization; extern int warn_div_by_zero; extern int warn_ecpp; extern int warnings_are_errors; extern int flag_extraneous_semicolon; extern int flag_fatal_errors; extern int warn_float_equal; extern int warn_format_extra_args; extern int warn_format_nonliteral; extern int warn_format_security; extern int warn_format_y2k; extern int warn_format_zero_length; extern int mesg_implicit_function_declaration; extern int warn_implicit_int; extern int warn_init_self; extern int warn_inline; extern int warn_invalid_offsetof; extern int warn_long_long; extern int warn_missing_braces; extern int warn_missing_declarations; extern int warn_missing_field_initializers; extern int warn_missing_format_attribute; extern int warn_missing_noreturn; extern int warn_missing_prototypes; extern int warn_nested_externs; extern int warn_nontemplate_friend; extern int warn_nonvdtor; extern int warn_nonnull; extern int warn_old_style_cast; extern int warn_old_style_definition; extern int flag_newer; extern int warn_overloaded_virtual; extern int warn_packed; extern int warn_padded; extern int warn_parentheses; extern int warn_pmf2ptr; extern int warn_pointer_arith; extern int warn_protocol; extern int warn_redundant_decls; extern int flag_redundant; extern int warn_reorder; extern int warn_selector; extern int warn_sequence_point; extern int warn_shadow; extern int warn_sign_compare; extern int warn_sign_promo; extern int warn_strict_prototypes; extern int warn_switch; extern int warn_switch_default; extern int warn_switch_enum; extern int warn_synth; extern int warn_system_headers; extern int warn_traditional; extern int warn_undeclared_selector; extern int warn_uninitialized; extern int warn_notreached; extern int warn_unused_function; extern int warn_unused_label; extern int warn_unused_parameter; extern int warn_unused_value; extern int warn_unused_variable; extern int flag_pic; extern int flag_pie; extern int flag_abi_version; extern int align_functions; extern int align_jumps; extern int align_labels; extern int align_loops; extern int flag_argument_noalias; extern int flag_argument_noalias; extern int flag_argument_noalias; extern int flag_assert; extern int flag_asynchronous_unwind_tables; extern int flag_bounds_check; extern int flag_branch_on_count_reg; extern int flag_branch_probabilities; extern int flag_branch_target_load_optimize; extern int flag_branch_target_load_optimize2; extern int flag_btr_bb_exclusive; extern int flag_caller_saves; extern int flag_check_references; extern int flag_no_common; extern int flag_cprop_registers; extern int flag_crossjumping; extern int flag_cse_follow_jumps; extern int flag_cse_skip_blocks; extern int flag_data_sections; extern int flag_defer_pop; extern int flag_delayed_branch; extern int flag_delete_null_pointer_checks; extern int flag_dump_unnumbered; extern int flag_eliminate_dwarf2_dups; extern int flag_debug_only_used_symbols; extern int flag_eliminate_unused_debug_types; extern int flag_emit_class_files; extern int flag_emit_class_files; extern int flag_exceptions; extern int flag_expensive_optimizations; extern int flag_filelist_file; extern int flag_finite_math_only; extern int flag_float_store; extern int flag_force_addr; extern int flag_force_classes_archive_check; extern int flag_force_mem; extern int flag_no_function_cse; extern int flag_function_sections; extern int flag_gcse; extern int flag_gcse_after_reload; extern int flag_gcse_las; extern int flag_gcse_lm; extern int flag_gcse_sm; extern int flag_guess_branch_prob; extern int flag_hash_synchronization; extern int flag_no_ident; extern int flag_if_conversion; extern int flag_if_conversion2; extern int flag_indirect_dispatch; extern int flag_inhibit_size_directive; extern int flag_no_inline; extern int flag_inline_functions; extern int flag_instrument_function_entry_exit; extern int flag_ivopts; extern int flag_jni; extern int flag_keep_inline_functions; extern int flag_keep_static_consts; extern int flag_leading_underscore; extern int flag_loop_optimize; extern int flag_loop_optimize2; extern int flag_errno_math; extern int mem_report; extern int flag_merge_constants; extern int flag_merge_constants; extern int flag_modulo_sched; extern int flag_move_loop_invariants; extern int flag_mudflap; extern int flag_mudflap_ignore_reads; extern int flag_mudflap_threads; extern int flag_new_regalloc; extern int flag_non_call_exceptions; extern int flag_omit_frame_pointer; extern int flag_regmove; extern int flag_optimize_sibling_calls; extern int flag_optimize_sci; extern int flag_pack_struct; extern int flag_pcc_struct_return; extern int flag_peel_loops; extern int flag_no_peephole; extern int flag_peephole2; extern int flag_pic; extern int flag_pie; extern int flag_prefetch_loop_arrays; extern int profile_flag; extern int profile_arc_flag; extern int flag_profile_values; extern int flag_pcc_struct_return; extern int flag_regmove; extern int flag_rename_registers; extern int flag_reorder_blocks; extern int flag_reorder_blocks_and_partition; extern int flag_reorder_functions; extern int flag_rerun_cse_after_loop; extern int flag_rerun_loop_opt; extern int flag_resched_modulo_sched; extern int flag_rounding_math; extern int flag_schedule_interblock; extern int flag_schedule_speculative; extern int flag_schedule_speculative_load; extern int flag_schedule_speculative_load_dangerous; extern int flag_sched_stalled_insns; extern int flag_sched_stalled_insns_dep; extern int flag_sched2_use_superblocks; extern int flag_sched2_use_traces; extern int flag_schedule_insns; extern int flag_schedule_insns_after_reload; extern int flag_shared_data; extern int flag_signaling_nans; extern int flag_single_precision_constant; extern int flag_speculative_prefetching; extern int flag_split_ivs_in_unroller; extern int flag_stack_check; extern int flag_store_check; extern int flag_strength_reduce; extern int flag_strict_aliasing; extern int flag_syntax_only; extern int flag_test_coverage; extern int flag_thread_jumps; extern int time_report; extern int flag_tracer; extern int flag_trapping_math; extern int flag_trapv; extern int flag_tree_based_profiling; extern int flag_tree_ccp; extern int flag_tree_ch; extern int flag_tree_combine_temps; extern int flag_tree_copyrename; extern int flag_tree_dce; extern int flag_tree_dom; extern int flag_tree_dse; extern int flag_tree_fre; extern int flag_tree_loop_im; extern int flag_tree_loop_ivcanon; extern int flag_tree_loop_linear; extern int flag_tree_loop_optimize; extern int flag_tree_live_range_split; extern int flag_tree_pre; extern int flag_tree_sra; extern int flag_tree_ter; extern int flag_tree_vectorize; extern int flag_unit_at_a_time; extern int flag_unroll_all_loops; extern int flag_unroll_loops; extern int flag_unsafe_math_optimizations; extern int flag_unswitch_loops; extern int flag_unwind_tables; extern int flag_use_boehm_gc; extern int flag_use_divide_subroutine; extern int flag_var_tracking; extern int flag_verbose_asm; extern int flag_value_profile_transformations; extern int flag_web; extern int flag_wrapv; extern int flag_zero_initialized_in_bss; extern int profile_flag; extern int pedantic; extern int quiet_flag; extern int version_flag; extern int inhibit_warnings; enum opt_code { OPT__help, OPT__output_pch_, OPT__param, OPT__target_help, OPT__version, OPT_A, OPT_C, OPT_CC, OPT_D, OPT_E, OPT_F, OPT_G, OPT_H, OPT_I, OPT_M, OPT_MD, OPT_MD_, OPT_MF, OPT_MG, OPT_MM, OPT_MMD, OPT_MMD_, OPT_MP, OPT_MQ, OPT_MT, OPT_O, OPT_Os, OPT_P, OPT_U, OPT_W, OPT_Wabi, OPT_Waggregate_return, OPT_Wall, OPT_Wbad_function_cast, OPT_Wcast_align, OPT_Wcast_qual, OPT_Wchar_subscripts, OPT_Wcomment, OPT_Wcomments, OPT_Wconversion, OPT_Wctor_dtor_privacy, OPT_Wdeclaration_after_statement, OPT_Wdeprecated, OPT_Wdeprecated_declarations, OPT_Wdisabled_optimization, OPT_Wdiv_by_zero, OPT_Weffc__, OPT_Wendif_labels, OPT_Werror, OPT_Werror_implicit_function_declaration, OPT_Wextra, OPT_Wextraneous_semicolon, OPT_Wfatal_errors, OPT_Wfloat_equal, OPT_Wformat, OPT_Wformat_extra_args, OPT_Wformat_nonliteral, OPT_Wformat_security, OPT_Wformat_y2k, OPT_Wformat_zero_length, OPT_Wformat_, OPT_Wimplicit, OPT_Wimplicit_function_declaration, OPT_Wimplicit_int, OPT_Wimport, OPT_Winit_self, OPT_Winline, OPT_Winvalid_offsetof, OPT_Winvalid_pch, OPT_Wlarger_than_, OPT_Wlong_long, OPT_Wmain, OPT_Wmissing_braces, OPT_Wmissing_declarations, OPT_Wmissing_field_initializers, OPT_Wmissing_format_attribute, OPT_Wmissing_include_dirs, OPT_Wmissing_noreturn, OPT_Wmissing_prototypes, OPT_Wmultichar, OPT_Wnested_externs, OPT_Wnon_template_friend, OPT_Wnon_virtual_dtor, OPT_Wnonnull, OPT_Wold_style_cast, OPT_Wold_style_definition, OPT_Wout_of_date, OPT_Woverloaded_virtual, OPT_Wpacked, OPT_Wpadded, OPT_Wparentheses, OPT_Wpmf_conversions, OPT_Wpointer_arith, OPT_Wprotocol, OPT_Wredundant_decls, OPT_Wredundant_modifiers, OPT_Wreorder, OPT_Wreturn_type, OPT_Wselector, OPT_Wsequence_point, OPT_Wshadow, OPT_Wsign_compare, OPT_Wsign_promo, OPT_Wstrict_aliasing, OPT_Wstrict_aliasing_, OPT_Wstrict_prototypes, OPT_Wswitch, OPT_Wswitch_default, OPT_Wswitch_enum, OPT_Wsynth, OPT_Wsystem_headers, OPT_Wtraditional, OPT_Wtrigraphs, OPT_Wundeclared_selector, OPT_Wundef, OPT_Wuninitialized, OPT_Wunknown_pragmas, OPT_Wunreachable_code, OPT_Wunused, OPT_Wunused_function, OPT_Wunused_label, OPT_Wunused_macros, OPT_Wunused_parameter, OPT_Wunused_value, OPT_Wunused_variable, OPT_Wvariadic_macros, OPT_Wwrite_strings, OPT_ansi, OPT_aux_info, OPT_aux_info_, OPT_auxbase, OPT_auxbase_strip, OPT_d, OPT_dumpbase, OPT_fCLASSPATH_, OPT_fPIC, OPT_fPIE, OPT_fabi_version_, OPT_faccess_control, OPT_falign_functions, OPT_falign_functions_, OPT_falign_jumps, OPT_falign_jumps_, OPT_falign_labels, OPT_falign_labels_, OPT_falign_loops, OPT_falign_loops_, OPT_fall_virtual, OPT_falt_external_templates, OPT_fargument_alias, OPT_fargument_noalias, OPT_fargument_noalias_global, OPT_fasm, OPT_fassert, OPT_fassume_compiled, OPT_fassume_compiled_, OPT_fasynchronous_unwind_tables, OPT_fbootclasspath_, OPT_fbounds_check, OPT_fbranch_count_reg, OPT_fbranch_probabilities, OPT_fbranch_target_load_optimize, OPT_fbranch_target_load_optimize2, OPT_fbtr_bb_exclusive, OPT_fbuiltin, OPT_fbuiltin_, OPT_fcall_saved_, OPT_fcall_used_, OPT_fcaller_saves, OPT_fcheck_new, OPT_fcheck_references, OPT_fclasspath_, OPT_fcommon, OPT_fcompile_resource_, OPT_fcond_mismatch, OPT_fconserve_space, OPT_fconst_strings, OPT_fconstant_string_class_, OPT_fcprop_registers, OPT_fcrossjumping, OPT_fcse_follow_jumps, OPT_fcse_skip_blocks, OPT_fdata_sections, OPT_fdefault_inline, OPT_fdefer_pop, OPT_fdelayed_branch, OPT_fdelete_null_pointer_checks, OPT_fdiagnostics_show_location_, OPT_fdisable_assertions, OPT_fdisable_assertions_, OPT_fdollars_in_identifiers, OPT_fdump_, OPT_fdump_unnumbered, OPT_felide_constructors, OPT_feliminate_dwarf2_dups, OPT_feliminate_unused_debug_symbols, OPT_feliminate_unused_debug_types, OPT_femit_class_file, OPT_femit_class_files, OPT_fenable_assertions, OPT_fenable_assertions_, OPT_fencoding_, OPT_fenforce_eh_specs, OPT_fenum_int_equiv, OPT_fexceptions, OPT_fexec_charset_, OPT_fexpensive_optimizations, OPT_fextdirs_, OPT_fexternal_templates, OPT_ffast_math, OPT_ffilelist_file, OPT_ffinite_math_only, OPT_ffixed_, OPT_ffixed_form, OPT_ffixed_line_length_, OPT_ffloat_store, OPT_ffor_scope, OPT_fforce_addr, OPT_fforce_classes_archive_check, OPT_fforce_mem, OPT_ffreestanding, OPT_ffunction_cse, OPT_ffunction_sections, OPT_fgcse, OPT_fgcse_after_reload, OPT_fgcse_las, OPT_fgcse_lm, OPT_fgcse_sm, OPT_fgnu_keywords, OPT_fgnu_runtime, OPT_fguess_branch_probability, OPT_fguiding_decls, OPT_fhandle_exceptions, OPT_fhash_synchronization, OPT_fhonor_std, OPT_fhosted, OPT_fhuge_objects, OPT_fident, OPT_fif_conversion, OPT_fif_conversion2, OPT_fimplement_inlines, OPT_fimplicit_inline_templates, OPT_fimplicit_templates, OPT_findirect_dispatch, OPT_finhibit_size_directive, OPT_finline, OPT_finline_functions, OPT_finline_limit_, OPT_finline_limit_eq, OPT_finput_charset_, OPT_finstrument_functions, OPT_fivopts, OPT_fjni, OPT_fkeep_inline_functions, OPT_fkeep_static_consts, OPT_flabels_ok, OPT_fleading_underscore, OPT_floop_optimize, OPT_floop_optimize2, OPT_fmath_errno, OPT_fmem_report, OPT_fmerge_all_constants, OPT_fmerge_constants, OPT_fmessage_length_, OPT_fmodulo_sched, OPT_fmove_loop_invariants, OPT_fms_extensions, OPT_fmudflap, OPT_fmudflapir, OPT_fmudflapth, OPT_fname_mangling_version_, OPT_fnew_abi, OPT_fnew_ra, OPT_fnext_runtime, OPT_fnil_receivers, OPT_fnon_call_exceptions, OPT_fnonansi_builtins, OPT_fnonnull_objects, OPT_fobjc_exceptions, OPT_fobjc_sjlj_exceptions, OPT_fomit_frame_pointer, OPT_foperator_names, OPT_foptimize_register_move, OPT_foptimize_sibling_calls, OPT_foptimize_static_class_initialization, OPT_foptional_diags, OPT_foutput_class_dir_, OPT_fpack_struct, OPT_fpack_struct_, OPT_fpcc_struct_return, OPT_fpch_deps, OPT_fpch_preprocess, OPT_fpeel_loops, OPT_fpeephole, OPT_fpeephole2, OPT_fpermissive, OPT_fpic, OPT_fpie, OPT_fprefetch_loop_arrays, OPT_fpreprocessed, OPT_fprofile, OPT_fprofile_arcs, OPT_fprofile_generate, OPT_fprofile_use, OPT_fprofile_values, OPT_frandom_seed, OPT_frandom_seed_, OPT_freg_struct_return, OPT_fregmove, OPT_frename_registers, OPT_freorder_blocks, OPT_freorder_blocks_and_partition, OPT_freorder_functions, OPT_freplace_objc_classes, OPT_frepo, OPT_frerun_cse_after_loop, OPT_frerun_loop_opt, OPT_freschedule_modulo_scheduled_loops, OPT_frounding_math, OPT_frtti, OPT_fsched_interblock, OPT_fsched_spec, OPT_fsched_spec_load, OPT_fsched_spec_load_dangerous, OPT_fsched_stalled_insns, OPT_fsched_stalled_insns_dep, OPT_fsched_stalled_insns_dep_, OPT_fsched_stalled_insns_, OPT_fsched_verbose_, OPT_fsched2_use_superblocks, OPT_fsched2_use_traces, OPT_fschedule_insns, OPT_fschedule_insns2, OPT_fshared_data, OPT_fshort_double, OPT_fshort_enums, OPT_fshort_wchar, OPT_fshow_column, OPT_fsignaling_nans, OPT_fsigned_bitfields, OPT_fsigned_char, OPT_fsingle_precision_constant, OPT_fspeculative_prefetching, OPT_fsplit_ivs_in_unroller, OPT_fsquangle, OPT_fstack_check, OPT_fstack_limit, OPT_fstack_limit_register_, OPT_fstack_limit_symbol_, OPT_fstats, OPT_fstore_check, OPT_fstrength_reduce, OPT_fstrict_aliasing, OPT_fstrict_prototype, OPT_fsyntax_only, OPT_ftabstop_, OPT_ftemplate_depth_, OPT_ftest_coverage, OPT_fthis_is_variable, OPT_fthread_jumps, OPT_fthreadsafe_statics, OPT_ftime_report, OPT_ftls_model_, OPT_ftracer, OPT_ftrapping_math, OPT_ftrapv, OPT_ftree_based_profiling, OPT_ftree_ccp, OPT_ftree_ch, OPT_ftree_combine_temps, OPT_ftree_copyrename, OPT_ftree_dce, OPT_ftree_dominator_opts, OPT_ftree_dse, OPT_ftree_fre, OPT_ftree_loop_im, OPT_ftree_loop_ivcanon, OPT_ftree_loop_linear, OPT_ftree_loop_optimize, OPT_ftree_lrs, OPT_ftree_pre, OPT_ftree_sra, OPT_ftree_ter, OPT_ftree_vectorize, OPT_funit_at_a_time, OPT_funroll_all_loops, OPT_funroll_loops, OPT_funsafe_math_optimizations, OPT_funsigned_bitfields, OPT_funsigned_char, OPT_funswitch_loops, OPT_funwind_tables, OPT_fuse_boehm_gc, OPT_fuse_cxa_atexit, OPT_fuse_divide_subroutine, OPT_fvar_tracking, OPT_fverbose_asm, OPT_fvisibility_inlines_hidden, OPT_fvisibility_, OPT_fvpt, OPT_fvtable_gc, OPT_fvtable_thunks, OPT_fweak, OPT_fweb, OPT_fwide_exec_charset_, OPT_fworking_directory, OPT_fwrapv, OPT_fxref, OPT_fzero_initialized_in_bss, OPT_fzero_link, OPT_g, OPT_gcoff, OPT_gdwarf_2, OPT_gen_decls, OPT_ggdb, OPT_gstabs, OPT_gstabs_, OPT_gvms, OPT_gxcoff, OPT_gxcoff_, OPT_idirafter, OPT_imacros, OPT_include, OPT_iprefix, OPT_iquote, OPT_isysroot, OPT_isystem, OPT_iwithprefix, OPT_iwithprefixbefore, OPT_lang_asm, OPT_lang_objc, OPT_m, OPT_nostdinc, OPT_nostdinc__, OPT_o, OPT_p, OPT_pedantic, OPT_pedantic_errors, OPT_print_objc_runtime_info, OPT_quiet, OPT_remap, OPT_std_c__98, OPT_std_c89, OPT_std_c99, OPT_std_c9x, OPT_std_gnu__98, OPT_std_gnu89, OPT_std_gnu99, OPT_std_gnu9x, OPT_std_iso9899_1990, OPT_std_iso9899_199409, OPT_std_iso9899_1999, OPT_std_iso9899_199x, OPT_traditional_cpp, OPT_trigraphs, OPT_undef, OPT_v, OPT_version, OPT_w, N_OPTS }; enum debug_info_type { NO_DEBUG, DBX_DEBUG, SDB_DEBUG, DWARF2_DEBUG, XCOFF_DEBUG, VMS_DEBUG, VMS_AND_DWARF2_DEBUG }; extern enum debug_info_type write_symbols; extern const char *const debug_type_names[]; enum debug_info_level { DINFO_LEVEL_NONE, DINFO_LEVEL_TERSE, DINFO_LEVEL_NORMAL, DINFO_LEVEL_VERBOSE }; extern enum debug_info_level debug_info_level; extern unsigned char use_gnu_debug_info_extensions; extern enum symbol_visibility default_visibility; struct visibility_flags { unsigned inpragma : 1; unsigned inlines_hidden : 1; }; extern struct visibility_flags visibility_options; extern int optimize; extern int optimize_size; extern unsigned char extra_warnings; extern void set_Wunused (int setting); extern int warn_return_type; extern unsigned char warn_larger_than; extern long larger_than_size; extern int warn_strict_aliasing; extern int in_system_header; extern int flag_print_asm_name; extern int flag_signed_char; extern int flag_short_enums; extern int flag_pcc_struct_return; extern int flag_complex_divide_method; extern int flag_really_no_inline; extern int rtl_dump_and_exit; extern int flag_gen_aux_info; extern int flag_dump_unnumbered; extern int flag_pedantic_errors; extern int flag_shlib; extern int flag_debug_asm; extern int flag_dump_rtl_in_asm; extern int flag_renumber_insns; extern int frame_pointer_needed; extern int flag_evaluation_order; extern unsigned long g_switch_value; extern unsigned char g_switch_set; extern int align_loops_log; extern int align_loops_max_skip; extern int align_jumps_log; extern int align_jumps_max_skip; extern int align_labels_log; extern int align_labels_max_skip; extern int align_functions_log; extern int force_align_functions_log; extern int dump_for_graph; enum graph_dump_types { no_graph = 0, vcg }; extern enum graph_dump_types graph_dump_format; extern int flag_detailed_statistics; extern int flag_web; extern int flag_remove_unreachable_functions; extern int flag_var_tracking; extern unsigned char flag_speculative_prefetching_set; extern const char *flag_random_seed; enum rtx_code { UNKNOWN , EXPR_LIST , INSN_LIST , SEQUENCE , ADDRESS , INSN , JUMP_INSN , CALL_INSN , BARRIER , CODE_LABEL , NOTE , COND_EXEC , PARALLEL , ASM_INPUT , ASM_OPERANDS , UNSPEC , UNSPEC_VOLATILE , ADDR_VEC , ADDR_DIFF_VEC , PREFETCH , SET , USE , CLOBBER , CALL , RETURN , TRAP_IF , RESX , CONST_INT , CONST_DOUBLE , CONST_VECTOR , CONST_STRING , CONST , PC , VALUE , REG , SCRATCH , SUBREG , STRICT_LOW_PART , CONCAT , MEM , LABEL_REF , SYMBOL_REF , CC0 , IF_THEN_ELSE , COMPARE , PLUS , MINUS , NEG , MULT , DIV , MOD , UDIV , UMOD , AND , IOR , XOR , NOT , ASHIFT , ROTATE , ASHIFTRT , LSHIFTRT , ROTATERT , SMIN , SMAX , UMIN , UMAX , PRE_DEC , PRE_INC , POST_DEC , POST_INC , PRE_MODIFY , POST_MODIFY , NE , EQ , GE , GT , LE , LT , GEU , GTU , LEU , LTU , UNORDERED , ORDERED , UNEQ , UNGE , UNGT , UNLE , UNLT , LTGT , SIGN_EXTEND , ZERO_EXTEND , TRUNCATE , FLOAT_EXTEND , FLOAT_TRUNCATE , FLOAT , FIX , UNSIGNED_FLOAT , UNSIGNED_FIX , ABS , SQRT , FFS , CLZ , CTZ , POPCOUNT , PARITY , SIGN_EXTRACT , ZERO_EXTRACT , HIGH , LO_SUM , VEC_MERGE , VEC_SELECT , VEC_CONCAT , VEC_DUPLICATE , SS_PLUS , US_PLUS , SS_MINUS , US_MINUS , SS_TRUNCATE , US_TRUNCATE , VAR_LOCATION , LAST_AND_UNUSED_RTX_CODE}; enum rtx_class { RTX_COMPARE, RTX_COMM_COMPARE, RTX_BIN_ARITH, RTX_COMM_ARITH, RTX_UNARY, RTX_EXTRA, RTX_MATCH, RTX_INSN, RTX_OBJ, RTX_CONST_OBJ, RTX_TERNARY, RTX_BITFIELD_OPS, RTX_AUTOINC }; extern const unsigned char rtx_length[((int) LAST_AND_UNUSED_RTX_CODE)]; extern const char * const rtx_name[((int) LAST_AND_UNUSED_RTX_CODE)]; extern const char * const rtx_format[((int) LAST_AND_UNUSED_RTX_CODE)]; extern const enum rtx_class rtx_class[((int) LAST_AND_UNUSED_RTX_CODE)]; extern const unsigned char rtx_size[((int) LAST_AND_UNUSED_RTX_CODE)]; extern const unsigned char rtx_next[((int) LAST_AND_UNUSED_RTX_CODE)]; typedef struct { unsigned min_align: 8; unsigned base_after_vec: 1; unsigned min_after_vec: 1; unsigned max_after_vec: 1; unsigned min_after_base: 1; unsigned max_after_base: 1; unsigned offset_unsigned: 1; unsigned : 2; unsigned scale : 8; } addr_diff_vec_flags; typedef struct mem_attrs { long alias; tree expr; rtx offset; rtx size; unsigned int align; } mem_attrs; typedef struct reg_attrs { tree decl; long offset; } reg_attrs; union rtunion_def { int rt_int; unsigned int rt_uint; const char *rt_str; rtx rt_rtx; rtvec rt_rtvec; enum machine_mode rt_type; addr_diff_vec_flags rt_addr_diff_vec_flags; struct cselib_val_struct *rt_cselib; struct bitmap_head_def *rt_bit; tree rt_tree; struct basic_block_def *rt_bb; mem_attrs *rt_mem; reg_attrs *rt_reg; }; typedef union rtunion_def rtunion; struct rtx_def { __extension__ enum rtx_code code: 16; __extension__ enum machine_mode mode : 8; unsigned int jump : 1; unsigned int call : 1; unsigned int unchanging : 1; unsigned int volatil : 1; unsigned int in_struct : 1; unsigned int used : 1; unsigned frame_related : 1; unsigned return_val : 1; union u { rtunion fld[1]; long hwint[1]; } u; }; struct rtvec_def { int num_elem; rtx elem[1]; }; extern void rtl_check_failed_flag (const char *, rtx, const char *, int, const char *) __attribute__ ((__noreturn__)) ; enum reg_note { REG_DEAD, REG_INC, REG_EQUIV, REG_EQUAL, REG_RETVAL, REG_LIBCALL, REG_NONNEG, REG_NO_CONFLICT, REG_UNUSED, REG_CC_SETTER, REG_CC_USER, REG_LABEL, REG_DEP_ANTI, REG_DEP_OUTPUT, REG_BR_PROB, REG_VALUE_PROFILE, REG_NOALIAS, REG_SAVE_AREA, REG_BR_PRED, REG_FRAME_RELATED_EXPR, REG_EH_CONTEXT, REG_EH_REGION, REG_SAVE_NOTE, REG_MAYBE_DEAD, REG_NORETURN, REG_NON_LOCAL_GOTO, REG_CROSSING_JUMP, REG_SETJMP, REG_ALWAYS_RETURN, REG_NOTE_MAX }; extern const char * const reg_note_name[]; enum insn_note { NOTE_INSN_BIAS = -100, NOTE_INSN_DELETED, NOTE_INSN_DELETED_LABEL, NOTE_INSN_BLOCK_BEG, NOTE_INSN_BLOCK_END, NOTE_INSN_LOOP_BEG, NOTE_INSN_LOOP_END, NOTE_INSN_FUNCTION_BEG, NOTE_INSN_FUNCTION_END, NOTE_INSN_PROLOGUE_END, NOTE_INSN_EPILOGUE_BEG, NOTE_INSN_EH_REGION_BEG, NOTE_INSN_EH_REGION_END, NOTE_INSN_REPEATED_LINE_NUMBER, NOTE_INSN_VAR_LOCATION, NOTE_INSN_EXPECTED_VALUE, NOTE_INSN_BASIC_BLOCK, NOTE_INSN_UNLIKELY_EXECUTED_CODE, NOTE_INSN_MAX }; extern const char * const note_insn_name[NOTE_INSN_MAX - NOTE_INSN_BIAS]; enum label_kind { LABEL_NORMAL = 0, LABEL_STATIC_ENTRY, LABEL_GLOBAL_ENTRY, LABEL_WEAK_ENTRY }; extern int rtx_cost (rtx, enum rtx_code); extern int address_cost (rtx, enum machine_mode); extern unsigned int subreg_lsb (rtx); extern unsigned int subreg_lsb_1 (enum machine_mode, enum machine_mode, unsigned int); extern unsigned int subreg_regno_offset (unsigned int, enum machine_mode, unsigned int, enum machine_mode); extern unsigned char subreg_offset_representable_p (unsigned int, enum machine_mode, unsigned int, enum machine_mode); extern unsigned int subreg_regno (rtx); extern unsigned long nonzero_bits (rtx, enum machine_mode); extern unsigned int num_sign_bit_copies (rtx, enum machine_mode); extern int generating_concat_p; extern int currently_expanding_to_rtl; extern int ceil_log2 (unsigned long); extern rtx expand_builtin_expect_jump (tree, rtx, rtx); extern void purge_builtin_constant_p (void); extern void set_stack_check_libfunc (rtx); extern long trunc_int_for_mode (long, enum machine_mode); extern rtx plus_constant (rtx, long); extern void optimize_save_area_alloca (void); extern rtvec gen_rtvec (int, ...); extern rtx copy_insn_1 (rtx); extern rtx copy_insn (rtx); extern rtx gen_int_mode (long, enum machine_mode); extern rtx emit_copy_of_insn_after (rtx, rtx); extern void set_reg_attrs_from_mem (rtx, rtx); extern void set_mem_attrs_from_reg (rtx, rtx); extern void set_reg_attrs_for_parm (rtx, rtx); extern void set_reg_pointer_align (rtx, unsigned int); extern int mem_expr_equal_p (tree, tree); extern rtx rtx_alloc_stat (enum rtx_code ); extern rtvec rtvec_alloc (int); extern rtx copy_rtx (rtx); extern void dump_rtx_statistics (void); extern rtx copy_rtx_if_shared (rtx); extern rtx copy_most_rtx (rtx, rtx); extern rtx shallow_copy_rtx_stat (rtx ); extern int rtx_equal_p (rtx, rtx); extern rtvec gen_rtvec_v (int, rtx *); extern rtx gen_reg_rtx (enum machine_mode); extern rtx gen_rtx_REG_offset (rtx, enum machine_mode, unsigned int, int); extern rtx gen_label_rtx (void); extern int subreg_hard_regno (rtx, int); extern rtx gen_lowpart_common (enum machine_mode, rtx); extern rtx gen_lowpart_if_possible (enum machine_mode, rtx); extern rtx gen_highpart (enum machine_mode, rtx); extern rtx gen_highpart_mode (enum machine_mode, enum machine_mode, rtx); extern rtx gen_realpart (enum machine_mode, rtx); extern rtx gen_imagpart (enum machine_mode, rtx); extern rtx operand_subword (rtx, unsigned int, int, enum machine_mode); extern rtx operand_subword_force (rtx, unsigned int, enum machine_mode); extern int subreg_lowpart_p (rtx); extern unsigned int subreg_lowpart_offset (enum machine_mode, enum machine_mode); extern unsigned int subreg_highpart_offset (enum machine_mode, enum machine_mode); extern rtx make_safe_from (rtx, rtx); extern rtx convert_memory_address (enum machine_mode, rtx); extern rtx get_insns (void); extern const char *get_insn_name (int); extern rtx get_last_insn (void); extern rtx get_last_insn_anywhere (void); extern rtx get_first_nonnote_insn (void); extern rtx get_last_nonnote_insn (void); extern void start_sequence (void); extern void push_to_sequence (rtx); extern void end_sequence (void); extern void push_to_full_sequence (rtx, rtx); extern rtx immed_double_const (long, long, enum machine_mode); extern rtx force_const_mem (enum machine_mode, rtx); struct function; extern rtx get_pool_constant (rtx); extern rtx get_pool_constant_mark (rtx, unsigned char *); extern enum machine_mode get_pool_mode (rtx); extern rtx get_pool_constant_for_function (struct function *, rtx); extern enum machine_mode get_pool_mode_for_function (struct function *, rtx); extern int get_pool_offset (rtx); extern rtx simplify_subtraction (rtx); extern rtx assign_stack_local (enum machine_mode, long, int); extern rtx assign_stack_temp (enum machine_mode, long, int); extern rtx assign_stack_temp_for_type (enum machine_mode, long, int, tree); extern rtx assign_temp (tree, int, int, int); extern rtx emit_insn_before (rtx, rtx); extern rtx emit_insn_before_setloc (rtx, rtx, int); extern rtx emit_jump_insn_before (rtx, rtx); extern rtx emit_jump_insn_before_setloc (rtx, rtx, int); extern rtx emit_call_insn_before (rtx, rtx); extern rtx emit_call_insn_before_setloc (rtx, rtx, int); extern rtx emit_barrier_before (rtx); extern rtx emit_label_before (rtx, rtx); extern rtx emit_note_before (int, rtx); extern rtx emit_insn_after (rtx, rtx); extern rtx emit_insn_after_setloc (rtx, rtx, int); extern rtx emit_jump_insn_after (rtx, rtx); extern rtx emit_jump_insn_after_setloc (rtx, rtx, int); extern rtx emit_call_insn_after (rtx, rtx); extern rtx emit_call_insn_after_setloc (rtx, rtx, int); extern rtx emit_barrier_after (rtx); extern rtx emit_label_after (rtx, rtx); extern rtx emit_note_after (int, rtx); extern rtx emit_note_copy_after (rtx, rtx); extern rtx emit_insn (rtx); extern rtx emit_jump_insn (rtx); extern rtx emit_call_insn (rtx); extern rtx emit_label (rtx); extern rtx emit_barrier (void); extern rtx emit_note (int); extern rtx emit_note_copy (rtx); extern rtx emit_line_note (location_t); extern rtx make_insn_raw (rtx); extern void add_function_usage_to (rtx, rtx); extern rtx last_call_insn (void); extern rtx previous_insn (rtx); extern rtx next_insn (rtx); extern rtx prev_nonnote_insn (rtx); extern rtx next_nonnote_insn (rtx); extern rtx prev_real_insn (rtx); extern rtx next_real_insn (rtx); extern rtx prev_active_insn (rtx); extern rtx next_active_insn (rtx); extern int active_insn_p (rtx); extern rtx prev_label (rtx); extern rtx next_label (rtx); extern rtx skip_consecutive_labels (rtx); extern rtx next_cc0_user (rtx); extern rtx prev_cc0_setter (rtx); extern tree choose_inner_scope (tree, tree); extern int insn_line (rtx); extern const char * insn_file (rtx); extern int locator_line (int); extern const char * locator_file (int); extern int prologue_locator, epilogue_locator; extern enum rtx_code reverse_condition (enum rtx_code); extern enum rtx_code reverse_condition_maybe_unordered (enum rtx_code); extern enum rtx_code swap_condition (enum rtx_code); extern enum rtx_code unsigned_condition (enum rtx_code); extern enum rtx_code signed_condition (enum rtx_code); extern void mark_jump_label (rtx, rtx, int); extern void cleanup_barriers (void); extern unsigned char squeeze_notes (rtx *, rtx *); extern rtx delete_related_insns (rtx); extern void delete_jump (rtx); extern void delete_barrier (rtx); extern rtx get_label_before (rtx); extern rtx get_label_after (rtx); extern rtx follow_jumps (rtx); extern rtx *find_constant_term_loc (rtx *); extern rtx try_split (rtx, rtx, int); extern int split_branch_probability; extern rtx split_insns (rtx, rtx); extern rtx simplify_unary_operation (enum rtx_code, enum machine_mode, rtx, enum machine_mode); extern rtx simplify_binary_operation (enum rtx_code, enum machine_mode, rtx, rtx); extern rtx simplify_ternary_operation (enum rtx_code, enum machine_mode, enum machine_mode, rtx, rtx, rtx); extern rtx simplify_const_relational_operation (enum rtx_code, enum machine_mode, rtx, rtx); extern rtx simplify_relational_operation (enum rtx_code, enum machine_mode, enum machine_mode, rtx, rtx); extern rtx simplify_gen_binary (enum rtx_code, enum machine_mode, rtx, rtx); extern rtx simplify_gen_unary (enum rtx_code, enum machine_mode, rtx, enum machine_mode); extern rtx simplify_gen_ternary (enum rtx_code, enum machine_mode, enum machine_mode, rtx, rtx, rtx); extern rtx simplify_gen_relational (enum rtx_code, enum machine_mode, enum machine_mode, rtx, rtx); extern rtx simplify_subreg (enum machine_mode, rtx, enum machine_mode, unsigned int); extern rtx simplify_gen_subreg (enum machine_mode, rtx, enum machine_mode, unsigned int); extern rtx simplify_replace_rtx (rtx, rtx, rtx); extern rtx simplify_rtx (rtx); extern rtx avoid_constant_pool_reference (rtx); extern enum machine_mode choose_hard_reg_mode (unsigned int, unsigned int, unsigned char); extern rtx set_unique_reg_note (rtx, enum reg_note, rtx); typedef struct replace_label_data { rtx r1; rtx r2; unsigned char update_label_nuses; } replace_label_data; extern int rtx_addr_can_trap_p (rtx); extern unsigned char nonzero_address_p (rtx); extern int rtx_unstable_p (rtx); extern int rtx_varies_p (rtx, int); extern int rtx_addr_varies_p (rtx, int); extern long get_integer_term (rtx); extern rtx get_related_value (rtx); extern rtx get_jump_table_offset (rtx, rtx *); extern int global_reg_mentioned_p (rtx); extern int reg_mentioned_p (rtx, rtx); extern int count_occurrences (rtx, rtx, int); extern int reg_referenced_p (rtx, rtx); extern int reg_used_between_p (rtx, rtx, rtx); extern int reg_referenced_between_p (rtx, rtx, rtx); extern int reg_set_between_p (rtx, rtx, rtx); extern int regs_set_between_p (rtx, rtx, rtx); extern int commutative_operand_precedence (rtx); extern int swap_commutative_operands_p (rtx, rtx); extern int modified_between_p (rtx, rtx, rtx); extern int no_labels_between_p (rtx, rtx); extern int no_jumps_between_p (rtx, rtx); extern int modified_in_p (rtx, rtx); extern int insn_dependent_p (rtx, rtx); extern int reg_set_p (rtx, rtx); extern rtx single_set_2 (rtx, rtx); extern int multiple_sets (rtx); extern int set_noop_p (rtx); extern int noop_move_p (rtx); extern rtx find_last_value (rtx, rtx *, rtx, int); extern int refers_to_regno_p (unsigned int, unsigned int, rtx, rtx *); extern int reg_overlap_mentioned_p (rtx, rtx); extern rtx set_of (rtx, rtx); extern void note_stores (rtx, void (*) (rtx, rtx, void *), void *); extern void note_uses (rtx *, void (*) (rtx *, void *), void *); extern int dead_or_set_p (rtx, rtx); extern int dead_or_set_regno_p (rtx, unsigned int); extern rtx find_reg_note (rtx, enum reg_note, rtx); extern rtx find_regno_note (rtx, enum reg_note, unsigned int); extern rtx find_reg_equal_equiv_note (rtx); extern int find_reg_fusage (rtx, enum rtx_code, rtx); extern int find_regno_fusage (rtx, enum rtx_code, unsigned int); extern int pure_call_p (rtx); extern void remove_note (rtx, rtx); extern int side_effects_p (rtx); extern int volatile_refs_p (rtx); extern int volatile_insn_p (rtx); extern int may_trap_p (rtx); extern int inequality_comparisons_p (rtx); extern rtx replace_rtx (rtx, rtx, rtx); extern rtx replace_regs (rtx, rtx *, unsigned int, int); extern int replace_label (rtx *, void *); extern int rtx_referenced_p (rtx, rtx); extern unsigned char tablejump_p (rtx, rtx *, rtx *); extern int computed_jump_p (rtx); typedef int (*rtx_function) (rtx *, void *); extern int for_each_rtx (rtx *, rtx_function, void *); extern rtx regno_use_in (unsigned int, rtx); extern int auto_inc_p (rtx); extern int in_expr_list_p (rtx, rtx); extern void remove_node_from_expr_list (rtx, rtx *); extern int insns_safe_to_move_p (rtx, rtx, rtx *); extern int loc_mentioned_in_p (rtx *, rtx); extern rtx find_first_parameter_load (rtx, rtx); extern unsigned char keep_with_call_p (rtx); extern unsigned char label_is_jump_target_p (rtx, rtx); extern int insn_rtx_cost (rtx); extern rtx find_use_as_address (rtx, rtx, long); void free_EXPR_LIST_list (rtx *); void free_INSN_LIST_list (rtx *); void free_EXPR_LIST_node (rtx); void free_INSN_LIST_node (rtx); rtx alloc_INSN_LIST (rtx, rtx); rtx alloc_EXPR_LIST (int, rtx, rtx); extern int max_parallel; extern void free_reg_info (void); extern int asm_noperands (rtx); extern const char *decode_asm_operands (rtx, rtx *, rtx **, const char **, enum machine_mode *); extern enum reg_class reg_preferred_class (int); extern enum reg_class reg_alternate_class (int); extern void split_all_insns (int); extern void split_all_insns_noflow (void); extern rtx const_int_rtx[64 * 2 + 1]; extern rtx const_true_rtx; extern rtx const_tiny_rtx[3][(int) MAX_MACHINE_MODE]; enum global_rtl_index { GR_PC, GR_CC0, GR_STACK_POINTER, GR_FRAME_POINTER, GR_HARD_FRAME_POINTER, GR_ARG_POINTER, GR_VIRTUAL_INCOMING_ARGS, GR_VIRTUAL_STACK_ARGS, GR_VIRTUAL_STACK_DYNAMIC, GR_VIRTUAL_OUTGOING_ARGS, GR_VIRTUAL_CFA, GR_MAX }; extern rtx global_rtl[GR_MAX]; extern rtx pic_offset_table_rtx; extern rtx static_chain_rtx; extern rtx static_chain_incoming_rtx; extern rtx return_address_pointer_rtx; extern rtx gen_rtx_fmt_ee (enum rtx_code, enum machine_mode mode, rtx arg0, rtx arg1); extern rtx gen_rtx_fmt_ue (enum rtx_code, enum machine_mode mode, rtx arg0, rtx arg1); extern rtx gen_rtx_fmt_E (enum rtx_code, enum machine_mode mode, rtvec arg0); extern rtx gen_rtx_fmt_e (enum rtx_code, enum machine_mode mode, rtx arg0); extern rtx gen_rtx_fmt_iuuBieiee (enum rtx_code, enum machine_mode mode, int arg0, rtx arg1, rtx arg2, struct basic_block_def *arg3, int arg4, rtx arg5, int arg6, rtx arg7, rtx arg8); extern rtx gen_rtx_fmt_iuuBieiee0 (enum rtx_code, enum machine_mode mode, int arg0, rtx arg1, rtx arg2, struct basic_block_def *arg3, int arg4, rtx arg5, int arg6, rtx arg7, rtx arg8); extern rtx gen_rtx_fmt_iuuBieieee (enum rtx_code, enum machine_mode mode, int arg0, rtx arg1, rtx arg2, struct basic_block_def *arg3, int arg4, rtx arg5, int arg6, rtx arg7, rtx arg8, rtx arg9); extern rtx gen_rtx_fmt_iuu000000 (enum rtx_code, enum machine_mode mode, int arg0, rtx arg1, rtx arg2); extern rtx gen_rtx_fmt_iuuB00is (enum rtx_code, enum machine_mode mode, int arg0, rtx arg1, rtx arg2, struct basic_block_def *arg3, int arg4, const char *arg5); extern rtx gen_rtx_fmt_s (enum rtx_code, enum machine_mode mode, const char *arg0); extern rtx gen_rtx_fmt_ssiEEsi (enum rtx_code, enum machine_mode mode, const char *arg0, const char *arg1, int arg2, rtvec arg3, rtvec arg4, const char *arg5, int arg6); extern rtx gen_rtx_fmt_Ei (enum rtx_code, enum machine_mode mode, rtvec arg0, int arg1); extern rtx gen_rtx_fmt_eEee0 (enum rtx_code, enum machine_mode mode, rtx arg0, rtvec arg1, rtx arg2, rtx arg3); extern rtx gen_rtx_fmt_eee (enum rtx_code, enum machine_mode mode, rtx arg0, rtx arg1, rtx arg2); extern rtx gen_rtx_fmt_ (enum rtx_code, enum machine_mode mode); extern rtx gen_rtx_fmt_i (enum rtx_code, enum machine_mode mode, int arg0); extern rtx gen_rtx_fmt_w (enum rtx_code, enum machine_mode mode, long arg0); extern rtx gen_rtx_fmt_0 (enum rtx_code, enum machine_mode mode); extern rtx gen_rtx_fmt_i00 (enum rtx_code, enum machine_mode mode, int arg0); extern rtx gen_rtx_fmt_ei (enum rtx_code, enum machine_mode mode, rtx arg0, int arg1); extern rtx gen_rtx_fmt_e0 (enum rtx_code, enum machine_mode mode, rtx arg0); extern rtx gen_rtx_fmt_u00 (enum rtx_code, enum machine_mode mode, rtx arg0); extern rtx gen_rtx_fmt_s00 (enum rtx_code, enum machine_mode mode, const char *arg0); extern rtx gen_rtx_fmt_te (enum rtx_code, enum machine_mode mode, union tree_node *arg0, rtx arg1); extern rtx gen_rtx_fmt_iss (enum rtx_code, enum machine_mode mode, int arg0, const char *arg1, const char *arg2); extern rtx gen_rtx_fmt_is (enum rtx_code, enum machine_mode mode, int arg0, const char *arg1); extern rtx gen_rtx_fmt_isE (enum rtx_code, enum machine_mode mode, int arg0, const char *arg1, rtvec arg2); extern rtx gen_rtx_fmt_iE (enum rtx_code, enum machine_mode mode, int arg0, rtvec arg1); extern rtx gen_rtx_fmt_sEss (enum rtx_code, enum machine_mode mode, const char *arg0, rtvec arg1, const char *arg2, const char *arg3); extern rtx gen_rtx_fmt_eE (enum rtx_code, enum machine_mode mode, rtx arg0, rtvec arg1); extern rtx gen_rtx_fmt_Ess (enum rtx_code, enum machine_mode mode, rtvec arg0, const char *arg1, const char *arg2); extern rtx gen_rtx_fmt_ses (enum rtx_code, enum machine_mode mode, const char *arg0, rtx arg1, const char *arg2); extern rtx gen_rtx_fmt_ss (enum rtx_code, enum machine_mode mode, const char *arg0, const char *arg1); extern rtx gen_rtx_fmt_sies (enum rtx_code, enum machine_mode mode, const char *arg0, int arg1, rtx arg2, const char *arg3); extern rtx gen_rtx_fmt_sse (enum rtx_code, enum machine_mode mode, const char *arg0, const char *arg1, rtx arg2); extern rtx gen_rtx_fmt_sE (enum rtx_code, enum machine_mode mode, const char *arg0, rtvec arg1); extern rtx gen_rtx_fmt_ii (enum rtx_code, enum machine_mode mode, int arg0, int arg1); extern rtx gen_rtx_fmt_Ee (enum rtx_code, enum machine_mode mode, rtvec arg0, rtx arg1); extern rtx gen_rtx_CONST_INT (enum machine_mode, long); extern rtx gen_rtx_CONST_VECTOR (enum machine_mode, rtvec); extern rtx gen_raw_REG (enum machine_mode, int); extern rtx gen_rtx_REG (enum machine_mode, unsigned); extern rtx gen_rtx_SUBREG (enum machine_mode, rtx, int); extern rtx gen_rtx_MEM (enum machine_mode, rtx); extern rtx output_constant_def (tree, int); extern rtx lookup_constant_def (tree); extern int flow2_completed; extern int reload_completed; extern int epilogue_completed; extern int reload_in_progress; extern int cse_not_expected; extern int no_new_pseudos; extern int rtx_to_tree_code (enum rtx_code); extern int delete_trivially_dead_insns (rtx, int); extern int cse_main (rtx, int, FILE *); extern void cse_condition_code_reg (void); extern int exp_equiv_p (rtx, rtx, int, unsigned char); extern unsigned hash_rtx (rtx x, enum machine_mode, int *, int *, unsigned char); extern int comparison_dominates_p (enum rtx_code, enum rtx_code); extern int condjump_p (rtx); extern int any_condjump_p (rtx); extern int any_uncondjump_p (rtx); extern int safe_to_remove_jump_p (rtx); extern rtx pc_set (rtx); extern rtx condjump_label (rtx); extern int simplejump_p (rtx); extern int returnjump_p (rtx); extern int onlyjump_p (rtx); extern int only_sets_cc0_p (rtx); extern int sets_cc0_p (rtx); extern int invert_jump_1 (rtx, rtx); extern int invert_jump (rtx, rtx, int); extern int rtx_renumbered_equal_p (rtx, rtx); extern int true_regnum (rtx); extern unsigned int reg_or_subregno (rtx); extern int redirect_jump_1 (rtx, rtx); extern int redirect_jump (rtx, rtx, int); extern void rebuild_jump_labels (rtx); extern enum rtx_code reversed_comparison_code (rtx, rtx); extern enum rtx_code reversed_comparison_code_parts (enum rtx_code, rtx, rtx, rtx); extern void delete_for_peephole (rtx, rtx); extern int condjump_in_parallel_p (rtx); extern void purge_line_number_notes (rtx); extern int max_reg_num (void); extern int max_label_num (void); extern int get_first_label_num (void); extern void maybe_set_first_label_num (rtx); extern void delete_insns_since (rtx); extern void mark_reg_pointer (rtx, int); extern void mark_user_reg (rtx); extern void reset_used_flags (rtx); extern void set_used_flags (rtx); extern void reorder_insns (rtx, rtx, rtx); extern void reorder_insns_nobb (rtx, rtx, rtx); extern int get_max_uid (void); extern int in_sequence_p (void); extern void force_next_line_note (void); extern void init_emit (void); extern void init_emit_once (int); extern void push_topmost_sequence (void); extern void pop_topmost_sequence (void); extern void reverse_comparison (rtx); extern void set_new_first_and_last_insn (rtx, rtx); extern void set_new_last_label_num (int); extern void unshare_all_rtl (void); extern void unshare_all_rtl_again (rtx); extern void unshare_all_rtl_in_chain (rtx); extern void verify_rtl_sharing (void); extern void set_first_insn (rtx); extern void set_last_insn (rtx); extern void link_cc0_insns (rtx); extern void add_insn (rtx); extern void add_insn_before (rtx, rtx); extern void add_insn_after (rtx, rtx); extern void remove_insn (rtx); extern void emit_insn_after_with_line_notes (rtx, rtx, rtx); extern enum rtx_code classify_insn (rtx); extern rtx emit (rtx); extern void renumber_insns (FILE *); extern void remove_unnecessary_notes (void); extern rtx delete_insn (rtx); extern rtx entry_of_function (void); extern void delete_insn_chain (rtx, rtx); extern rtx unlink_insn_chain (rtx, rtx); extern rtx delete_insn_and_edges (rtx); extern void delete_insn_chain_and_edges (rtx, rtx); extern rtx gen_lowpart_SUBREG (enum machine_mode, rtx); extern rtx gen_const_mem (enum machine_mode, rtx); extern int combine_instructions (rtx, unsigned int); extern unsigned int extended_count (rtx, enum machine_mode, int); extern rtx remove_death (unsigned int, rtx); extern void dump_combine_stats (FILE *); extern void dump_combine_total_stats (FILE *); extern void web_main (void); extern void schedule_insns (FILE *); extern void schedule_ebbs (FILE *); extern void fix_sched_param (const char *, const char *); extern const char *print_rtx_head; extern void debug_rtx (rtx); extern void debug_rtx_list (rtx, int); extern void debug_rtx_range (rtx, rtx); extern rtx debug_rtx_find (rtx, int); extern void print_mem_expr (FILE *, tree); extern void print_rtl (FILE *, rtx); extern void print_simple_rtl (FILE *, rtx); extern int print_rtl_single (FILE *, rtx); extern void print_inline_rtx (FILE *, rtx, int); extern void init_loop (void); extern void loop_optimize (rtx, FILE *, int); extern void branch_target_load_optimize (unsigned char); extern void reposition_prologue_and_epilogue_notes (rtx); extern void thread_prologue_and_epilogue_insns (rtx); extern int prologue_epilogue_contains (rtx); extern int sibcall_epilogue_contains (rtx); extern void mark_temp_addr_taken (rtx); extern void update_temp_slot_address (rtx, rtx); extern void expand_null_return (void); extern void expand_naked_return (void); extern void emit_jump (rtx); extern rtx move_by_pieces (rtx, rtx, unsigned long, unsigned int, int); extern void recompute_reg_usage (rtx, int); extern int initialize_uninitialized_subregs (void); extern void delete_dead_jumptables (void); extern void print_rtl_with_bb (FILE *, rtx); extern void dump_flow_info (FILE *); extern void init_expmed (void); extern void expand_inc (rtx, rtx); extern void expand_dec (rtx, rtx); extern rtx expand_mult_highpart (enum machine_mode, rtx, unsigned long, rtx, int, int); extern unsigned char can_copy_p (enum machine_mode); extern rtx fis_get_condition (rtx); extern int gcse_main (rtx, FILE *); extern int bypass_jumps (FILE *); extern void gcse_after_reload_main (rtx); extern void mark_elimination (int, int); extern int global_alloc (FILE *); extern void dump_global_regs (FILE *); extern void build_insn_chain (rtx); extern int reg_classes_intersect_p (enum reg_class, enum reg_class); extern int reg_class_subset_p (enum reg_class, enum reg_class); extern void globalize_reg (int); extern void init_reg_modes_once (void); extern void init_regs (void); extern void init_fake_stack_mems (void); extern void init_reg_sets (void); extern void regset_release_memory (void); extern void regclass_init (void); extern void regclass (rtx, int, FILE *); extern void reg_scan (rtx, unsigned int, int); extern void reg_scan_update (rtx, rtx, unsigned int); extern void fix_register (const char *, int, int); extern unsigned char invalid_mode_change_p (unsigned int, enum reg_class, enum machine_mode); extern void regmove_optimize (rtx, int, FILE *); extern void combine_stack_adjustments (void); extern void dbr_schedule (rtx, FILE *); extern void dump_local_alloc (FILE *); extern int local_alloc (void); extern unsigned char reg_to_stack (FILE *); enum libcall_type { LCT_NORMAL = 0, LCT_CONST = 1, LCT_PURE = 2, LCT_CONST_MAKE_BLOCK = 3, LCT_PURE_MAKE_BLOCK = 4, LCT_NORETURN = 5, LCT_THROW = 6, LCT_ALWAYS_RETURN = 7, LCT_RETURNS_TWICE = 8 }; extern void emit_library_call (rtx, enum libcall_type, enum machine_mode, int, ...); extern rtx emit_library_call_value (rtx, rtx, enum libcall_type, enum machine_mode, int, ...); extern int set_dominates_use (int, int, int, rtx, rtx); extern int in_data_section (void); extern void init_varasm_once (void); extern void init_rtl (void); extern void traverse_md_constants (int (*) (void **, void *), void *); struct md_constant { char *name, *value; }; extern int read_skip_spaces (FILE *); extern unsigned char read_rtx (FILE *, rtx *, int *); extern const char *read_rtx_filename; extern int read_rtx_lineno; extern void clear_reg_alias_info (rtx); extern rtx canon_rtx (rtx); extern int true_dependence (rtx, enum machine_mode, rtx, int (*)(rtx, int)); extern rtx get_addr (rtx); extern int canon_true_dependence (rtx, enum machine_mode, rtx, rtx, int (*)(rtx, int)); extern int read_dependence (rtx, rtx); extern int anti_dependence (rtx, rtx); extern int output_dependence (rtx, rtx); extern void mark_constant_function (void); extern void init_alias_once (void); extern void init_alias_analysis (void); extern void end_alias_analysis (void); extern rtx addr_side_effect_eval (rtx, int, int); extern unsigned char memory_modified_in_insn_p (rtx, rtx); extern rtx find_base_term (rtx); extern rtx gen_hard_reg_clobber (enum machine_mode, unsigned int); extern rtx get_reg_known_value (unsigned int); extern unsigned char get_reg_known_equiv_p (unsigned int); extern int stack_regs_mentioned (rtx insn); extern rtx stack_limit_rtx; extern void regrename_optimize (void); extern void copyprop_hardreg_forward (void); extern void if_convert (int); extern void invert_br_probabilities (rtx); extern unsigned char expensive_function_p (int); extern void tracer (unsigned int); extern void variable_tracking_main (void); extern void get_mode_bounds (enum machine_mode, int, enum machine_mode, rtx *, rtx *); extern rtx reversed_condition (rtx); extern rtx compare_and_jump_seq (rtx, rtx, enum rtx_code, rtx, int, rtx); extern rtx canon_condition (rtx); extern void simplify_using_condition (rtx, rtx *, struct bitmap_head_def *); extern void reg_alloc (void); extern void sms_schedule (FILE *); struct rtl_hooks { rtx (*gen_lowpart) (enum machine_mode, rtx); rtx (*reg_nonzero_bits) (rtx, enum machine_mode, rtx, enum machine_mode, unsigned long, unsigned long *); rtx (*reg_num_sign_bit_copies) (rtx, enum machine_mode, rtx, enum machine_mode, unsigned int, unsigned int *); }; extern struct rtl_hooks rtl_hooks; extern const struct rtl_hooks general_rtl_hooks; extern void compute_alignments (void); extern void init_final (const char *); extern void app_enable (void); extern void app_disable (void); extern int dbr_sequence_length (void); extern void init_insn_lengths (void); extern int get_attr_length (rtx); extern void shorten_branches (rtx); extern void final_start_function (rtx, FILE *, int); extern void final_end_function (void); extern void final (rtx, FILE *, int, int); extern rtx final_scan_insn (rtx, FILE *, int, int, int, int *); extern rtx alter_subreg (rtx *); extern void output_operand_lossage (const char *, ...) __attribute__ ((__format__ (__printf__, 1, 2))) __attribute__ ((__nonnull__ (1))); extern void output_asm_insn (const char *, rtx *); extern int insn_current_reference_address (rtx); extern int label_to_alignment (rtx); extern void output_asm_label (rtx); extern void output_address (rtx); extern void output_addr_const (FILE *, rtx); typedef long __gcc_host_wide_int__; extern void asm_fprintf (FILE *file, const char *p, ...) __attribute__ ((__format__ (__asm_fprintf__, 2, 3))) __attribute__ ((__nonnull__ (2))); extern void split_double (rtx, rtx *, rtx *); extern int leaf_function_p (void); extern int final_forward_branch_p (rtx); extern int only_leaf_regs_used (void); extern void leaf_renumber_regs_insn (rtx); extern const char *get_insn_template (int, rtx); extern int add_weak (tree, const char *, const char *); extern void allocate_for_life_analysis (void); extern int regno_clobbered_at_setjmp (int); extern void text_section (void); extern void unlikely_text_section (void); extern void data_section (void); extern void readonly_data_section (void); extern int in_text_section (void); extern int in_unlikely_text_section (void); extern void bss_section (void); extern void init_section (void); extern void fini_section (void); extern void named_section (tree, const char *, int); extern void function_section (tree); extern void mergeable_string_section (tree, unsigned long, unsigned int); extern void mergeable_constant_section (enum machine_mode, unsigned long, unsigned int); extern void declare_weak (tree); extern void merge_weak (tree, tree); extern void weak_finish (void); extern int decode_reg_name (const char *); extern void make_var_volatile (tree); extern void assemble_alias (tree, tree); extern void default_assemble_visibility (tree, int); extern void assemble_asm (tree); extern void assemble_start_function (tree, const char *); extern void assemble_end_function (tree, const char *); extern void assemble_variable (tree, int, int, int); extern void assemble_external (tree); extern void assemble_zeros (unsigned long); extern void assemble_align (int); extern void assemble_eh_align (int); extern void assemble_string (const char *, int); extern void assemble_external_libcall (rtx); extern void assemble_label (const char *); extern void assemble_eh_label (const char *); extern void assemble_name (FILE *, const char *); extern const char *integer_asm_op (int, int); extern void assemble_integer_with_op (const char *, rtx); extern unsigned char default_assemble_integer (rtx, unsigned int, int); extern unsigned char assemble_integer (rtx, unsigned, unsigned, int); extern int get_pool_size (void); extern void output_constant_pool (const char *, tree); extern tree initializer_constant_valid_p (tree, tree); extern void output_constant (tree, unsigned long, unsigned int); extern rtx final_sequence; extern FILE *asm_out_file; extern const char *first_global_object_name; extern const char *weak_global_object_name; extern int current_function_is_leaf; extern int current_function_sp_is_unchanging; extern int current_function_uses_only_leaf_regs; extern FILE *dump_file; extern rtx current_insn_predicate; extern rtx current_output_insn; extern rtx this_is_asm_operands; extern int size_directive_output; extern tree last_assemble_variable_decl; extern unsigned char decl_readonly_section (tree, int); extern unsigned char decl_readonly_section_1 (tree, int, int); extern int compute_reloc_for_constant (tree); extern const char *user_label_prefix; extern void default_function_pro_epilogue (FILE *, long); extern void default_exception_section (void); extern void named_section_eh_frame_section (void); extern void collect2_eh_frame_section (void); extern void default_eh_frame_section (void); extern void no_asm_to_stream (FILE *); extern unsigned int get_named_section_flags (const char *); extern unsigned char set_named_section_flags (const char *, unsigned int); extern void named_section_flags (const char *, unsigned int); extern unsigned char named_section_first_declaration (const char *); extern unsigned int default_section_type_flags (tree, const char *, int); extern unsigned int default_section_type_flags_1 (tree, const char *, int, int); extern void default_no_named_section (const char *, unsigned int); extern void default_elf_asm_named_section (const char *, unsigned int); extern void default_coff_asm_named_section (const char *, unsigned int); extern void default_pe_asm_named_section (const char *, unsigned int); extern void default_stabs_asm_out_destructor (rtx, int); extern void default_named_section_asm_out_destructor (rtx, int); extern void default_dtor_section_asm_out_destructor (rtx, int); extern void default_stabs_asm_out_constructor (rtx, int); extern void default_named_section_asm_out_constructor (rtx, int); extern void default_ctor_section_asm_out_constructor (rtx, int); extern void default_select_section (tree, int, unsigned long); extern void default_elf_select_section (tree, int, unsigned long); extern void default_elf_select_section_1 (tree, int, unsigned long, int); extern void default_unique_section (tree, int); extern void default_unique_section_1 (tree, int, int); extern void default_function_rodata_section (tree); extern void default_no_function_rodata_section (tree); extern void default_select_rtx_section (enum machine_mode, rtx, unsigned long); extern void default_elf_select_rtx_section (enum machine_mode, rtx, unsigned long); extern void default_encode_section_info (tree, rtx, int); extern const char *default_strip_name_encoding (const char *); extern unsigned char default_binds_local_p (tree); extern unsigned char default_binds_local_p_1 (tree, int); extern void default_globalize_label (FILE *, const char *); extern void default_emit_unwind_label (FILE *, tree, int, int); extern void default_internal_label (FILE *, const char *, unsigned long); extern void default_file_start (void); extern void file_end_indicate_exec_stack (void); extern unsigned char default_valid_pointer_mode (enum machine_mode); extern int default_address_cost (rtx); extern int toplev_main (unsigned int, const char **); extern int read_integral_parameter (const char *, const char *, const int); extern void strip_off_ending (char *, int); extern const char *trim_filename (const char *); extern void _fatal_insn_not_found (rtx, const char *, int, const char *) __attribute__ ((__noreturn__)); extern void _fatal_insn (const char *, rtx, const char *, int, const char *) __attribute__ ((__noreturn__)); extern void internal_error (const char *, ...) __attribute__ ((__format__ (__gcc_cxxdiag__, 1, 2))) __attribute__ ((__nonnull__ (1))) __attribute__ ((__noreturn__)); extern void warning (const char *, ...) __attribute__ ((__format__ (__gcc_cxxdiag__, 1, 2))) __attribute__ ((__nonnull__ (1))); extern void error (const char *, ...) __attribute__ ((__format__ (__gcc_cxxdiag__, 1, 2))) __attribute__ ((__nonnull__ (1))); extern void fatal_error (const char *, ...) __attribute__ ((__format__ (__gcc_cxxdiag__, 1, 2))) __attribute__ ((__nonnull__ (1))) __attribute__ ((__noreturn__)); extern void pedwarn (const char *, ...) __attribute__ ((__format__ (__gcc_cxxdiag__, 1, 2))) __attribute__ ((__nonnull__ (1))); extern void sorry (const char *, ...) __attribute__ ((__format__ (__gcc_cxxdiag__, 1, 2))) __attribute__ ((__nonnull__ (1))); extern void inform (const char *, ...) __attribute__ ((__format__ (__gcc_cxxdiag__, 1, 2))) __attribute__ ((__nonnull__ (1))); extern void rest_of_decl_compilation (tree, int, int); extern void rest_of_type_compilation (tree, int); extern void rest_of_compilation (void); extern void tree_rest_of_compilation (tree, unsigned char); extern void init_tree_optimization_passes (void); extern void finish_optimization_passes (void); extern unsigned char enable_rtl_dump_file (int); extern void announce_function (tree); extern void error_for_asm (rtx, const char *, ...) __attribute__ ((__format__ (__gcc_cxxdiag__, 2, 3))) __attribute__ ((__nonnull__ (2))); extern void warning_for_asm (rtx, const char *, ...) __attribute__ ((__format__ (__gcc_cxxdiag__, 2, 3))) __attribute__ ((__nonnull__ (2))); extern void warn_deprecated_use (tree); extern void output_quoted_string (FILE *, const char *); extern void output_file_directive (FILE *, const char *); extern void fnotice (FILE *, const char *, ...) __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__nonnull__ (2))); extern int wrapup_global_declarations (tree *, int); extern void check_global_declarations (tree *, int); extern void write_global_declarations (void); extern unsigned local_tick; extern const char *progname; extern const char *dump_base_name; extern const char *aux_base_name; extern const char *aux_info_file_name; extern const char *asm_file_name; extern unsigned char exit_after_options; extern int target_flags_explicit; extern unsigned char user_defined_section_attribute; extern int flag_loop_optimize; extern int flag_crossjumping; extern int flag_if_conversion; extern int flag_if_conversion2; extern int flag_keep_static_consts; extern int flag_peel_loops; extern int flag_rerun_cse_after_loop; extern int flag_thread_jumps; extern int flag_tracer; extern int flag_unroll_loops; extern int flag_unroll_all_loops; extern int flag_unswitch_loops; extern int flag_cprop_registers; extern int time_report; extern int flag_new_regalloc; extern int flag_tree_based_profiling; extern void display_target_options (void); extern void print_version (FILE *, const char *); extern void set_target_switch (const char *); extern void * default_get_pch_validity (size_t *); extern const char * default_pch_valid_p (const void *, size_t); extern struct ht *ident_hash; extern void set_fast_math_flags (int); extern void decode_d_option (const char *); extern unsigned char fast_math_flags_set_p (void); static __inline__ int floor_log2(long n) { if (n) return (sizeof(long)*8-1) - (int)__builtin_clzl(n); return -1; } extern int exact_log2_wide (unsigned long); extern int floor_log2_wide (unsigned long); extern const char *get_src_pwd (void); extern unsigned char set_src_pwd (const char *); struct gcc_target { struct asm_out { const char *open_paren, *close_paren; const char *byte_op; struct asm_int_op { const char *hi; const char *si; const char *di; const char *ti; } aligned_op, unaligned_op; unsigned char (* integer) (rtx x, unsigned int size, int aligned_p); void (* globalize_label) (FILE *, const char *); void (* unwind_label) (FILE *, tree, int, int); void (* unwind_emit) (FILE *, rtx); void (* internal_label) (FILE *, const char *, unsigned long); void (* visibility) (tree, int); void (* function_prologue) (FILE *, long); void (* function_end_prologue) (FILE *); void (* function_begin_epilogue) (FILE *); void (* function_epilogue) (FILE *, long); void (* named_section) (const char *, unsigned int); void (* exception_section) (void); void (* eh_frame_section) (void); void (* select_section) (tree, int, unsigned long); void (* select_rtx_section) (enum machine_mode, rtx, unsigned long); void (* unique_section) (tree, int); void (* function_rodata_section) (tree); void (* constructor) (rtx, int); void (* destructor) (rtx, int); void (* output_mi_thunk) (FILE *file, tree thunk_decl, long delta, long vcall_offset, tree function_decl); unsigned char (* can_output_mi_thunk) (tree thunk_decl, long delta, long vcall_offset, tree function_decl); void (*file_start) (void); void (*file_end) (void); void (*external_libcall) (rtx); void (*mark_decl_preserved) (const char *); } asm_out; struct sched { int (* adjust_cost) (rtx insn, rtx link, rtx def_insn, int cost); int (* adjust_priority) (rtx, int); int (* issue_rate) (void); int (* variable_issue) (FILE *, int, rtx, int); void (* md_init) (FILE *, int, int); void (* md_finish) (FILE *, int); void (* md_init_global) (FILE *, int, int); void (* md_finish_global) (FILE *, int); int (* reorder) (FILE *, int, rtx *, int *, int); int (* reorder2) (FILE *, int, rtx *, int *, int); void (* dependencies_evaluation_hook) (rtx, rtx); void (* init_dfa_pre_cycle_insn) (void); rtx (* dfa_pre_cycle_insn) (void); void (* init_dfa_post_cycle_insn) (void); rtx (* dfa_post_cycle_insn) (void); int (* first_cycle_multipass_dfa_lookahead) (void); int (* first_cycle_multipass_dfa_lookahead_guard) (rtx); int (* dfa_new_cycle) (FILE *, int, rtx, int, int, int *); unsigned char (* is_costly_dependence) (rtx, rtx, rtx, int, int); } sched; enum machine_mode (* eh_return_filter_mode) (void); tree (* merge_decl_attributes) (tree, tree); tree (* merge_type_attributes) (tree, tree); const struct attribute_spec *attribute_table; int (* comp_type_attributes) (tree type1, tree type2); void (* set_default_type_attributes) (tree type); void (* insert_attributes) (tree decl, tree *attributes); unsigned char (* function_attribute_inlinable_p) (tree fndecl); unsigned char (* ms_bitfield_layout_p) (tree record_type); unsigned char (* align_anon_bitfield) (void); void (* init_builtins) (void); rtx (* expand_builtin) (tree exp, rtx target, rtx subtarget, enum machine_mode mode, int ignore); const char * (* mangle_fundamental_type) (tree type); void (* init_libfuncs) (void); unsigned int (* section_type_flags) (tree, const char *, int); unsigned char (* cannot_modify_jumps_p) (void); int (* branch_target_register_class) (void); unsigned char (* branch_target_register_callee_saved) (unsigned char after_pe_gen); unsigned char (* cannot_force_const_mem) (rtx); unsigned char (* cannot_copy_insn_p) (rtx); rtx (* delegitimize_address) (rtx); unsigned char (*function_ok_for_sibcall) (tree decl, tree exp); unsigned char (* in_small_data_p) (tree); unsigned char (* binds_local_p) (tree); void (* encode_section_info) (tree, rtx, int); const char * (* strip_name_encoding) (const char *); unsigned long (* shift_truncation_mask) (enum machine_mode mode); unsigned char (* valid_pointer_mode) (enum machine_mode mode); unsigned char (* scalar_mode_supported_p) (enum machine_mode mode); unsigned char (* vector_mode_supported_p) (enum machine_mode mode); unsigned char (* vector_opaque_p) (tree); unsigned char (* rtx_costs) (rtx x, int code, int outer_code, int *total); int (* address_cost) (rtx x); rtx (* dwarf_register_span) (rtx); unsigned char (* fixed_condition_code_regs) (unsigned int *, unsigned int *); enum machine_mode (* cc_modes_compatible) (enum machine_mode, enum machine_mode); void (* machine_dependent_reorg) (void); tree (* build_builtin_va_list) (void); tree (* gimplify_va_arg_expr) (tree valist, tree type, tree *pre_p, tree *post_p); void * (* get_pch_validity) (size_t *); const char * (* pch_valid_p) (const void *, size_t); unsigned char (* default_short_enums) (void); rtx (* builtin_setjmp_frame_value) (void); tree (* md_asm_clobbers) (tree); struct calls { unsigned char (*promote_function_args) (tree fntype); unsigned char (*promote_function_return) (tree fntype); unsigned char (*promote_prototypes) (tree fntype); rtx (*struct_value_rtx) (tree fndecl, int incoming); unsigned char (*return_in_memory) (tree type, tree fndecl); unsigned char (*return_in_msb) (tree type); unsigned char (*pass_by_reference) (CUMULATIVE_ARGS *ca, enum machine_mode mode, tree type, unsigned char named_arg); rtx (*expand_builtin_saveregs) (void); void (*setup_incoming_varargs) (CUMULATIVE_ARGS *ca, enum machine_mode mode, tree type, int *pretend_arg_size, int second_time); unsigned char (*strict_argument_naming) (CUMULATIVE_ARGS *ca); unsigned char (*pretend_outgoing_varargs_named) (CUMULATIVE_ARGS *ca); unsigned char (* split_complex_arg) (tree type); unsigned char (* must_pass_in_stack) (enum machine_mode mode, tree t); unsigned char (* callee_copies) (CUMULATIVE_ARGS *ca, enum machine_mode mode, tree type, unsigned char named); } calls; struct cxx { tree (*guard_type) (void); unsigned char (*guard_mask_bit) (void); tree (*get_cookie_size) (tree); unsigned char (*cookie_has_size) (void); int (*import_export_class) (tree, int); unsigned char (*cdtor_returns_this) (void); unsigned char (*key_method_may_be_inline) (void); unsigned char (*export_class_data) (void); } cxx; unsigned char have_named_sections; unsigned char have_ctors_dtors; unsigned char have_tls; unsigned char have_srodata_section; unsigned char terminate_dw2_eh_frame_info; unsigned char file_start_app_off; unsigned char file_start_file_directive; unsigned char handle_pragma_redefine_extname; unsigned char handle_pragma_extern_prefix; unsigned char late_rtl_prologue_epilogue; }; extern struct gcc_target targetm; extern tree convert_to_integer (tree, tree); extern tree convert_to_pointer (tree, tree); extern tree convert_to_real (tree, tree); extern tree convert_to_complex (tree, tree); extern tree convert_to_vector (tree, tree); int current_class_depth; typedef struct class_stack_node { tree name; tree type; tree access; splay_tree names_used; }* class_stack_node_t; typedef struct vtbl_init_data_s { tree binfo; tree derived; tree rtti_binfo; tree inits; tree* last_init; tree vbase; varray_type fns; tree index; int primary_vtbl_p; int ctor_vtbl_p; unsigned char generate_vcall_entries; } vtbl_init_data; typedef int (*subobject_offset_fn) (tree, tree, splay_tree); static int current_class_stack_size; static class_stack_node_t current_class_stack; varray_type local_classes; static tree get_vfield_name (tree); static void finish_struct_anon (tree); static tree get_vtable_name (tree); static tree get_basefndecls (tree, tree); static int build_primary_vtable (tree, tree); static int build_secondary_vtable (tree); static void finish_vtbls (tree); static void modify_vtable_entry (tree, tree, tree, tree, tree *); static void finish_struct_bits (tree); static int alter_access (tree, tree, tree); static void handle_using_decl (tree, tree); static void check_for_override (tree, tree); static tree dfs_modify_vtables (tree, void *); static tree modify_all_vtables (tree, tree); static void determine_primary_bases (tree); static void finish_struct_methods (tree); static void maybe_warn_about_overly_private_class (tree); static int method_name_cmp (const void *, const void *); static int resort_method_name_cmp (const void *, const void *); static void add_implicitly_declared_members (tree, int, int, int); static tree fixed_type_or_null (tree, int *, int *); static tree resolve_address_of_overloaded_function (tree, tree, tsubst_flags_t, unsigned char, tree); static tree build_simple_base_path (tree expr, tree binfo); static tree build_vtbl_ref_1 (tree, tree); static tree build_vtbl_initializer (tree, tree, tree, tree, int *); static int count_fields (tree); static int add_fields_to_record_type (tree, struct sorted_fields_type*, int); static void check_bitfield_decl (tree); static void check_field_decl (tree, tree, int *, int *, int *, int *); static void check_field_decls (tree, tree *, int *, int *, int *); static tree *build_base_field (record_layout_info, tree, splay_tree, tree *); static void build_base_fields (record_layout_info, splay_tree, tree *); static void check_methods (tree); static void remove_zero_width_bit_fields (tree); static void check_bases (tree, int *, int *, int *); static void check_bases_and_members (tree); static tree create_vtable_ptr (tree, tree *); static void include_empty_classes (record_layout_info); static void layout_class_type (tree, tree *); static void fixup_pending_inline (tree); static void fixup_inline_methods (tree); static void propagate_binfo_offsets (tree, tree); static void layout_virtual_bases (record_layout_info, splay_tree); static void build_vbase_offset_vtbl_entries (tree, vtbl_init_data *); static void add_vcall_offset_vtbl_entries_r (tree, vtbl_init_data *); static void add_vcall_offset_vtbl_entries_1 (tree, vtbl_init_data *); static void build_vcall_offset_vtbl_entries (tree, vtbl_init_data *); static void add_vcall_offset (tree, tree, vtbl_init_data *); static void layout_vtable_decl (tree, int); static tree dfs_find_final_overrider (tree, void *); static tree dfs_find_final_overrider_post (tree, void *); static tree dfs_find_final_overrider_q (tree, int, void *); static tree find_final_overrider (tree, tree, tree); static int make_new_vtable (tree, tree); static int maybe_indent_hierarchy (FILE *, int, int); static tree dump_class_hierarchy_r (FILE *, int, tree, tree, int); static void dump_class_hierarchy (tree); static void dump_class_hierarchy_1 (FILE *, int, tree); static void dump_array (FILE *, tree); static void dump_vtable (tree, tree, tree); static void dump_vtt (tree, tree); static void dump_thunk (FILE *, int, tree); static tree build_vtable (tree, tree, tree); static void initialize_vtable (tree, tree); static void layout_nonempty_base_or_field (record_layout_info, tree, tree, splay_tree); static tree end_of_class (tree, int); static unsigned char layout_empty_base (tree, tree, splay_tree); static void accumulate_vtbl_inits (tree, tree, tree, tree, tree); static tree dfs_accumulate_vtbl_inits (tree, tree, tree, tree, tree); static void build_rtti_vtbl_entries (tree, vtbl_init_data *); static void build_vcall_and_vbase_vtbl_entries (tree, vtbl_init_data *); static void clone_constructors_and_destructors (tree); static tree build_clone (tree, tree); static void update_vtable_entry_for_fn (tree, tree, tree, tree *, unsigned); static tree copy_virtuals (tree); static void build_ctor_vtbl_group (tree, tree); static void build_vtt (tree); static tree binfo_ctor_vtable (tree); static tree *build_vtt_inits (tree, tree, tree *, tree *); static tree dfs_build_secondary_vptr_vtt_inits (tree, void *); static tree dfs_ctor_vtable_bases_queue_p (tree, int, void *data); static tree dfs_fixup_binfo_vtbls (tree, void *); static int record_subobject_offset (tree, tree, splay_tree); static int check_subobject_offset (tree, tree, splay_tree); static int walk_subobject_offsets (tree, subobject_offset_fn, tree, splay_tree, tree, int); static void record_subobject_offsets (tree, tree, splay_tree, int); static int layout_conflict_p (tree, tree, splay_tree, int); static int splay_tree_compare_integer_csts (splay_tree_key k1, splay_tree_key k2); static void warn_about_ambiguous_bases (tree); static unsigned char type_requires_array_cookie (tree); static unsigned char contains_empty_class_p (tree); static unsigned char base_derived_from (tree, tree); static int empty_base_at_nonzero_offset_p (tree, tree, splay_tree); static tree end_of_base (tree); static tree get_vcall_index (tree, tree); tree build_base_path (enum tree_code code, tree expr, tree binfo, int nonnull) { tree v_binfo = (tree) ((void *)0); tree d_binfo = (tree) ((void *)0); tree probe; tree offset; tree target_type; tree null_test = ((void *)0); tree ptr_target_type; int fixed_type_p; int want_pointer = ((enum tree_code) (((expr)->common.type))->common.code) == POINTER_TYPE; unsigned char has_empty = 0; unsigned char virtual_access; if (expr == global_trees[TI_ERROR_MARK] || binfo == global_trees[TI_ERROR_MARK] || !binfo) return global_trees[TI_ERROR_MARK]; for (probe = binfo; probe; probe = (__extension__ ({ const tree __t = (probe); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 259, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.inheritance)) { d_binfo = probe; if (is_empty_class (((__extension__ ({ const tree __t = (probe); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 262, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type))) has_empty = 1; if (!v_binfo && (__extension__ ({ const tree __t = (probe); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 264, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag)) v_binfo = probe; } probe = (__extension__ ({ const tree __t = (((expr)->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 268, __FUNCTION__); __t; })->type.main_variant); if (want_pointer) probe = (__extension__ ({ const tree __t = (((probe)->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 270, __FUNCTION__); __t; })->type.main_variant); ((void)(!(code == MINUS_EXPR ? comptypes ((((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 276, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)), (probe), 0) : code == PLUS_EXPR ? comptypes ((((__extension__ ({ const tree __t = (d_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 276, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)), (probe), 0) : 0) ? fancy_abort ("../../gcc/gcc/cp/class.c", 276, __FUNCTION__), 0 : 0)); if (binfo == d_binfo) return expr; if (code == MINUS_EXPR && v_binfo) { error ("cannot convert from base `%T' to derived type `%T' via virtual base `%T'", ((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 285, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type), ((__extension__ ({ const tree __t = (d_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 285, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type), ((__extension__ ({ const tree __t = (v_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 285, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)); return global_trees[TI_ERROR_MARK]; } if (!want_pointer) expr = build_unary_op (ADDR_EXPR, expr, 0); offset = (__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 293, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.offset); fixed_type_p = resolves_to_fixed_type_p (expr, &nonnull); virtual_access = (v_binfo && fixed_type_p <= 0); if (want_pointer && !nonnull && (virtual_access || !integer_zerop (offset))) null_test = global_trees[TI_ERROR_MARK]; if ((__extension__ ({ const tree __t = (expr); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!((__c) != 't')) tree_class_check_failed (__t, 'T', "../../gcc/gcc/cp/class.c", 304, __FUNCTION__); __t; })->common.side_effects_flag) && (null_test || virtual_access)) expr = save_expr (expr); if (null_test) null_test = fold (build2_stat (NE_EXPR,global_trees[TI_BOOLEAN_TYPE],expr,global_trees[TI_INTEGER_ZERO] )); if (code == PLUS_EXPR && !virtual_access && !has_empty) { expr = build_indirect_ref (expr, ((void *)0)); expr = build_simple_base_path (expr, binfo); if (want_pointer) expr = build_address (expr); target_type = ((expr)->common.type); goto out; } if (virtual_access) { tree v_offset; if (fixed_type_p < 0 && (cfun->language)->in_base_initializer) { tree derived = (__extension__ ({ const tree __t = (v_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 337, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.inheritance); tree t; t = (((__extension__ ({ const tree __t = (((__extension__ ({ const tree __t = (derived); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 340, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 340, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.minval))->common.type); t = build_pointer_type (t); v_offset = convert (t, (cfun->language)->x_vtt_parm); v_offset = build2_stat (PLUS_EXPR,t,v_offset,(__extension__ ({ const tree __t = (derived); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 344, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vtt_vptr) ); v_offset = build_indirect_ref (v_offset, ((void *)0)); } else v_offset = build_vfield_ref (build_indirect_ref (expr, ((void *)0)), ((((expr)->common.type))->common.type)); v_offset = build2_stat (PLUS_EXPR,((v_offset)->common.type),v_offset,(__extension__ ({ const tree __t = (v_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 352, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vptr_field) ); v_offset = build1_stat (NOP_EXPR,build_pointer_type (global_trees[TI_PTRDIFF_TYPE]),v_offset ); v_offset = build_indirect_ref (v_offset, ((void *)0)); (__extension__ ({ const tree __t = (v_offset); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!((__c) != 't')) tree_class_check_failed (__t, 'T', "../../gcc/gcc/cp/class.c", 357, __FUNCTION__); __t; })->common.constant_flag) = 1; ((v_offset)->common.invariant_flag) = 1; offset = convert_to_integer (global_trees[TI_PTRDIFF_TYPE], size_diffop (offset, (__extension__ ({ const tree __t = (v_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 362, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.offset))); if (!integer_zerop (offset)) v_offset = build2_stat (code,global_trees[TI_PTRDIFF_TYPE],v_offset,offset ); if (fixed_type_p < 0) offset = build3_stat (COND_EXPR,global_trees[TI_PTRDIFF_TYPE],build2_stat (EQ_EXPR,global_trees[TI_BOOLEAN_TYPE],(cfun->language)->x_in_charge_parm,global_trees[TI_INTEGER_ZERO] ),v_offset,(__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 375, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.offset) ); else offset = v_offset; } target_type = code == PLUS_EXPR ? ((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 380, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type) : ((__extension__ ({ const tree __t = (d_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 380, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type); target_type = cp_build_qualified_type_real ((target_type), (cp_type_quals (((((expr)->common.type))->common.type))), tf_error | tf_warning); ptr_target_type = build_pointer_type (target_type); if (want_pointer) target_type = ptr_target_type; expr = build1_stat (NOP_EXPR,ptr_target_type,expr ); if (!integer_zerop (offset)) expr = build2_stat (code,ptr_target_type,expr,offset ); else null_test = ((void *)0); if (!want_pointer) expr = build_indirect_ref (expr, ((void *)0)); out: if (null_test) expr = fold (build3_stat (COND_EXPR,target_type,null_test,expr,fold (build1_stat (NOP_EXPR,target_type,global_trees[TI_INTEGER_ZERO] )) )); return expr; } static tree build_simple_base_path (tree expr, tree binfo) { tree type = ((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 414, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type); tree d_binfo = (__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 415, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.inheritance); tree field; if (d_binfo == (tree) ((void *)0)) { ((void)(!((__extension__ ({ const tree __t = (((expr)->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 420, __FUNCTION__); __t; })->type.main_variant) == type) ? fancy_abort ("../../gcc/gcc/cp/class.c", 420, __FUNCTION__), 0 : 0)); return expr; } expr = build_simple_base_path (expr, d_binfo); for (field = (__extension__ ({ const tree __t = (((__extension__ ({ const tree __t = (d_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 427, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 427, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.values); field; field = ((field)->common.chain)) if (((enum tree_code) (field)->common.code) == FIELD_DECL && (__extension__ ({ const tree __t = (__extension__ ({ const tree __t = (field); if (((enum tree_code) (__t)->common.code) != (FIELD_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 431, __FUNCTION__, (FIELD_DECL), 0); __t; })); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 431, __FUNCTION__); __t; })->decl.lang_flag_6) && ((field)->common.type) == type) return build_class_member_access_expr (expr, field, (tree) ((void *)0), 0); (fancy_abort ("../../gcc/gcc/cp/class.c", 437, __FUNCTION__)); } tree convert_to_base (tree object, tree type, unsigned char check_access) { tree binfo; binfo = lookup_base (((object)->common.type), type, check_access ? ba_check : ba_ignore, ((void *)0)); if (!binfo || binfo == global_trees[TI_ERROR_MARK]) return global_trees[TI_ERROR_MARK]; return build_base_path (PLUS_EXPR, object, binfo, 1); } tree convert_to_base_statically (tree expr, tree base) { tree expr_type; expr_type = ((expr)->common.type); if (!comptypes ((expr_type), (((__extension__ ({ const tree __t = (base); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 469, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)), 0)) { tree pointer_type; pointer_type = build_pointer_type (expr_type); expr = build_unary_op (ADDR_EXPR, expr, 1); if (!integer_zerop ((__extension__ ({ const tree __t = (base); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 475, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.offset))) expr = build2_stat (PLUS_EXPR,pointer_type,expr,build_nop (pointer_type, (__extension__ ({ const tree __t = (base); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 477, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.offset)) ); expr = build_nop (build_pointer_type (((__extension__ ({ const tree __t = (base); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 478, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)), expr); expr = build1_stat (INDIRECT_REF,((__extension__ ({ const tree __t = (base); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 479, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type),expr ); } return expr; } tree build_vfield_ref (tree datum, tree type) { tree vfield, vcontext; if (datum == global_trees[TI_ERROR_MARK]) return global_trees[TI_ERROR_MARK]; if (((enum tree_code) (((datum)->common.type))->common.code) == REFERENCE_TYPE) datum = convert_from_reference (datum); if (!comptypes (((__extension__ ({ const tree __t = (((datum)->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 498, __FUNCTION__); __t; })->type.main_variant)), ((__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 498, __FUNCTION__); __t; })->type.main_variant)), 0)) datum = convert_to_base (datum, type, 0); vfield = (__extension__ ({ const tree __t = (type); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 507, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.minval); vcontext = (__extension__ ({ const tree __t = (vfield); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 508, __FUNCTION__); __t; })->decl.context); while (!comptypes (((__extension__ ({ const tree __t = (vcontext); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 509, __FUNCTION__); __t; })->type.main_variant)), ((__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 509, __FUNCTION__); __t; })->type.main_variant)), 0)) { datum = build_simple_base_path (datum, (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 511, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 511, __FUNCTION__); <->u.c; })->primary_base)); type = ((datum)->common.type); } return build3_stat (COMPONENT_REF,((vfield)->common.type),datum,vfield,(tree) ((void *)0) ); } static tree build_vtbl_ref_1 (tree instance, tree idx) { tree aref; tree vtbl = (tree) ((void *)0); int cdtorp = 0; tree fixed_type = fixed_type_or_null (instance, ((void *)0), &cdtorp); tree basetype = non_reference (((instance)->common.type)); if (fixed_type && !cdtorp) { tree binfo = lookup_base (fixed_type, basetype, ba_ignore|ba_quiet, ((void *)0)); if (binfo) vtbl = unshare_expr ((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 542, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vtable)); } if (!vtbl) vtbl = build_vfield_ref (instance, basetype); assemble_external (vtbl); aref = build_array_ref (vtbl, idx); (__extension__ ({ const tree __t = (aref); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!((__c) != 't')) tree_class_check_failed (__t, 'T', "../../gcc/gcc/cp/class.c", 551, __FUNCTION__); __t; })->common.constant_flag) |= (__extension__ ({ const tree __t = (vtbl); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!((__c) != 't')) tree_class_check_failed (__t, 'T', "../../gcc/gcc/cp/class.c", 551, __FUNCTION__); __t; })->common.constant_flag) && (__extension__ ({ const tree __t = (idx); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!((__c) != 't')) tree_class_check_failed (__t, 'T', "../../gcc/gcc/cp/class.c", 551, __FUNCTION__); __t; })->common.constant_flag); ((aref)->common.invariant_flag) = (__extension__ ({ const tree __t = (aref); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!((__c) != 't')) tree_class_check_failed (__t, 'T', "../../gcc/gcc/cp/class.c", 552, __FUNCTION__); __t; })->common.constant_flag); return aref; } tree build_vtbl_ref (tree instance, tree idx) { tree aref = build_vtbl_ref_1 (instance, idx); return aref; } tree build_vfn_ref (tree instance_ptr, tree idx) { tree aref; aref = build_vtbl_ref_1 (build_indirect_ref (instance_ptr, 0), idx); if (0) aref = build1_stat (NOP_EXPR,((aref)->common.type),build_unary_op (ADDR_EXPR, aref, 1) ); aref = build3_stat (OBJ_TYPE_REF,((aref)->common.type),aref,instance_ptr,idx ); return aref; } static tree get_vtable_name (tree type) { return mangle_vtbl_for_type (type); } tree get_vtt_name (tree type) { return mangle_vtt_for_type (type); } void set_linkage_according_to_type (tree type, tree decl) { if (no_linkage_check (type, 1)) { ((decl)->common.public_flag) = 0; (__extension__ ({ const tree __t = (decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 625, __FUNCTION__); __t; })->decl.lang_flag_5) = 1; } else ((decl)->common.public_flag) = 1; } static tree build_vtable (tree class_type, tree name, tree vtable_type) { tree decl; decl = build_lang_decl (VAR_DECL, name, vtable_type); (__extension__ ({ const tree __t = (decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 643, __FUNCTION__); __t; })->decl.assembler_name = (name)); (__extension__ ({ const tree __t = (decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 644, __FUNCTION__); __t; })->decl.context) = class_type; (__extension__ ({ const tree __t = (decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 645, __FUNCTION__); __t; })->decl.artificial_flag) = 1; ((decl)->common.static_flag) = 1; (__extension__ ({ const tree __t = (decl); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!((__c) != 't')) tree_class_check_failed (__t, 'T', "../../gcc/gcc/cp/class.c", 647, __FUNCTION__); __t; })->common.readonly_flag) = 1; (__extension__ ({ const tree __t = (decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 648, __FUNCTION__); __t; })->decl.virtual_flag) = 1; (__extension__ ({ const tree __t = (decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 649, __FUNCTION__); __t; })->decl.u1.a.align) = (8 * (0 ? 8 : 4)); ((__extension__ ({ const tree __t = (decl); if (((enum tree_code) (__t)->common.code) != (VAR_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 650, __FUNCTION__, (VAR_DECL), 0); __t; }))->common.lang_flag_5) = 1; (__extension__ ({ const tree __t = (decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 653, __FUNCTION__); __t; })->decl.u1.a.align) = (((__extension__ ({ const tree __t = (global_trees[TI_DOUBLE_TYPE]); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 654, __FUNCTION__); __t; })->type.align)) > ((__extension__ ({ const tree __t = (decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 654, __FUNCTION__); __t; })->decl.u1.a.align)) ? ((__extension__ ({ const tree __t = (global_trees[TI_DOUBLE_TYPE]); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 654, __FUNCTION__); __t; })->type.align)) : ((__extension__ ({ const tree __t = (decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 654, __FUNCTION__); __t; })->decl.u1.a.align))); set_linkage_according_to_type (class_type, decl); (__extension__ ({ const tree __t = (decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 657, __FUNCTION__); __t; })->decl.external_flag) = 1; ((__extension__ ({ const tree __t = (decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 658, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.not_really_extern) = 1; if (write_symbols == DWARF2_DEBUG) (__extension__ ({ const tree __t = (decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 681, __FUNCTION__); __t; })->decl.ignored_flag) = 1; return decl; } tree get_vtable_decl (tree type, int complete) { tree decl; if ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 697, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 697, __FUNCTION__); <->u.c; })->vtables)) return (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 698, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 698, __FUNCTION__); <->u.c; })->vtables); decl = build_vtable (type, get_vtable_name (type), cp_global_trees[CPTI_VTBL_TYPE]); (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 701, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 701, __FUNCTION__); <->u.c; })->vtables) = decl; if (complete) { (__extension__ ({ const tree __t = (decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 705, __FUNCTION__); __t; })->decl.external_flag) = 1; cp_finish_decl (decl, (tree) ((void *)0), (tree) ((void *)0), 0); } return decl; } static tree copy_virtuals (tree binfo) { tree copies; tree t; copies = copy_list ((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 721, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.virtuals)); for (t = copies; t; t = ((t)->common.chain)) (((t)->common.type)) = (tree) ((void *)0); return copies; } static int build_primary_vtable (tree binfo, tree type) { tree decl; tree virtuals; decl = get_vtable_decl (type, 0); if (binfo) { if ((((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 744, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_2))) return 0; virtuals = copy_virtuals (binfo); ((decl)->common.type) = ((get_vtbl_decl_for_binfo (binfo))->common.type); (__extension__ ({ const tree __t = (decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 751, __FUNCTION__); __t; })->decl.size) = (__extension__ ({ const tree __t = (((decl)->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 751, __FUNCTION__); __t; })->type.size); (__extension__ ({ const tree __t = (decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 752, __FUNCTION__); __t; })->decl.size_unit) = (__extension__ ({ const tree __t = (((decl)->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 752, __FUNCTION__); __t; })->type.size_unit); } else { ((void)(!(((decl)->common.type) == cp_global_trees[CPTI_VTBL_TYPE]) ? fancy_abort ("../../gcc/gcc/cp/class.c", 756, __FUNCTION__), 0 : 0)); virtuals = (tree) ((void *)0); } (__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (type); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 767, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo)); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 767, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vtable) = decl; (__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (type); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 768, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo)); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 768, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.virtuals) = virtuals; ((((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (type); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 769, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo)); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 769, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_2)) = 1, ((void)(!(!((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (type); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 769, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo)); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 769, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_5) || (__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (type); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 769, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo)); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 769, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag)) ? fancy_abort ("../../gcc/gcc/cp/class.c", 769, __FUNCTION__), 0 : 0)), ((void)(!((__extension__ ({ const tree __t = (((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (type); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 769, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo)); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 769, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 769, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.minval)) ? fancy_abort ("../../gcc/gcc/cp/class.c", 769, __FUNCTION__), 0 : 0))); return 1; } static int build_secondary_vtable (tree binfo) { if ((((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 790, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_2))) return 0; ((((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 797, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_2)) = 1, ((void)(!(!((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 797, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_5) || (__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 797, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag)) ? fancy_abort ("../../gcc/gcc/cp/class.c", 797, __FUNCTION__), 0 : 0)), ((void)(!((__extension__ ({ const tree __t = (((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 797, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 797, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.minval)) ? fancy_abort ("../../gcc/gcc/cp/class.c", 797, __FUNCTION__), 0 : 0))); (__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 800, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.virtuals) = copy_virtuals (binfo); (__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 804, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vtable) = (tree) ((void *)0); return 1; } static int make_new_vtable (tree t, tree binfo) { if (binfo == (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 814, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo)) return build_primary_vtable (binfo, t); else return build_secondary_vtable (binfo); } static void modify_vtable_entry (tree t, tree binfo, tree fndecl, tree delta, tree *virtuals) { tree v; v = *virtuals; if (fndecl != ((__extension__ ({ const tree __t = (v); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 844, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value)) || !tree_int_cst_equal (delta, ((__extension__ ({ const tree __t = (v); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 845, __FUNCTION__, (TREE_LIST), 0); __t; })->list.purpose)))) { if (make_new_vtable (t, binfo)) { *virtuals = (__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 853, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.virtuals); while (((__extension__ ({ const tree __t = (*virtuals); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 854, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value)) != ((__extension__ ({ const tree __t = (v); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 854, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value))) *virtuals = ((*virtuals)->common.chain); v = *virtuals; } ((__extension__ ({ const tree __t = (v); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 859, __FUNCTION__, (TREE_LIST), 0); __t; })->list.purpose)) = delta; (((v)->common.type)) = (tree) ((void *)0); ((__extension__ ({ const tree __t = (v); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 861, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value)) = fndecl; } } void add_method (tree type, tree method) { int using; unsigned slot; tree overload; int template_conv_p; VEC_tree *method_vec; unsigned char complete_p; unsigned char insert_p = 0; tree current_fns; if (method == global_trees[TI_ERROR_MARK]) return; complete_p = ((__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 883, __FUNCTION__); __t; })->type.size) != (tree) ((void *)0)); using = ((__extension__ ({ const tree __t = (method); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 884, __FUNCTION__); __t; })->decl.context) != type); template_conv_p = (((enum tree_code) (method)->common.code) == TEMPLATE_DECL && ((__extension__ ({ const tree __t = (method); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 886, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.template_conv_p)); method_vec = (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 888, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 888, __FUNCTION__); <->u.c; })->methods); if (!method_vec) { method_vec = (VEC_tree_alloc(8 )); (VEC_tree_quick_push(method_vec,(tree) ((void *)0) ,"../../gcc/gcc/cp/class.c",897,__FUNCTION__)); (VEC_tree_quick_push(method_vec,(tree) ((void *)0) ,"../../gcc/gcc/cp/class.c",898,__FUNCTION__)); (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 899, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 899, __FUNCTION__); <->u.c; })->methods) = method_vec; } if ((((__extension__ ({ const tree __t = (method); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 903, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.constructor_attr) && !((((enum tree_code) (method)->common.code) == FUNCTION_DECL || ((enum tree_code) (method)->common.code) == TEMPLATE_DECL) && (__extension__ ({ const tree __t = (method); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 903, __FUNCTION__); __t; })->decl.lang_specific) && ((__extension__ ({ const tree __t = (method); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 903, __FUNCTION__); __t; })->decl.lang_specific)->u.f.cloned_function) != (tree) ((void *)0)))) slot = 0; else if ((((__extension__ ({ const tree __t = (method); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 905, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.destructor_attr) && !((((enum tree_code) (method)->common.code) == FUNCTION_DECL || ((enum tree_code) (method)->common.code) == TEMPLATE_DECL) && (__extension__ ({ const tree __t = (method); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 905, __FUNCTION__); __t; })->decl.lang_specific) && ((__extension__ ({ const tree __t = (method); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 905, __FUNCTION__); __t; })->decl.lang_specific)->u.f.cloned_function) != (tree) ((void *)0)))) { slot = 1; ((__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 908, __FUNCTION__); __t; })->type.lang_flag_2)) = 1; if ((__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 910, __FUNCTION__); __t; })->type.lang_flag_3)) error ((__extension__ ({ const tree __t = (method); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 911, __FUNCTION__); __t; })->decl.artificial_flag) ? "Java class '%T' cannot have an implicit non-trivial destructor" : "Java class '%T' cannot have a destructor", (__extension__ ({ const tree __t = (method); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 914, __FUNCTION__); __t; })->decl.context)); } else { unsigned char conv_p = ((__extension__ ({ const tree __t = (method); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 918, __FUNCTION__); __t; })->decl.name) && (((__extension__ ({ const tree __t = (method); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 918, __FUNCTION__); __t; })->decl.name))->common.lang_flag_4)); tree m; insert_p = 1; for (slot = 2; (VEC_tree_iterate(method_vec,slot,&(m))); ++slot) { m = ((((enum tree_code) (m)->common.code) == OVERLOAD) ? (((struct tree_overload*)__extension__ ({ const tree __t = (m); if (((enum tree_code) (__t)->common.code) != (OVERLOAD)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 927, __FUNCTION__, (OVERLOAD), 0); __t; }))->function) : (m)); if (template_conv_p) { if (((enum tree_code) (m)->common.code) == TEMPLATE_DECL && ((__extension__ ({ const tree __t = (m); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 931, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.template_conv_p)) insert_p = 0; break; } if (conv_p && !((__extension__ ({ const tree __t = (m); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 935, __FUNCTION__); __t; })->decl.name) && (((__extension__ ({ const tree __t = (m); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 935, __FUNCTION__); __t; })->decl.name))->common.lang_flag_4))) break; if ((__extension__ ({ const tree __t = (m); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 937, __FUNCTION__); __t; })->decl.name) == (__extension__ ({ const tree __t = (method); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 937, __FUNCTION__); __t; })->decl.name)) { insert_p = 0; break; } if (complete_p && !((__extension__ ({ const tree __t = (m); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 943, __FUNCTION__); __t; })->decl.name) && (((__extension__ ({ const tree __t = (m); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 943, __FUNCTION__); __t; })->decl.name))->common.lang_flag_4)) && (__extension__ ({ const tree __t = (m); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 944, __FUNCTION__); __t; })->decl.name) > (__extension__ ({ const tree __t = (method); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 944, __FUNCTION__); __t; })->decl.name)) break; } } current_fns = insert_p ? (tree) ((void *)0) : (VEC_tree_index(method_vec,slot ,"../../gcc/gcc/cp/class.c",948,__FUNCTION__)); if (scope_chain->x_processing_template_decl) ; else { tree fns; for (fns = current_fns; fns; fns = ((((enum tree_code) (fns)->common.code) == OVERLOAD) ? ((fns)->common.chain) : (tree) ((void *)0))) { tree fn = ((((enum tree_code) (fns)->common.code) == OVERLOAD) ? (((struct tree_overload*)__extension__ ({ const tree __t = (fns); if (((enum tree_code) (__t)->common.code) != (OVERLOAD)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 961, __FUNCTION__, (OVERLOAD), 0); __t; }))->function) : (fns)); tree parms1; tree parms2; unsigned char same = 1; if (((enum tree_code) (fn)->common.code) != ((enum tree_code) (method)->common.code)) continue; parms1 = (__extension__ ({ const tree __t = (((fn)->common.type)); if (((enum tree_code) (__t)->common.code) != (FUNCTION_TYPE) && ((enum tree_code) (__t)->common.code) != (METHOD_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 979, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE), 0); __t; })->type.values); parms2 = (__extension__ ({ const tree __t = (((method)->common.type)); if (((enum tree_code) (__t)->common.code) != (FUNCTION_TYPE) && ((enum tree_code) (__t)->common.code) != (METHOD_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 980, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE), 0); __t; })->type.values); if (! ((__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 985, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.static_function) && ! ((__extension__ ({ const tree __t = (method); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 986, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.static_function) && ((((__extension__ ({ const tree __t = ((((__extension__ ({ const tree __t = (parms1); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 987, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value))->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 987, __FUNCTION__); __t; })->common.readonly_flag) * 0x1) | ((__extension__ ({ const tree __t = ((((__extension__ ({ const tree __t = (parms1); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 987, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value))->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 987, __FUNCTION__); __t; })->common.volatile_flag) * 0x2) | ((__extension__ ({ const tree __t = ((((__extension__ ({ const tree __t = (parms1); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 987, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value))->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 987, __FUNCTION__); __t; })->type.restrict_flag) * 0x4)) != (((__extension__ ({ const tree __t = ((((__extension__ ({ const tree __t = (parms2); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 988, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value))->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 988, __FUNCTION__); __t; })->common.readonly_flag) * 0x1) | ((__extension__ ({ const tree __t = ((((__extension__ ({ const tree __t = (parms2); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 988, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value))->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 988, __FUNCTION__); __t; })->common.volatile_flag) * 0x2) | ((__extension__ ({ const tree __t = ((((__extension__ ({ const tree __t = (parms2); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 988, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value))->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 988, __FUNCTION__); __t; })->type.restrict_flag) * 0x4)))) same = 0; if (((enum tree_code) (fn)->common.code) == TEMPLATE_DECL && !comp_template_parms ((__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 993, __FUNCTION__); __t; })->decl.arguments), (__extension__ ({ const tree __t = (method); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 994, __FUNCTION__); __t; })->decl.arguments))) same = 0; if (! ((__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 997, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.static_function)) parms1 = ((parms1)->common.chain); if (! ((__extension__ ({ const tree __t = (method); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 999, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.static_function)) parms2 = ((parms2)->common.chain); if (same && compparms (parms1, parms2) && (!((__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1003, __FUNCTION__); __t; })->decl.name) && (((__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1003, __FUNCTION__); __t; })->decl.name))->common.lang_flag_4)) || comptypes ((((((fn)->common.type))->common.type)), (((((method)->common.type))->common.type)), 0))) { if (using && (__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1007, __FUNCTION__); __t; })->decl.context) == type) return; else { cp_error_at ("`%#D' and `%#D' cannot be overloaded", method, fn); return; } } } } overload = build_overload (method, current_fns); if (slot >= 2 && !complete_p) push_class_level_binding ((__extension__ ({ const tree __t = (method); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1030, __FUNCTION__); __t; })->decl.name), overload); if (insert_p) { if ((VEC_tree_reserve(&(method_vec),complete_p ? 1 : -1 ))) (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1037, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 1037, __FUNCTION__); <->u.c; })->methods) = method_vec; if (slot == (VEC_tree_length(method_vec))) (VEC_tree_quick_push(method_vec,overload ,"../../gcc/gcc/cp/class.c",1039,__FUNCTION__)); else (VEC_tree_quick_insert(method_vec,slot,overload ,"../../gcc/gcc/cp/class.c",1041,__FUNCTION__)); } else (VEC_tree_replace(method_vec,slot,overload ,"../../gcc/gcc/cp/class.c",1045,__FUNCTION__)); } static int alter_access (tree t, tree fdecl, tree access) { tree elem; if (!(__extension__ ({ const tree __t = (fdecl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1058, __FUNCTION__); __t; })->decl.lang_specific)) retrofit_lang_decl (fdecl); ((void)(!(!(((enum tree_code) (fdecl)->common.code) == VAR_DECL && ((__extension__ ({ const tree __t = (fdecl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1061, __FUNCTION__); __t; })->decl.context) && ((enum tree_code) ((__extension__ ({ const tree __t = (fdecl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1061, __FUNCTION__); __t; })->decl.context))->common.code) == FUNCTION_DECL))) ? fancy_abort ("../../gcc/gcc/cp/class.c", 1061, __FUNCTION__), 0 : 0)); elem = purpose_member (t, (__extension__ ({ struct lang_decl *lt = (__extension__ ({ const tree __t = (fdecl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1063, __FUNCTION__); __t; })->decl.lang_specific); if (lt->decl_flags.u2sel != 0) lang_check_failed ("../../gcc/gcc/cp/class.c", 1063, __FUNCTION__); <->decl_flags.u2; })->access)); if (elem) { if ((__extension__ ({ const tree __t = (elem); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1066, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value) != access) { if (((enum tree_code) (((fdecl)->common.type))->common.code) == FUNCTION_DECL) cp_error_at ("conflicting access specifications for method `%D', ignored", ((fdecl)->common.type)); else error ("conflicting access specifications for field `%E', ignored", (__extension__ ({ const tree __t = (fdecl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1072, __FUNCTION__); __t; })->decl.name)); } else { ; } } else { perform_or_defer_access_check ((__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1083, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo), fdecl); (__extension__ ({ struct lang_decl *lt = (__extension__ ({ const tree __t = (fdecl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1084, __FUNCTION__); __t; })->decl.lang_specific); if (lt->decl_flags.u2sel != 0) lang_check_failed ("../../gcc/gcc/cp/class.c", 1084, __FUNCTION__); <->decl_flags.u2; })->access) = tree_cons_stat (t,access,(__extension__ ({ struct lang_decl *lt = (__extension__ ({ const tree __t = (fdecl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1084, __FUNCTION__); __t; })->decl.lang_specific); if (lt->decl_flags.u2sel != 0) lang_check_failed ("../../gcc/gcc/cp/class.c", 1084, __FUNCTION__); <->decl_flags.u2; })->access) ); return 1; } return 0; } static void handle_using_decl (tree using_decl, tree t) { tree ctype = (__extension__ ({ const tree __t = (using_decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1095, __FUNCTION__); __t; })->decl.initial); tree name = (__extension__ ({ const tree __t = (using_decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1096, __FUNCTION__); __t; })->decl.name); tree access = ((using_decl)->common.private_flag) ? global_trees[TI_PRIVATE] : ((using_decl)->common.protected_flag) ? global_trees[TI_PROTECTED] : global_trees[TI_PUBLIC]; tree fdecl, binfo; tree flist = (tree) ((void *)0); tree old_value; if (ctype == global_trees[TI_ERROR_MARK]) return; binfo = lookup_base (t, ctype, ba_any, ((void *)0)); if (! binfo) { location_t saved_loc = input_location; input_location = (__extension__ ({ const tree __t = (using_decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1113, __FUNCTION__); __t; })->decl.locus); error_not_base_type (ctype, t); input_location = saved_loc; return; } if (constructor_name_p (name, ctype)) { cp_error_at ("`%D' names constructor", using_decl); return; } if (constructor_name_p (name, t)) { cp_error_at ("`%D' invalid in `%T'", using_decl, t); return; } fdecl = lookup_member (binfo, name, 0, 0); if (!fdecl) { cp_error_at ("no members matching `%D' in `%#T'", using_decl, ctype); return; } if ((((enum tree_code) (fdecl)->common.code) == BASELINK)) fdecl = (((struct tree_baselink*) __extension__ ({ const tree __t = (fdecl); if (((enum tree_code) (__t)->common.code) != (BASELINK)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1140, __FUNCTION__, (BASELINK), 0); __t; }))->functions); old_value = lookup_member (t, name, 0, 0); if (old_value) { if (is_overloaded_fn (old_value)) old_value = ((((enum tree_code) (old_value)->common.code) == OVERLOAD) ? (((struct tree_overload*)__extension__ ({ const tree __t = (old_value); if (((enum tree_code) (__t)->common.code) != (OVERLOAD)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1146, __FUNCTION__, (OVERLOAD), 0); __t; }))->function) : (old_value)); if ((tree_code_type[(int) (((enum tree_code) (old_value)->common.code))] == 'd') && (__extension__ ({ const tree __t = (old_value); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1148, __FUNCTION__); __t; })->decl.context) == t) ; else old_value = (tree) ((void *)0); } if (is_overloaded_fn (fdecl)) flist = fdecl; if (! old_value) ; else if (is_overloaded_fn (old_value)) { if (flist) ; else { cp_error_at ("`%D' invalid in `%#T'", using_decl, t); cp_error_at (" because of local method `%#D' with same name", ((((enum tree_code) (old_value)->common.code) == OVERLOAD) ? (((struct tree_overload*)__extension__ ({ const tree __t = (old_value); if (((enum tree_code) (__t)->common.code) != (OVERLOAD)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1168, __FUNCTION__, (OVERLOAD), 0); __t; }))->function) : (old_value))); return; } } else if (!(__extension__ ({ const tree __t = (old_value); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1172, __FUNCTION__); __t; })->decl.artificial_flag)) { cp_error_at ("`%D' invalid in `%#T'", using_decl, t); cp_error_at (" because of local member `%#D' with same name", old_value); return; } if (flist) for (; flist; flist = ((((enum tree_code) (flist)->common.code) == OVERLOAD) ? ((flist)->common.chain) : (tree) ((void *)0))) { add_method (t, ((((enum tree_code) (flist)->common.code) == OVERLOAD) ? (((struct tree_overload*)__extension__ ({ const tree __t = (flist); if (((enum tree_code) (__t)->common.code) != (OVERLOAD)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1183, __FUNCTION__, (OVERLOAD), 0); __t; }))->function) : (flist))); alter_access (t, ((((enum tree_code) (flist)->common.code) == OVERLOAD) ? (((struct tree_overload*)__extension__ ({ const tree __t = (flist); if (((enum tree_code) (__t)->common.code) != (OVERLOAD)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1184, __FUNCTION__, (OVERLOAD), 0); __t; }))->function) : (flist)), access); } else alter_access (t, fdecl, access); } static void check_bases (tree t, int* cant_have_default_ctor_p, int* cant_have_const_ctor_p, int* no_const_asn_ref_p) { int i; int seen_non_virtual_nearly_empty_base_p; tree base_binfo; tree binfo; seen_non_virtual_nearly_empty_base_p = 0; for (binfo = (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1208, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo), i = 0; ((VEC_tree_iterate((&__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1209, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.base_binfos),(i),&((base_binfo))))); i++) { tree basetype = ((base_binfo)->common.type); ((void)(!(((__extension__ ({ const tree __t = (basetype); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1213, __FUNCTION__); __t; })->type.size) != (tree) ((void *)0))) ? fancy_abort ("../../gcc/gcc/cp/class.c", 1213, __FUNCTION__), 0 : 0)); if (warn_ecpp && ! (((basetype)->common.lang_flag_2)) && ((__extension__ ({ const tree __t = (basetype); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1219, __FUNCTION__); __t; })->type.lang_flag_2))) warning ("base class `%#T' has a non-virtual destructor", basetype); if (! (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (basetype); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1227, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 1227, __FUNCTION__); <->u.c; })->has_const_init_ref)) *cant_have_const_ctor_p = 1; if ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (basetype); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1229, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 1229, __FUNCTION__); <->u.c; })->has_assign_ref) && !(__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (basetype); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1230, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 1230, __FUNCTION__); <->u.c; })->h.has_const_assign_ref)) *no_const_asn_ref_p = 1; if (((__extension__ ({ const tree __t = (basetype); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1235, __FUNCTION__); __t; })->type.lang_flag_1)) && ! (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (basetype); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1236, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 1236, __FUNCTION__); <->u.c; })->h.has_default_ctor)) { *cant_have_default_ctor_p = 1; if (! ((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1239, __FUNCTION__); __t; })->type.lang_flag_1))) pedwarn ("base `%T' with only non-default constructor in class without a constructor", basetype); } if ((__extension__ ({ const tree __t = (base_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1244, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag)) ; else if ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (basetype); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1247, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 1247, __FUNCTION__); <->u.c; })->nearly_empty_p)) { if (seen_non_virtual_nearly_empty_base_p) (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1252, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 1252, __FUNCTION__); <->u.c; })->nearly_empty_p) = 0; else seen_non_virtual_nearly_empty_base_p = 1; } else if (!is_empty_class (basetype)) (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1260, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 1260, __FUNCTION__); <->u.c; })->nearly_empty_p) = 0; (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1264, __FUNCTION__); __t; })->type.needs_constructing_flag) |= (__extension__ ({ const tree __t = (basetype); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1264, __FUNCTION__); __t; })->type.needs_constructing_flag); ((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1265, __FUNCTION__); __t; })->type.lang_flag_4)) |= ((__extension__ ({ const tree __t = (basetype); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1266, __FUNCTION__); __t; })->type.lang_flag_4)); (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1267, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 1267, __FUNCTION__); <->u.c; })->has_complex_assign_ref) |= (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (basetype); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1268, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 1268, __FUNCTION__); <->u.c; })->has_complex_assign_ref); (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1269, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 1269, __FUNCTION__); <->u.c; })->has_complex_init_ref) |= (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (basetype); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1269, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 1269, __FUNCTION__); <->u.c; })->has_complex_init_ref); (((t)->common.lang_flag_2)) |= (((basetype)->common.lang_flag_2)); (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1271, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 1271, __FUNCTION__); <->u.c; })->contains_empty_class_p) |= (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (basetype); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1272, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 1272, __FUNCTION__); <->u.c; })->contains_empty_class_p); } } static void determine_primary_bases (tree t) { unsigned i; tree primary = (tree) ((void *)0); tree type_binfo = (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1287, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo); tree base_binfo; for (base_binfo = ((type_binfo)->common.chain); base_binfo; base_binfo = ((base_binfo)->common.chain)) { tree primary = (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (((__extension__ ({ const tree __t = (base_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1294, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1294, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 1294, __FUNCTION__); <->u.c; })->primary_base); if (!(__extension__ ({ const tree __t = (base_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1298, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag)) { tree parent = (__extension__ ({ const tree __t = (base_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1300, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.inheritance); tree parent_primary = (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (((__extension__ ({ const tree __t = (parent); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1301, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1301, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 1301, __FUNCTION__); <->u.c; })->primary_base); if (parent_primary && ((__extension__ ({ const tree __t = (base_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1304, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type) == ((__extension__ ({ const tree __t = (parent_primary); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1304, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)) ((__extension__ ({ const tree __t = (base_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1306, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_5) = 1; } if (primary && (__extension__ ({ const tree __t = (primary); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1310, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag)) { tree this_primary = copied_binfo (primary, base_binfo); if (((__extension__ ({ const tree __t = (this_primary); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1314, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_5)) ((__extension__ ({ const tree __t = (base_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1316, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_4) = 1; else { tree delta; ((__extension__ ({ const tree __t = (this_primary); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1321, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_5) = 1; (__extension__ ({ const tree __t = (this_primary); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1322, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.inheritance) = base_binfo; delta = size_diffop (convert (sizetype_tab[(int) SSIZETYPE], (__extension__ ({ const tree __t = (base_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1328, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.offset)), convert (sizetype_tab[(int) SSIZETYPE], (__extension__ ({ const tree __t = (this_primary); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1330, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.offset))); propagate_binfo_offsets (this_primary, delta); } } } for (i = 0; ((VEC_tree_iterate((&__extension__ ({ const tree __t = (type_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1338, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.base_binfos),(i),&((base_binfo))))); i++) { tree basetype = ((__extension__ ({ const tree __t = (base_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1340, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type); if (((((basetype)->common.lang_flag_2)) || (((basetype)->common.lang_flag_3))) && !(__extension__ ({ const tree __t = (base_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1342, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag)) { primary = base_binfo; goto found; } } for (base_binfo = ((type_binfo)->common.chain); base_binfo; base_binfo = ((base_binfo)->common.chain)) if ((__extension__ ({ const tree __t = (base_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1357, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag) && (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (((__extension__ ({ const tree __t = (base_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1358, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1358, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 1358, __FUNCTION__); <->u.c; })->nearly_empty_p)) { if (!((__extension__ ({ const tree __t = (base_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1360, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_5)) { primary = base_binfo; goto found; } else if (!primary) primary = base_binfo; } found: if (primary) { tree basetype = ((__extension__ ({ const tree __t = (primary); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1375, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type); (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1377, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 1377, __FUNCTION__); <->u.c; })->primary_base) = primary; if (((__extension__ ({ const tree __t = (primary); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1378, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_5)) ((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (primary); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1380, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.inheritance)); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1380, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_4) = 1; ((__extension__ ({ const tree __t = (primary); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1381, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_5) = 1; if ((__extension__ ({ const tree __t = (primary); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1382, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag)) { tree delta; (__extension__ ({ const tree __t = (primary); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1386, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.inheritance) = type_binfo; delta = size_diffop (size_int_kind (0, SSIZETYPE), convert (sizetype_tab[(int) SSIZETYPE], (__extension__ ({ const tree __t = (primary); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1391, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.offset))); propagate_binfo_offsets (primary, delta); } primary = (__extension__ ({ const tree __t = (basetype); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1396, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo); (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1398, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.minval) = (__extension__ ({ const tree __t = (basetype); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1398, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.minval); (__extension__ ({ const tree __t = (type_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1399, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vtable) = (__extension__ ({ const tree __t = (primary); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1399, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vtable); (__extension__ ({ const tree __t = (type_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1400, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.virtuals) = (__extension__ ({ const tree __t = (primary); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1400, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.virtuals); } } static void finish_struct_bits (tree t) { tree variants; for (variants = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1413, __FUNCTION__); __t; })->type.next_variant); variants; variants = (__extension__ ({ const tree __t = (variants); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1415, __FUNCTION__); __t; })->type.next_variant)) { ((__extension__ ({ const tree __t = (variants); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1419, __FUNCTION__); __t; })->type.lang_flag_1)) = ((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1419, __FUNCTION__); __t; })->type.lang_flag_1)); ((__extension__ ({ const tree __t = (variants); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1420, __FUNCTION__); __t; })->type.lang_flag_2)) = ((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1420, __FUNCTION__); __t; })->type.lang_flag_2)); (__extension__ ({ const tree __t = (variants); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1421, __FUNCTION__); __t; })->type.needs_constructing_flag) = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1421, __FUNCTION__); __t; })->type.needs_constructing_flag); ((__extension__ ({ const tree __t = (variants); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1422, __FUNCTION__); __t; })->type.lang_flag_4)) = ((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1423, __FUNCTION__); __t; })->type.lang_flag_4)); (((variants)->common.lang_flag_1)) = (((t)->common.lang_flag_1)); (((variants)->common.lang_flag_2)) = (((t)->common.lang_flag_2)); (((variants)->common.lang_flag_3)) = (((t)->common.lang_flag_3)); (__extension__ ({ const tree __t = (variants); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1431, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo) = (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1431, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo); (__extension__ ({ const tree __t = (variants); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1434, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.minval) = (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1434, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.minval); (__extension__ ({ const tree __t = (variants); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1435, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.maxval) = (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1435, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.maxval); (__extension__ ({ const tree __t = (variants); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1436, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.values) = (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1436, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.values); (__extension__ ({ const tree __t = (variants); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1437, __FUNCTION__); __t; })->type.size) = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1437, __FUNCTION__); __t; })->type.size); (__extension__ ({ const tree __t = (variants); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1438, __FUNCTION__); __t; })->type.size_unit) = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1438, __FUNCTION__); __t; })->type.size_unit); } if (((VEC_tree_length((&__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1441, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo)); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1441, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.base_binfos)))) && (((t)->common.lang_flag_2))) get_pure_virtuals (t); if (! ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1456, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 1456, __FUNCTION__); <->u.c; })->h.has_init_ref) && ! (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1456, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 1456, __FUNCTION__); <->u.c; })->has_complex_init_ref)) || ((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1456, __FUNCTION__); __t; })->type.lang_flag_4))) { tree variants; (__extension__ ({ const tree __t = (((((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1459, __FUNCTION__); __t; })->type.main_variant))->common.chain))); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1459, __FUNCTION__); __t; })->decl.mode) = BLKmode; for (variants = t; variants; variants = (__extension__ ({ const tree __t = (variants); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1460, __FUNCTION__); __t; })->type.next_variant)) { (__extension__ ({ const tree __t = (variants); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1462, __FUNCTION__); __t; })->type.mode) = BLKmode; ((variants)->common.addressable_flag) = 1; } } } static void maybe_warn_about_overly_private_class (tree t) { int has_member_fn = 0; int has_nonprivate_method = 0; tree fn; if (!warn_ctor_dtor_privacy || ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1485, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 1485, __FUNCTION__); <->u.c; })->friend_classes) || ((__extension__ ({ const tree __t = (((((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1486, __FUNCTION__); __t; })->type.main_variant))->common.chain))); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1486, __FUNCTION__); __t; })->decl.initial))) || ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1489, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 1489, __FUNCTION__); <->u.c; })->use_template) & 1)) return; for (fn = (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1510, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.maxval); fn; fn = ((fn)->common.chain)) if (!(__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1513, __FUNCTION__); __t; })->decl.artificial_flag)) { if (!((fn)->common.private_flag)) { if (((__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1517, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.static_function)) return; has_nonprivate_method = 1; } else if (!((__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1527, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.constructor_attr) && !((__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1527, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.destructor_attr)) has_member_fn = 1; } if (!has_nonprivate_method && has_member_fn) { unsigned i; tree binfo = (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1540, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo); for (i = 0; i != ((VEC_tree_length((&__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1542, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.base_binfos)))); i++) if ((VEC_tree_index((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1543, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.base_accesses),(i) ,"../../gcc/gcc/cp/class.c",1543,__FUNCTION__)) != global_trees[TI_PRIVATE]) { has_nonprivate_method = 1; break; } if (!has_nonprivate_method) { warning ("all member functions in class `%T' are private", t); return; } } if (((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1558, __FUNCTION__); __t; })->type.lang_flag_2)) && ((((VEC_tree_index((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1559, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 1559, __FUNCTION__); <->u.c; })->methods),1 ,"../../gcc/gcc/cp/class.c",1559,__FUNCTION__))))->common.private_flag)) { warning ("`%#T' only defines a private destructor and has no friends", t); return; } if (((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1566, __FUNCTION__); __t; })->type.lang_flag_1))) { int nonprivate_ctor = 0; if (!(__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1580, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 1580, __FUNCTION__); <->u.c; })->h.has_init_ref)) nonprivate_ctor = 1; else for (fn = ((VEC_tree_index((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1583, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 1583, __FUNCTION__); <->u.c; })->methods),0 ,"../../gcc/gcc/cp/class.c",1583,__FUNCTION__))); fn; fn = ((((enum tree_code) (fn)->common.code) == OVERLOAD) ? ((fn)->common.chain) : (tree) ((void *)0))) { tree ctor = ((((enum tree_code) (fn)->common.code) == OVERLOAD) ? (((struct tree_overload*)__extension__ ({ const tree __t = (fn); if (((enum tree_code) (__t)->common.code) != (OVERLOAD)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1585, __FUNCTION__, (OVERLOAD), 0); __t; }))->function) : (fn)); if (! ((ctor)->common.private_flag)) { nonprivate_ctor = 1; break; } } if (nonprivate_ctor == 0) { warning ("`%#T' only defines private constructors and has no friends", t); return; } } } static struct { gt_pointer_operator new_value; void *cookie; } resort_data; static int method_name_cmp (const void* m1_p, const void* m2_p) { const tree *const m1 = m1_p; const tree *const m2 = m2_p; if (*m1 == (tree) ((void *)0) && *m2 == (tree) ((void *)0)) return 0; if (*m1 == (tree) ((void *)0)) return -1; if (*m2 == (tree) ((void *)0)) return 1; if ((__extension__ ({ const tree __t = (((((enum tree_code) (*m1)->common.code) == OVERLOAD) ? (((struct tree_overload*)__extension__ ({ const tree __t = (*m1); if (((enum tree_code) (__t)->common.code) != (OVERLOAD)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1627, __FUNCTION__, (OVERLOAD), 0); __t; }))->function) : (*m1))); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1627, __FUNCTION__); __t; })->decl.name) < (__extension__ ({ const tree __t = (((((enum tree_code) (*m2)->common.code) == OVERLOAD) ? (((struct tree_overload*)__extension__ ({ const tree __t = (*m2); if (((enum tree_code) (__t)->common.code) != (OVERLOAD)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1627, __FUNCTION__, (OVERLOAD), 0); __t; }))->function) : (*m2))); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1627, __FUNCTION__); __t; })->decl.name)) return -1; return 1; } static int resort_method_name_cmp (const void* m1_p, const void* m2_p) { const tree *const m1 = m1_p; const tree *const m2 = m2_p; if (*m1 == (tree) ((void *)0) && *m2 == (tree) ((void *)0)) return 0; if (*m1 == (tree) ((void *)0)) return -1; if (*m2 == (tree) ((void *)0)) return 1; { tree d1 = (__extension__ ({ const tree __t = (((((enum tree_code) (*m1)->common.code) == OVERLOAD) ? (((struct tree_overload*)__extension__ ({ const tree __t = (*m1); if (((enum tree_code) (__t)->common.code) != (OVERLOAD)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1647, __FUNCTION__, (OVERLOAD), 0); __t; }))->function) : (*m1))); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1647, __FUNCTION__); __t; })->decl.name); tree d2 = (__extension__ ({ const tree __t = (((((enum tree_code) (*m2)->common.code) == OVERLOAD) ? (((struct tree_overload*)__extension__ ({ const tree __t = (*m2); if (((enum tree_code) (__t)->common.code) != (OVERLOAD)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1648, __FUNCTION__, (OVERLOAD), 0); __t; }))->function) : (*m2))); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1648, __FUNCTION__); __t; })->decl.name); resort_data.new_value (&d1, resort_data.cookie); resort_data.new_value (&d2, resort_data.cookie); if (d1 < d2) return -1; } return 1; } void resort_type_method_vec (void* obj, void* orig_obj __attribute__ ((__unused__)) , gt_pointer_operator new_value, void* cookie) { VEC_tree *method_vec = (VEC_tree *) obj; int len = (VEC_tree_length(method_vec)); size_t slot; tree fn; for (slot = 2; (VEC_tree_iterate(method_vec,slot,&(fn))); ++slot) if (!((__extension__ ({ const tree __t = (((((enum tree_code) (fn)->common.code) == OVERLOAD) ? (((struct tree_overload*)__extension__ ({ const tree __t = (fn); if (((enum tree_code) (__t)->common.code) != (OVERLOAD)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1675, __FUNCTION__, (OVERLOAD), 0); __t; }))->function) : (fn))); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1675, __FUNCTION__); __t; })->decl.name) && (((__extension__ ({ const tree __t = (((((enum tree_code) (fn)->common.code) == OVERLOAD) ? (((struct tree_overload*)__extension__ ({ const tree __t = (fn); if (((enum tree_code) (__t)->common.code) != (OVERLOAD)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1675, __FUNCTION__, (OVERLOAD), 0); __t; }))->function) : (fn))); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1675, __FUNCTION__); __t; })->decl.name))->common.lang_flag_4))) break; if (len - slot > 1) { resort_data.new_value = new_value; resort_data.cookie = cookie; qsort ((VEC_tree_address(method_vec)) + slot, len - slot, sizeof (tree), resort_method_name_cmp); } } static void finish_struct_methods (tree t) { tree fn_fields; VEC_tree *method_vec; int slot, len; method_vec = (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1710, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 1710, __FUNCTION__); <->u.c; })->methods); if (!method_vec) return; len = (VEC_tree_length(method_vec)); for (fn_fields = (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1718, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.maxval); fn_fields; fn_fields = ((fn_fields)->common.chain)) ((__extension__ ({ const tree __t = (fn_fields); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1721, __FUNCTION__); __t; })->decl.lang_flag_3)) = 0; if (((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1723, __FUNCTION__); __t; })->type.lang_flag_2)) && !((VEC_tree_index((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1723, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 1723, __FUNCTION__); <->u.c; })->methods),1 ,"../../gcc/gcc/cp/class.c",1723,__FUNCTION__)))) ((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1726, __FUNCTION__); __t; })->type.lang_flag_2)) = 0; maybe_warn_about_overly_private_class (t); for (slot = 2; (VEC_tree_iterate(method_vec,slot,&(fn_fields))); ++slot) if (!((__extension__ ({ const tree __t = (((((enum tree_code) (fn_fields)->common.code) == OVERLOAD) ? (((struct tree_overload*)__extension__ ({ const tree __t = (fn_fields); if (((enum tree_code) (__t)->common.code) != (OVERLOAD)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1737, __FUNCTION__, (OVERLOAD), 0); __t; }))->function) : (fn_fields))); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1737, __FUNCTION__); __t; })->decl.name) && (((__extension__ ({ const tree __t = (((((enum tree_code) (fn_fields)->common.code) == OVERLOAD) ? (((struct tree_overload*)__extension__ ({ const tree __t = (fn_fields); if (((enum tree_code) (__t)->common.code) != (OVERLOAD)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1737, __FUNCTION__, (OVERLOAD), 0); __t; }))->function) : (fn_fields))); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1737, __FUNCTION__); __t; })->decl.name))->common.lang_flag_4))) break; if (len - slot > 1) qsort ((VEC_tree_address(method_vec)) + slot, len-slot, sizeof (tree), method_name_cmp); } static void layout_vtable_decl (tree binfo, int n) { tree atype; tree vtable; atype = build_cplus_array_type (cp_global_trees[CPTI_VTABLE_ENTRY_TYPE], build_index_type (size_int_kind (n - 1, SIZETYPE))); layout_type (atype); vtable = get_vtbl_decl_for_binfo (binfo); if (!comptypes ((((vtable)->common.type)), (atype), 0)) { ((vtable)->common.type) = atype; (__extension__ ({ const tree __t = (vtable); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1763, __FUNCTION__); __t; })->decl.size) = (__extension__ ({ const tree __t = (vtable); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1763, __FUNCTION__); __t; })->decl.size_unit) = (tree) ((void *)0); layout_decl (vtable, 0); } } int same_signature_p (tree fndecl, tree base_fndecl) { if (((__extension__ ({ const tree __t = (base_fndecl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1776, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.destructor_attr) && ((__extension__ ({ const tree __t = (fndecl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1776, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.destructor_attr) && special_function_p (base_fndecl) == special_function_p (fndecl)) return 1; if (((__extension__ ({ const tree __t = (base_fndecl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1783, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.destructor_attr) || ((__extension__ ({ const tree __t = (fndecl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1783, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.destructor_attr)) return 0; if ((__extension__ ({ const tree __t = (fndecl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1786, __FUNCTION__); __t; })->decl.name) == (__extension__ ({ const tree __t = (base_fndecl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1786, __FUNCTION__); __t; })->decl.name) || (((__extension__ ({ const tree __t = (fndecl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1787, __FUNCTION__); __t; })->decl.name) && (((__extension__ ({ const tree __t = (fndecl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1787, __FUNCTION__); __t; })->decl.name))->common.lang_flag_4)) && ((__extension__ ({ const tree __t = (base_fndecl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1788, __FUNCTION__); __t; })->decl.name) && (((__extension__ ({ const tree __t = (base_fndecl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1788, __FUNCTION__); __t; })->decl.name))->common.lang_flag_4)) && comptypes (((((__extension__ ({ const tree __t = (fndecl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1790, __FUNCTION__); __t; })->decl.name) && (((__extension__ ({ const tree __t = (fndecl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1790, __FUNCTION__); __t; })->decl.name))->common.lang_flag_4)) ? (((__extension__ ({ const tree __t = (fndecl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1790, __FUNCTION__); __t; })->decl.name))->common.type) : (tree) ((void *)0))), ((((__extension__ ({ const tree __t = (base_fndecl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1790, __FUNCTION__); __t; })->decl.name) && (((__extension__ ({ const tree __t = (base_fndecl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1790, __FUNCTION__); __t; })->decl.name))->common.lang_flag_4)) ? (((__extension__ ({ const tree __t = (base_fndecl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1790, __FUNCTION__); __t; })->decl.name))->common.type) : (tree) ((void *)0))), 0))) { tree types, base_types; types = (__extension__ ({ const tree __t = (((fndecl)->common.type)); if (((enum tree_code) (__t)->common.code) != (FUNCTION_TYPE) && ((enum tree_code) (__t)->common.code) != (METHOD_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1793, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE), 0); __t; })->type.values); base_types = (__extension__ ({ const tree __t = (((base_fndecl)->common.type)); if (((enum tree_code) (__t)->common.code) != (FUNCTION_TYPE) && ((enum tree_code) (__t)->common.code) != (METHOD_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1794, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE), 0); __t; })->type.values); if (((((__extension__ ({ const tree __t = ((((__extension__ ({ const tree __t = (base_types); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1795, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value))->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1795, __FUNCTION__); __t; })->common.readonly_flag) * 0x1) | ((__extension__ ({ const tree __t = ((((__extension__ ({ const tree __t = (base_types); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1795, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value))->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1795, __FUNCTION__); __t; })->common.volatile_flag) * 0x2) | ((__extension__ ({ const tree __t = ((((__extension__ ({ const tree __t = (base_types); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1795, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value))->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1795, __FUNCTION__); __t; })->type.restrict_flag) * 0x4)) == (((__extension__ ({ const tree __t = ((((__extension__ ({ const tree __t = (types); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1796, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value))->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1796, __FUNCTION__); __t; })->common.readonly_flag) * 0x1) | ((__extension__ ({ const tree __t = ((((__extension__ ({ const tree __t = (types); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1796, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value))->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1796, __FUNCTION__); __t; })->common.volatile_flag) * 0x2) | ((__extension__ ({ const tree __t = ((((__extension__ ({ const tree __t = (types); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1796, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value))->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 1796, __FUNCTION__); __t; })->type.restrict_flag) * 0x4))) && compparms (((base_types)->common.chain), ((types)->common.chain))) return 1; } return 0; } static unsigned char base_derived_from (tree derived, tree base) { tree probe; for (probe = base; probe; probe = (__extension__ ({ const tree __t = (probe); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1811, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.inheritance)) { if (probe == derived) return 1; else if ((__extension__ ({ const tree __t = (probe); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1815, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag)) return (binfo_for_vbase (((__extension__ ({ const tree __t = (probe); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1819, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type), ((__extension__ ({ const tree __t = (derived); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1819, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)) != (tree) ((void *)0)); } return 0; } typedef struct count_depth_data { size_t depth; size_t max_depth; } count_depth_data; static tree dfs_depth_post (tree binfo __attribute__ ((__unused__)), void *data) { count_depth_data *cd = (count_depth_data *) data; if (cd->depth > cd->max_depth) cd->max_depth = cd->depth; cd->depth--; return (tree) ((void *)0); } static tree dfs_depth_q (tree derived, int i, void *data) { count_depth_data *cd = (count_depth_data *) data; cd->depth++; return ((VEC_tree_index((&__extension__ ({ const tree __t = (derived); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1852, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.base_binfos),(i) ,"../../gcc/gcc/cp/class.c",1852,__FUNCTION__))); } typedef struct find_final_overrider_data_s { tree fn; tree declaring_base; tree most_derived_type; tree candidates; tree *vpath_list; tree *vpath; } find_final_overrider_data; static unsigned char dfs_find_final_overrider_1 (tree binfo, tree *vpath, find_final_overrider_data *ffod) { tree method; if (!comptypes ((((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1883, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)), (ffod->most_derived_type), 0)) { tree derived; if ((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1887, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag)) derived = *--vpath; else derived = (__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1890, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.inheritance); if (dfs_find_final_overrider_1 (derived, vpath, ffod)) return 1; } method = look_for_overrides_here (((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1895, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type), ffod->fn); if (method) { tree *candidate = &ffod->candidates; while (*candidate) { if (base_derived_from ((__extension__ ({ const tree __t = (*candidate); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1905, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value), binfo)) return 1; if (base_derived_from (binfo, (__extension__ ({ const tree __t = (*candidate); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1908, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value))) *candidate = ((*candidate)->common.chain); else candidate = &((*candidate)->common.chain); } ffod->candidates = tree_cons_stat (method,binfo,ffod->candidates ); return 1; } return 0; } static tree dfs_find_final_overrider (tree binfo, void* data) { find_final_overrider_data *ffod = (find_final_overrider_data *) data; if (binfo == ffod->declaring_base) dfs_find_final_overrider_1 (binfo, ffod->vpath, ffod); return (tree) ((void *)0); } static tree dfs_find_final_overrider_q (tree derived, int ix, void *data) { tree binfo = ((VEC_tree_index((&__extension__ ({ const tree __t = (derived); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1938, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.base_binfos),(ix) ,"../../gcc/gcc/cp/class.c",1938,__FUNCTION__))); find_final_overrider_data *ffod = (find_final_overrider_data *) data; if ((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1941, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag)) *ffod->vpath++ = derived; return binfo; } static tree dfs_find_final_overrider_post (tree binfo, void *data) { find_final_overrider_data *ffod = (find_final_overrider_data *) data; if ((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1952, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag)) ffod->vpath--; return (tree) ((void *)0); } static tree find_final_overrider (tree derived, tree binfo, tree fn) { find_final_overrider_data ffod; count_depth_data cd; if ((((enum tree_code) (fn)->common.code) == FUNCTION_DECL && (__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1987, __FUNCTION__); __t; })->decl.lang_flag_7))) fn = ((__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 1988, __FUNCTION__); __t; })->decl.lang_specific)->u.f.befriending_classes); cd.depth = 0; cd.max_depth = 0; dfs_walk (derived, dfs_depth_post, dfs_depth_q, &cd); ffod.fn = fn; ffod.declaring_base = binfo; ffod.most_derived_type = ((__extension__ ({ const tree __t = (derived); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 1997, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type); ffod.candidates = (tree) ((void *)0); ffod.vpath_list = (tree *) xcalloc (cd.max_depth, sizeof (tree)); ffod.vpath = ffod.vpath_list; dfs_walk_real (derived, dfs_find_final_overrider, dfs_find_final_overrider_post, dfs_find_final_overrider_q, &ffod); free (ffod.vpath_list); if (!ffod.candidates || ((ffod.candidates)->common.chain)) { error ("no unique final overrider for `%D' in `%T'", fn, ((__extension__ ({ const tree __t = (derived); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2014, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)); return global_trees[TI_ERROR_MARK]; } return ffod.candidates; } static tree get_vcall_index (tree fn, tree type) { VEC_tree_pair_s *indices = (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2027, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 2027, __FUNCTION__); <->u.c; })->vcall_indices); tree_pair_p p; unsigned ix; for (ix = 0; (VEC_tree_pair_s_iterate(indices,ix,&(p))); ix++) if ((((__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2032, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.destructor_attr) && ((__extension__ ({ const tree __t = (p->purpose); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2032, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.destructor_attr)) || same_signature_p (fn, p->purpose)) return p->value; (fancy_abort ("../../gcc/gcc/cp/class.c", 2037, __FUNCTION__)); } static void update_vtable_entry_for_fn (tree t, tree binfo, tree fn, tree* virtuals, unsigned ix) { tree b; tree overrider; tree delta; tree virtual_base; tree first_defn; tree overrider_fn, overrider_target; tree target_fn = (((enum tree_code) (fn)->common.code) == FUNCTION_DECL && (__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2054, __FUNCTION__); __t; })->decl.lang_flag_7)) ? ((__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2054, __FUNCTION__); __t; })->decl.lang_specific)->u.f.befriending_classes) : fn; tree over_return, base_return; unsigned char lost = 0; for (b = binfo; ; b = get_primary_binfo (b)) { ((void)(!(b) ? fancy_abort ("../../gcc/gcc/cp/class.c", 2063, __FUNCTION__), 0 : 0)); if (look_for_overrides_here (((__extension__ ({ const tree __t = (b); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2064, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type), target_fn)) break; if (((__extension__ ({ const tree __t = (b); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2068, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_4)) lost = 1; } first_defn = b; overrider = find_final_overrider ((__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2074, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo), b, target_fn); if (overrider == global_trees[TI_ERROR_MARK]) return; overrider_target = overrider_fn = (__extension__ ({ const tree __t = (overrider); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2077, __FUNCTION__, (TREE_LIST), 0); __t; })->list.purpose); over_return = ((((overrider_target)->common.type))->common.type); base_return = ((((target_fn)->common.type))->common.type); if ((((enum tree_code) (over_return)->common.code) == POINTER_TYPE || ((enum tree_code) (over_return)->common.code) == REFERENCE_TYPE) && ((enum tree_code) (over_return)->common.code) == ((enum tree_code) (base_return)->common.code) && (((((enum tree_code) (((over_return)->common.type))->common.code)) == RECORD_TYPE || (((enum tree_code) (((over_return)->common.type))->common.code)) == UNION_TYPE) && (((enum tree_code) (((over_return)->common.type))->common.code) == TEMPLATE_TYPE_PARM || ((enum tree_code) (((over_return)->common.type))->common.code) == TYPENAME_TYPE || ((enum tree_code) (((over_return)->common.type))->common.code) == TYPEOF_TYPE || ((enum tree_code) (((over_return)->common.type))->common.code) == BOUND_TEMPLATE_TEMPLATE_PARM || (__extension__ ({ const tree __t = (((over_return)->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2085, __FUNCTION__); __t; })->type.lang_flag_5))) && (((((enum tree_code) (((base_return)->common.type))->common.code)) == RECORD_TYPE || (((enum tree_code) (((base_return)->common.type))->common.code)) == UNION_TYPE) && (((enum tree_code) (((base_return)->common.type))->common.code) == TEMPLATE_TYPE_PARM || ((enum tree_code) (((base_return)->common.type))->common.code) == TYPENAME_TYPE || ((enum tree_code) (((base_return)->common.type))->common.code) == TYPEOF_TYPE || ((enum tree_code) (((base_return)->common.type))->common.code) == BOUND_TEMPLATE_TEMPLATE_PARM || (__extension__ ({ const tree __t = (((base_return)->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2086, __FUNCTION__); __t; })->type.lang_flag_5)))) { tree fixed_offset, virtual_offset; if ((((enum tree_code) (fn)->common.code) == FUNCTION_DECL && (__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2094, __FUNCTION__); __t; })->decl.lang_flag_7))) { ((void)(!(((((enum tree_code) (fn)->common.code) == FUNCTION_DECL && (__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2096, __FUNCTION__); __t; })->decl.lang_flag_7)) && !(__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2096, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.this_thunk_p)) ? fancy_abort ("../../gcc/gcc/cp/class.c", 2096, __FUNCTION__), 0 : 0)); fixed_offset = size_int_kind (((__extension__ ({ const tree __t = (__extension__ ({ const tree __t = (fn); if (((enum tree_code) (__t)->common.code) != (VAR_DECL) && ((enum tree_code) (__t)->common.code) != (FUNCTION_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2097, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL), 0); __t; })); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2097, __FUNCTION__); __t; })->decl.lang_specific)->u.f.fixed_offset), SSIZETYPE); virtual_offset = (__extension__ ({ struct lang_decl *lt = (__extension__ ({ const tree __t = (__extension__ ({ const tree __t = (fn); if (((enum tree_code) (__t)->common.code) != (FUNCTION_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2098, __FUNCTION__, (FUNCTION_DECL), 0); __t; })); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2098, __FUNCTION__); __t; })->decl.lang_specific); if (lt->decl_flags.u2sel != 0) lang_check_failed ("../../gcc/gcc/cp/class.c", 2098, __FUNCTION__); <->decl_flags.u2; })->access); } else fixed_offset = virtual_offset = (tree) ((void *)0); if (virtual_offset) virtual_offset = binfo_for_vbase (((__extension__ ({ const tree __t = (virtual_offset); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2107, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type), ((over_return)->common.type)); else if (!comptypes ((((over_return)->common.type)), (((base_return)->common.type)), 0)) { tree thunk_binfo; base_kind kind; thunk_binfo = lookup_base (((over_return)->common.type), ((base_return)->common.type), ba_check | ba_quiet, &kind); if (thunk_binfo && (kind == bk_via_virtual || !(integer_zerop ((__extension__ ({ const tree __t = (thunk_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2122, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.offset))))) { tree offset = convert (sizetype_tab[(int) SSIZETYPE], (__extension__ ({ const tree __t = (thunk_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2124, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.offset)); if (kind == bk_via_virtual) { while (!(__extension__ ({ const tree __t = (thunk_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2130, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag)) thunk_binfo = (__extension__ ({ const tree __t = (thunk_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2131, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.inheritance); virtual_offset = thunk_binfo; offset = size_diffop (offset, convert (sizetype_tab[(int) SSIZETYPE], (__extension__ ({ const tree __t = (virtual_offset); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2136, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.offset))); } if (fixed_offset) fixed_offset = size_binop (PLUS_EXPR, fixed_offset, offset); else fixed_offset = offset; } } if (fixed_offset || virtual_offset) overrider_fn = make_thunk (overrider_target, 0, fixed_offset, virtual_offset); } else ((void)(!(!(((enum tree_code) (fn)->common.code) == FUNCTION_DECL && (__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2156, __FUNCTION__); __t; })->decl.lang_flag_7))) ? fancy_abort ("../../gcc/gcc/cp/class.c", 2156, __FUNCTION__), 0 : 0)); virtual_base = (tree) ((void *)0); for (; b; b = (__extension__ ({ const tree __t = (b); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2164, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.inheritance)) { if (comptypes ((((__extension__ ({ const tree __t = (b); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2169, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)), (((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (overrider); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2169, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value)); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2169, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)), 0)) break; if ((__extension__ ({ const tree __t = (b); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2175, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag)) { virtual_base = b; break; } } if (overrider_fn != overrider_target && !virtual_base) { tree probe = first_defn; while ((probe = get_primary_binfo (probe)) && (unsigned) list_length ((__extension__ ({ const tree __t = (probe); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2201, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.virtuals)) > ix) if ((__extension__ ({ const tree __t = (probe); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2202, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag)) virtual_base = probe; if (virtual_base) goto virtual_covariant; } if (virtual_base) delta = size_diffop (convert (sizetype_tab[(int) SSIZETYPE], (__extension__ ({ const tree __t = (virtual_base); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2218, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.offset)), convert (sizetype_tab[(int) SSIZETYPE], (__extension__ ({ const tree __t = (first_defn); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2219, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.offset))); else if (lost) delta = global_trees[TI_SIZE_ZERO]; else virtual_covariant: delta = size_diffop (convert (sizetype_tab[(int) SSIZETYPE], (__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (overrider); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2232, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value)); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2232, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.offset)), convert (sizetype_tab[(int) SSIZETYPE], (__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2233, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.offset))); modify_vtable_entry (t, binfo, overrider_fn, delta, virtuals); if (virtual_base) (((*virtuals)->common.type)) = get_vcall_index (overrider_target, ((__extension__ ({ const tree __t = (virtual_base); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2239, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)); } static tree dfs_modify_vtables (tree binfo, void* data) { tree t = (tree) data; if ( (!((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2253, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_5) || (__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2253, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag)) && ((((((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2255, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type))->common.lang_flag_2)) || (((((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2255, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type))->common.lang_flag_3))) && (((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2257, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type) != t || ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2257, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 2257, __FUNCTION__); <->u.c; })->primary_base) != (tree) ((void *)0)))) { tree virtuals; tree old_virtuals; unsigned ix; make_new_vtable (t, binfo); for (ix = 0, virtuals = (__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2268, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.virtuals), old_virtuals = (__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2269, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2269, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo)); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2269, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.virtuals); virtuals; ix++, virtuals = ((virtuals)->common.chain), old_virtuals = ((old_virtuals)->common.chain)) update_vtable_entry_for_fn (t, binfo, ((__extension__ ({ const tree __t = (old_virtuals); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2275, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value)), &virtuals, ix); } ((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2279, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_0) = 1; return (tree) ((void *)0); } static tree modify_all_vtables (tree t, tree virtuals) { tree binfo = (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2296, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo); tree *fnsp; dfs_walk (binfo, dfs_modify_vtables, unmarkedp, t); dfs_walk (binfo, dfs_unmark, markedp, t); for (fnsp = &virtuals; *fnsp; ) { tree fn = (__extension__ ({ const tree __t = (*fnsp); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2309, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value); if (!value_member (fn, (__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2311, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.virtuals)) || (__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2312, __FUNCTION__); __t; })->decl.vindex) == global_trees[TI_ERROR_MARK]) { ((__extension__ ({ const tree __t = (*fnsp); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2316, __FUNCTION__, (TREE_LIST), 0); __t; })->list.purpose)) = global_trees[TI_INTEGER_ZERO]; (((*fnsp)->common.type)) = (tree) ((void *)0); fnsp = &((*fnsp)->common.chain); } else *fnsp = ((*fnsp)->common.chain); } return virtuals; } static tree get_basefndecls (tree name, tree t) { tree methods; tree base_fndecls = (tree) ((void *)0); int n_baseclasses = ((VEC_tree_length((&__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2338, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo)); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2338, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.base_binfos)))); int i; i = lookup_fnfields_1 (t, name); if (i != -1) for (methods = (VEC_tree_index((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2344, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 2344, __FUNCTION__); <->u.c; })->methods),i ,"../../gcc/gcc/cp/class.c",2344,__FUNCTION__)); methods; methods = ((((enum tree_code) (methods)->common.code) == OVERLOAD) ? ((methods)->common.chain) : (tree) ((void *)0))) { tree method = ((((enum tree_code) (methods)->common.code) == OVERLOAD) ? (((struct tree_overload*)__extension__ ({ const tree __t = (methods); if (((enum tree_code) (__t)->common.code) != (OVERLOAD)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2348, __FUNCTION__, (OVERLOAD), 0); __t; }))->function) : (methods)); if (((enum tree_code) (method)->common.code) == FUNCTION_DECL && (__extension__ ({ const tree __t = (method); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2351, __FUNCTION__); __t; })->decl.vindex)) base_fndecls = tree_cons_stat ((tree) ((void *)0),method,base_fndecls ); } if (base_fndecls) return base_fndecls; for (i = 0; i < n_baseclasses; i++) { tree basetype = ((__extension__ ({ const tree __t = (((VEC_tree_index((&__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2360, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo)); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2360, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.base_binfos),(i) ,"../../gcc/gcc/cp/class.c",2360,__FUNCTION__)))); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2360, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type); base_fndecls = chainon (get_basefndecls (name, basetype), base_fndecls); } return base_fndecls; } static void check_for_override (tree decl, tree ctype) { if (((enum tree_code) (decl)->common.code) == TEMPLATE_DECL) return; if ((((__extension__ ({ const tree __t = (decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2381, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.destructor_attr) || (((__extension__ ({ const tree __t = (decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2382, __FUNCTION__); __t; })->decl.name))->common.lang_flag_1) || ((__extension__ ({ const tree __t = (decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2383, __FUNCTION__); __t; })->decl.name) && (((__extension__ ({ const tree __t = (decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2383, __FUNCTION__); __t; })->decl.name))->common.lang_flag_4))) && look_for_overrides (ctype, decl) && !((__extension__ ({ const tree __t = (decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2385, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.static_function)) (__extension__ ({ const tree __t = (decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2389, __FUNCTION__); __t; })->decl.vindex) = decl; if ((__extension__ ({ const tree __t = (decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2391, __FUNCTION__); __t; })->decl.virtual_flag)) { if (!(__extension__ ({ const tree __t = (decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2393, __FUNCTION__); __t; })->decl.vindex)) (__extension__ ({ const tree __t = (decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2394, __FUNCTION__); __t; })->decl.vindex) = global_trees[TI_ERROR_MARK]; (((__extension__ ({ const tree __t = (decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2395, __FUNCTION__); __t; })->decl.name))->common.lang_flag_1) = 1; } } void warn_hidden (tree t) { VEC_tree *method_vec = (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2405, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 2405, __FUNCTION__); <->u.c; })->methods); tree fns; size_t i; for (i = 2; (VEC_tree_iterate(method_vec,i,&(fns))); ++i) { tree fn; tree name; tree fndecl; tree base_fndecls; tree base_binfo; tree binfo; int j; name = (__extension__ ({ const tree __t = (((((enum tree_code) (fns)->common.code) == OVERLOAD) ? (((struct tree_overload*)__extension__ ({ const tree __t = (fns); if (((enum tree_code) (__t)->common.code) != (OVERLOAD)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2424, __FUNCTION__, (OVERLOAD), 0); __t; }))->function) : (fns))); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2424, __FUNCTION__); __t; })->decl.name); base_fndecls = (tree) ((void *)0); for (binfo = (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2429, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo), j = 0; ((VEC_tree_iterate((&__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2430, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.base_binfos),(j),&((base_binfo))))); j++) { tree basetype = ((__extension__ ({ const tree __t = (base_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2432, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type); base_fndecls = chainon (get_basefndecls (name, basetype), base_fndecls); } if (!base_fndecls) continue; for (fn = fns; fn; fn = ((((enum tree_code) (fn)->common.code) == OVERLOAD) ? ((fn)->common.chain) : (tree) ((void *)0))) { fndecl = ((((enum tree_code) (fn)->common.code) == OVERLOAD) ? (((struct tree_overload*)__extension__ ({ const tree __t = (fn); if (((enum tree_code) (__t)->common.code) != (OVERLOAD)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2444, __FUNCTION__, (OVERLOAD), 0); __t; }))->function) : (fn)); if ((__extension__ ({ const tree __t = (fndecl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2445, __FUNCTION__); __t; })->decl.vindex)) { tree *prev = &base_fndecls; while (*prev) if (same_signature_p (fndecl, (__extension__ ({ const tree __t = (*prev); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2453, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value))) *prev = ((*prev)->common.chain); else prev = &((*prev)->common.chain); } } while (base_fndecls) { cp_warning_at ("`%D' was hidden", (__extension__ ({ const tree __t = (base_fndecls); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2465, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value)); cp_warning_at (" by `%D'", fns); base_fndecls = ((base_fndecls)->common.chain); } } } static void finish_struct_anon (tree t) { tree field; for (field = (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2480, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.values); field; field = ((field)->common.chain)) { if (((field)->common.static_flag)) continue; if (((enum tree_code) (field)->common.code) != FIELD_DECL) continue; if ((__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2487, __FUNCTION__); __t; })->decl.name) == (tree) ((void *)0) && ((((((enum tree_code) (((field)->common.type))->common.code)) == RECORD_TYPE || (((enum tree_code) (((field)->common.type))->common.code)) == UNION_TYPE) && (((enum tree_code) (((field)->common.type))->common.code) == TEMPLATE_TYPE_PARM || ((enum tree_code) (((field)->common.type))->common.code) == TYPENAME_TYPE || ((enum tree_code) (((field)->common.type))->common.code) == TYPEOF_TYPE || ((enum tree_code) (((field)->common.type))->common.code) == BOUND_TEMPLATE_TEMPLATE_PARM || (__extension__ ({ const tree __t = (((field)->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2488, __FUNCTION__); __t; })->type.lang_flag_5))) && __extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (((field)->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2488, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 2488, __FUNCTION__); <->u.c; })->anon_aggr)) { tree elt = (__extension__ ({ const tree __t = (((field)->common.type)); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2490, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.values); for (; elt; elt = ((elt)->common.chain)) { if ((__extension__ ({ const tree __t = (elt); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2500, __FUNCTION__); __t; })->decl.artificial_flag) && (!(((enum tree_code) (elt)->common.code) == TYPE_DECL && (__extension__ ({ const tree __t = (elt); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2501, __FUNCTION__); __t; })->decl.lang_flag_2)) || (((((((enum tree_code) (((elt)->common.type))->common.code)) == RECORD_TYPE || (((enum tree_code) (((elt)->common.type))->common.code)) == UNION_TYPE) && (((enum tree_code) (((elt)->common.type))->common.code) == TEMPLATE_TYPE_PARM || ((enum tree_code) (((elt)->common.type))->common.code) == TYPENAME_TYPE || ((enum tree_code) (((elt)->common.type))->common.code) == TYPEOF_TYPE || ((enum tree_code) (((elt)->common.type))->common.code) == BOUND_TEMPLATE_TEMPLATE_PARM || (__extension__ ({ const tree __t = (((elt)->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2502, __FUNCTION__); __t; })->type.lang_flag_5))) || ((enum tree_code) (((elt)->common.type))->common.code) == ENUMERAL_TYPE) && (((const char *) __extension__ ({ const tree __t = ((((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (((elt)->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2502, __FUNCTION__); __t; })->type.main_variant)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2502, __FUNCTION__); __t; })->type.name)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2502, __FUNCTION__); __t; })->decl.name)))); if (((enum tree_code) (__t)->common.code) != (IDENTIFIER_NODE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2502, __FUNCTION__, (IDENTIFIER_NODE), 0); __t; })->identifier.id.str)[0] == '.' && ((const char *) __extension__ ({ const tree __t = ((((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (((elt)->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2502, __FUNCTION__); __t; })->type.main_variant)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2502, __FUNCTION__); __t; })->type.name)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2502, __FUNCTION__); __t; })->decl.name)))); if (((enum tree_code) (__t)->common.code) != (IDENTIFIER_NODE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2502, __FUNCTION__, (IDENTIFIER_NODE), 0); __t; })->identifier.id.str)[1] == '_')))) continue; if (((enum tree_code) (elt)->common.code) != FIELD_DECL) { cp_pedwarn_at ("`%#D' invalid; an anonymous union can only have non-static data members", elt); continue; } if (((elt)->common.private_flag)) cp_pedwarn_at ("private member `%#D' in anonymous union", elt); else if (((elt)->common.protected_flag)) cp_pedwarn_at ("protected member `%#D' in anonymous union", elt); ((elt)->common.private_flag) = ((field)->common.private_flag); ((elt)->common.protected_flag) = ((field)->common.protected_flag); } } } } void maybe_add_class_template_decl_list (tree type, tree t, int friend_p) { if ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (__extension__ ({ const tree __t = (type); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2540, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2540, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 2540, __FUNCTION__); <->u.c; })->template_info)) (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2541, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 2541, __FUNCTION__); <->u.c; })->decl_list) = tree_cons_stat (friend_p ? (tree) ((void *)0) : type,t,(__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2543, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 2543, __FUNCTION__); <->u.c; })->decl_list) ); } static void add_implicitly_declared_members (tree t, int cant_have_default_ctor, int cant_have_const_cctor, int cant_have_const_assignment) { tree default_fn; tree implicit_fns = (tree) ((void *)0); tree virtual_dtor = (tree) ((void *)0); tree *f; if (((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2567, __FUNCTION__); __t; })->type.lang_flag_4)) && !((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2567, __FUNCTION__); __t; })->type.lang_flag_2))) { default_fn = implicitly_declare_fn (sfk_destructor, t, 0); check_for_override (default_fn, t); if (default_fn == global_trees[TI_VOID_TYPE]) ((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2574, __FUNCTION__); __t; })->type.lang_flag_4)) = 0; else { ((default_fn)->common.chain) = implicit_fns; implicit_fns = default_fn; if ((__extension__ ({ const tree __t = (default_fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2580, __FUNCTION__); __t; })->decl.vindex)) virtual_dtor = default_fn; } } else ((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2586, __FUNCTION__); __t; })->type.lang_flag_4)) |= ((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2586, __FUNCTION__); __t; })->type.lang_flag_2)); if (! ((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2589, __FUNCTION__); __t; })->type.lang_flag_1)) && ! cant_have_default_ctor) { (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2591, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 2591, __FUNCTION__); <->u.c; })->h.has_default_ctor) = 1; (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2592, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 2592, __FUNCTION__); <->u.c; })->lazy_default_ctor) = 1; } if (! (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2596, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 2596, __FUNCTION__); <->u.c; })->h.has_init_ref) && ! (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2596, __FUNCTION__); __t; })->type.lang_flag_3)) { (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2598, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 2598, __FUNCTION__); <->u.c; })->h.has_init_ref) = 1; (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2599, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 2599, __FUNCTION__); <->u.c; })->has_const_init_ref) = !cant_have_const_cctor; (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2600, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 2600, __FUNCTION__); <->u.c; })->lazy_copy_ctor) = 1; ((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2601, __FUNCTION__); __t; })->type.lang_flag_1)) = 1; } if (!(__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2608, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 2608, __FUNCTION__); <->u.c; })->has_assign_ref) && !(__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2608, __FUNCTION__); __t; })->type.lang_flag_3)) { (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2610, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 2610, __FUNCTION__); <->u.c; })->has_assign_ref) = 1; (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2611, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 2611, __FUNCTION__); <->u.c; })->h.has_const_assign_ref) = !cant_have_const_assignment; (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2612, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 2612, __FUNCTION__); <->u.c; })->lazy_assignment_op) = 1; } for (f = &implicit_fns; *f; f = &((*f)->common.chain)) { add_method (t, *f); maybe_add_class_template_decl_list (scope_chain->class_type, *f, 0); } if ((flag_abi_version == 0 || flag_abi_version >= (2))) (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2626, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.maxval) = chainon ((__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2626, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.maxval), implicit_fns); else { if (warn_abi && virtual_dtor) warning ("vtable layout for class `%T' may not be ABI-compliant " "and may change in a future version of GCC due to implicit " "virtual destructor", t); *f = (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2634, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.maxval); (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2635, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.maxval) = implicit_fns; } } static int count_fields (tree fields) { tree x; int n_fields = 0; for (x = fields; x; x = ((x)->common.chain)) { if (((enum tree_code) (x)->common.code) == FIELD_DECL && ((((((enum tree_code) (((x)->common.type))->common.code)) == RECORD_TYPE || (((enum tree_code) (((x)->common.type))->common.code)) == UNION_TYPE) && (((enum tree_code) (((x)->common.type))->common.code) == TEMPLATE_TYPE_PARM || ((enum tree_code) (((x)->common.type))->common.code) == TYPENAME_TYPE || ((enum tree_code) (((x)->common.type))->common.code) == TYPEOF_TYPE || ((enum tree_code) (((x)->common.type))->common.code) == BOUND_TEMPLATE_TEMPLATE_PARM || (__extension__ ({ const tree __t = (((x)->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2649, __FUNCTION__); __t; })->type.lang_flag_5))) && __extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (((x)->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2649, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 2649, __FUNCTION__); <->u.c; })->anon_aggr)) n_fields += count_fields ((__extension__ ({ const tree __t = (((x)->common.type)); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2650, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.values)); else n_fields += 1; } return n_fields; } static int add_fields_to_record_type (tree fields, struct sorted_fields_type *field_vec, int idx) { tree x; for (x = fields; x; x = ((x)->common.chain)) { if (((enum tree_code) (x)->common.code) == FIELD_DECL && ((((((enum tree_code) (((x)->common.type))->common.code)) == RECORD_TYPE || (((enum tree_code) (((x)->common.type))->common.code)) == UNION_TYPE) && (((enum tree_code) (((x)->common.type))->common.code) == TEMPLATE_TYPE_PARM || ((enum tree_code) (((x)->common.type))->common.code) == TYPENAME_TYPE || ((enum tree_code) (((x)->common.type))->common.code) == TYPEOF_TYPE || ((enum tree_code) (((x)->common.type))->common.code) == BOUND_TEMPLATE_TEMPLATE_PARM || (__extension__ ({ const tree __t = (((x)->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2666, __FUNCTION__); __t; })->type.lang_flag_5))) && __extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (((x)->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2666, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 2666, __FUNCTION__); <->u.c; })->anon_aggr)) idx = add_fields_to_record_type ((__extension__ ({ const tree __t = (((x)->common.type)); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2667, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.values), field_vec, idx); else field_vec->elts[idx++] = x; } return idx; } static void check_bitfield_decl (tree field) { tree type = ((field)->common.type); tree w = (tree) ((void *)0); if ((__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2685, __FUNCTION__); __t; })->decl.initial) && ! (((enum tree_code) (((field)->common.type))->common.code) == INTEGER_TYPE || ((enum tree_code) (((field)->common.type))->common.code) == ENUMERAL_TYPE || ((enum tree_code) (((field)->common.type))->common.code) == BOOLEAN_TYPE || ((enum tree_code) (((field)->common.type))->common.code) == CHAR_TYPE)) { cp_error_at ("bit-field `%#D' with non-integral type", field); w = global_trees[TI_ERROR_MARK]; } if ((__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2693, __FUNCTION__); __t; })->decl.initial)) { w = (__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2695, __FUNCTION__); __t; })->decl.initial); while ((((enum tree_code) (w)->common.code) == NOP_EXPR || ((enum tree_code) (w)->common.code) == CONVERT_EXPR || ((enum tree_code) (w)->common.code) == NON_LVALUE_EXPR) && __extension__ (*({const tree __t = __extension__ ({ const tree __t = (w); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 2698, __FUNCTION__); __t; }); const int __i = (0); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 2698, __FUNCTION__); &__t->exp.operands[__i]; })) != global_trees[TI_ERROR_MARK] && ((__extension__ ({ const tree __t = (((w)->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2698, __FUNCTION__); __t; })->type.mode) == (__extension__ ({ const tree __t = (((__extension__ (*({const tree __t = __extension__ ({ const tree __t = (w); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 2698, __FUNCTION__); __t; }); const int __i = (0); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 2698, __FUNCTION__); &__t->exp.operands[__i]; })))->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2698, __FUNCTION__); __t; })->type.mode))) (w) = __extension__ (*({const tree __t = __extension__ ({ const tree __t = (w); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 2698, __FUNCTION__); __t; }); const int __i = (0); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 2698, __FUNCTION__); &__t->exp.operands[__i]; })); if (((enum tree_code) (w)->common.code) == CONST_DECL) w = (__extension__ ({ const tree __t = (w); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2702, __FUNCTION__); __t; })->decl.initial); else w = decl_constant_value (w); if (((enum tree_code) (w)->common.code) != INTEGER_CST) { cp_error_at ("bit-field `%D' width not an integer constant", field); w = global_trees[TI_ERROR_MARK]; } else if (tree_int_cst_sgn (w) < 0) { cp_error_at ("negative width in bit-field `%D'", field); w = global_trees[TI_ERROR_MARK]; } else if (integer_zerop (w) && (__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2717, __FUNCTION__); __t; })->decl.name) != 0) { cp_error_at ("zero width for bit-field `%D'", field); w = global_trees[TI_ERROR_MARK]; } else if (compare_tree_int (w, (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2722, __FUNCTION__); __t; })->type.precision)) > 0 && ((enum tree_code) (type)->common.code) != ENUMERAL_TYPE && ((enum tree_code) (type)->common.code) != BOOLEAN_TYPE) cp_warning_at ("width of `%D' exceeds its type", field); else if (((enum tree_code) (type)->common.code) == ENUMERAL_TYPE && (0 > compare_tree_int (w, min_precision ((__extension__ ({ const tree __t = (type); if (((enum tree_code) (__t)->common.code) != (INTEGER_TYPE) && ((enum tree_code) (__t)->common.code) != (ENUMERAL_TYPE) && ((enum tree_code) (__t)->common.code) != (BOOLEAN_TYPE) && ((enum tree_code) (__t)->common.code) != (CHAR_TYPE) && ((enum tree_code) (__t)->common.code) != (REAL_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2728, __FUNCTION__, (INTEGER_TYPE), (ENUMERAL_TYPE), (BOOLEAN_TYPE), (CHAR_TYPE), (REAL_TYPE), 0); __t; })->type.minval), (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2729, __FUNCTION__); __t; })->common.unsigned_flag))) || 0 > compare_tree_int (w, min_precision ((__extension__ ({ const tree __t = (type); if (((enum tree_code) (__t)->common.code) != (INTEGER_TYPE) && ((enum tree_code) (__t)->common.code) != (ENUMERAL_TYPE) && ((enum tree_code) (__t)->common.code) != (BOOLEAN_TYPE) && ((enum tree_code) (__t)->common.code) != (CHAR_TYPE) && ((enum tree_code) (__t)->common.code) != (REAL_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2732, __FUNCTION__, (INTEGER_TYPE), (ENUMERAL_TYPE), (BOOLEAN_TYPE), (CHAR_TYPE), (REAL_TYPE), 0); __t; })->type.maxval), (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2733, __FUNCTION__); __t; })->common.unsigned_flag))))) cp_warning_at ("`%D' is too small to hold all values of `%#T'", field, type); } (__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2740, __FUNCTION__); __t; })->decl.initial) = (tree) ((void *)0); if (w != global_trees[TI_ERROR_MARK]) { (__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2744, __FUNCTION__); __t; })->decl.size) = convert (sizetype_tab[(int) BITSIZETYPE], w); (__extension__ ({ const tree __t = (field); if (((enum tree_code) (__t)->common.code) != (FIELD_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2745, __FUNCTION__, (FIELD_DECL), 0); __t; })->decl.bit_field_flag) = 1; } else { (__extension__ ({ const tree __t = (field); if (((enum tree_code) (__t)->common.code) != (FIELD_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2750, __FUNCTION__, (FIELD_DECL), 0); __t; })->decl.bit_field_flag) = 0; ((__extension__ ({ const tree __t = (__extension__ ({ const tree __t = (field); if (((enum tree_code) (__t)->common.code) != (FIELD_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2751, __FUNCTION__, (FIELD_DECL), 0); __t; })); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2751, __FUNCTION__); __t; })->decl.lang_flag_4) = 0); } } static void check_field_decl (tree field, tree t, int* cant_have_const_ctor, int* cant_have_default_ctor, int* no_const_asn_ref, int* any_default_members) { tree type = strip_array_types (((field)->common.type)); if ((((enum tree_code) (type)->common.code) == UNION_TYPE && ((((((enum tree_code) (type)->common.code)) == RECORD_TYPE || (((enum tree_code) (type)->common.code)) == UNION_TYPE) && (((enum tree_code) (type)->common.code) == TEMPLATE_TYPE_PARM || ((enum tree_code) (type)->common.code) == TYPENAME_TYPE || ((enum tree_code) (type)->common.code) == TYPEOF_TYPE || ((enum tree_code) (type)->common.code) == BOUND_TEMPLATE_TEMPLATE_PARM || (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2771, __FUNCTION__); __t; })->type.lang_flag_5))) && __extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2771, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 2771, __FUNCTION__); <->u.c; })->anon_aggr))) ; else if (((((((enum tree_code) (type)->common.code)) == RECORD_TYPE || (((enum tree_code) (type)->common.code)) == UNION_TYPE) && (((enum tree_code) (type)->common.code) == TEMPLATE_TYPE_PARM || ((enum tree_code) (type)->common.code) == TYPENAME_TYPE || ((enum tree_code) (type)->common.code) == TYPEOF_TYPE || ((enum tree_code) (type)->common.code) == BOUND_TEMPLATE_TEMPLATE_PARM || (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2775, __FUNCTION__); __t; })->type.lang_flag_5))) && __extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2775, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 2775, __FUNCTION__); <->u.c; })->anon_aggr)) { tree fields; for (fields = (__extension__ ({ const tree __t = (type); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2779, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.values); fields; fields = ((fields)->common.chain)) if (((enum tree_code) (fields)->common.code) == FIELD_DECL && !((__extension__ ({ const tree __t = (__extension__ ({ const tree __t = (field); if (((enum tree_code) (__t)->common.code) != (FIELD_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2780, __FUNCTION__, (FIELD_DECL), 0); __t; })); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2780, __FUNCTION__); __t; })->decl.lang_flag_4) == 1)) check_field_decl (fields, t, cant_have_const_ctor, cant_have_default_ctor, no_const_asn_ref, any_default_members); } else if ((((((enum tree_code) (type)->common.code)) == RECORD_TYPE || (((enum tree_code) (type)->common.code)) == UNION_TYPE) && (((enum tree_code) (type)->common.code) == TEMPLATE_TYPE_PARM || ((enum tree_code) (type)->common.code) == TYPENAME_TYPE || ((enum tree_code) (type)->common.code) == TYPEOF_TYPE || ((enum tree_code) (type)->common.code) == BOUND_TEMPLATE_TEMPLATE_PARM || (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2787, __FUNCTION__); __t; })->type.lang_flag_5)))) { abstract_virtuals_error (field, type); if (((enum tree_code) (t)->common.code) == UNION_TYPE) { if ((__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2795, __FUNCTION__); __t; })->type.needs_constructing_flag)) cp_error_at ("member `%#D' with constructor not allowed in union", field); if (((__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2798, __FUNCTION__); __t; })->type.lang_flag_4))) cp_error_at ("member `%#D' with destructor not allowed in union", field); if ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2801, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 2801, __FUNCTION__); <->u.c; })->has_complex_assign_ref)) cp_error_at ("member `%#D' with copy assignment operator not allowed in union", field); } else { (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2807, __FUNCTION__); __t; })->type.needs_constructing_flag) |= (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2807, __FUNCTION__); __t; })->type.needs_constructing_flag); ((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2808, __FUNCTION__); __t; })->type.lang_flag_4)) |= ((__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2809, __FUNCTION__); __t; })->type.lang_flag_4)); (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2810, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 2810, __FUNCTION__); <->u.c; })->has_complex_assign_ref) |= (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2810, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 2810, __FUNCTION__); <->u.c; })->has_complex_assign_ref); (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2811, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 2811, __FUNCTION__); <->u.c; })->has_complex_init_ref) |= (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2811, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 2811, __FUNCTION__); <->u.c; })->has_complex_init_ref); } if (!(__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2814, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 2814, __FUNCTION__); <->u.c; })->has_const_init_ref)) *cant_have_const_ctor = 1; if (!(__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2817, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 2817, __FUNCTION__); <->u.c; })->h.has_const_assign_ref)) *no_const_asn_ref = 1; if (((__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2820, __FUNCTION__); __t; })->type.lang_flag_1)) && ! (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2821, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 2821, __FUNCTION__); <->u.c; })->h.has_default_ctor)) *cant_have_default_ctor = 1; } if ((__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2824, __FUNCTION__); __t; })->decl.initial) != (tree) ((void *)0)) { if (((enum tree_code) (t)->common.code) == UNION_TYPE && any_default_members != 0) error ("multiple fields in union `%T' initialized", t); *any_default_members = 1; } } static void check_field_decls (tree t, tree *access_decls, int *cant_have_default_ctor_p, int *cant_have_const_ctor_p, int *no_const_asn_ref_p) { tree *field; tree *next; unsigned char has_pointers; int any_default_members; *access_decls = (tree) ((void *)0); has_pointers = 0; any_default_members = 0; for (field = &(__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2882, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.values); *field; field = next) { tree x = *field; tree type = ((x)->common.type); next = &((x)->common.chain); if (((enum tree_code) (x)->common.code) == FIELD_DECL) { if ((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2891, __FUNCTION__); __t; })->type.packed_flag)) { if (!pod_type_p (((x)->common.type)) && !(__extension__ ({ const tree __t = (((x)->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2893, __FUNCTION__); __t; })->type.packed_flag)) cp_warning_at ("ignoring packed attribute on unpacked non-POD field `%#D'", x); else (__extension__ ({ const tree __t = (x); if (((enum tree_code) (__t)->common.code) != (FIELD_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2898, __FUNCTION__, (FIELD_DECL), 0); __t; })->decl.regdecl_flag) = 1; } if (((__extension__ ({ const tree __t = (__extension__ ({ const tree __t = (x); if (((enum tree_code) (__t)->common.code) != (FIELD_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 2901, __FUNCTION__, (FIELD_DECL), 0); __t; })); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2901, __FUNCTION__); __t; })->decl.lang_flag_4) == 1) && integer_zerop ((__extension__ ({ const tree __t = (x); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2901, __FUNCTION__); __t; })->decl.initial))) ; else { tree element_type; (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2910, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 2910, __FUNCTION__); <->u.c; })->empty_p) = 0; (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2912, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 2912, __FUNCTION__); <->u.c; })->nearly_empty_p) = 0; element_type = strip_array_types (type); if ((((((enum tree_code) (element_type)->common.code)) == RECORD_TYPE || (((enum tree_code) (element_type)->common.code)) == UNION_TYPE) && (((enum tree_code) (element_type)->common.code) == TEMPLATE_TYPE_PARM || ((enum tree_code) (element_type)->common.code) == TYPENAME_TYPE || ((enum tree_code) (element_type)->common.code) == TYPEOF_TYPE || ((enum tree_code) (element_type)->common.code) == BOUND_TEMPLATE_TEMPLATE_PARM || (__extension__ ({ const tree __t = (element_type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2916, __FUNCTION__); __t; })->type.lang_flag_5))) && (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (element_type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2917, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 2917, __FUNCTION__); <->u.c; })->contains_empty_class_p)) (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2918, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 2918, __FUNCTION__); <->u.c; })->contains_empty_class_p) = 1; } } if (((enum tree_code) (x)->common.code) == USING_DECL) { *field = ((x)->common.chain); *access_decls = tree_cons_stat ((tree) ((void *)0),x,*access_decls ); next = field; continue; } if (((enum tree_code) (x)->common.code) == TYPE_DECL || ((enum tree_code) (x)->common.code) == TEMPLATE_DECL) continue; (__extension__ ({ const tree __t = (x); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2942, __FUNCTION__); __t; })->decl.context) = t; (__extension__ ({ const tree __t = (x); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 2945, __FUNCTION__); __t; })->decl.nonlocal_flag) = 1; if (((enum tree_code) (t)->common.code) == UNION_TYPE) { if (((enum tree_code) (x)->common.code) == VAR_DECL) { cp_error_at ("`%D' may not be static because it is a member of a union", x); continue; } if (((enum tree_code) (type)->common.code) == REFERENCE_TYPE) { cp_error_at ("`%D' may not have reference type `%T' because it is a member of a union", x, type); continue; } } if (current_function_decl && ((x)->common.static_flag)) cp_error_at ("field `%D' in local class cannot be static", x); if (((enum tree_code) (type)->common.code) == FUNCTION_TYPE) { cp_error_at ("field `%D' invalidly declared function type", x); type = build_pointer_type (type); ((x)->common.type) = type; } else if (((enum tree_code) (type)->common.code) == METHOD_TYPE) { cp_error_at ("field `%D' invalidly declared method type", x); type = build_pointer_type (type); ((x)->common.type) = type; } if (type == global_trees[TI_ERROR_MARK]) continue; if (((enum tree_code) (x)->common.code) == CONST_DECL || ((enum tree_code) (x)->common.code) == VAR_DECL) continue; if (((x)->common.private_flag) || ((x)->common.protected_flag)) (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 2995, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 2995, __FUNCTION__); <->u.c; })->non_aggregate) = 1; if (((enum tree_code) (type)->common.code) == REFERENCE_TYPE) { (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3001, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3001, __FUNCTION__); <->u.c; })->non_pod_class) = 1; if ((__extension__ ({ const tree __t = (x); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3002, __FUNCTION__); __t; })->decl.initial) == (tree) ((void *)0)) (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3003, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3003, __FUNCTION__); <->u.c; })->h.ref_needs_init = (1)); *cant_have_default_ctor_p = 1; (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3010, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3010, __FUNCTION__); <->u.c; })->has_complex_assign_ref) = 1; if (! ((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3012, __FUNCTION__); __t; })->type.lang_flag_1)) && (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3012, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3012, __FUNCTION__); <->u.c; })->non_aggregate) && extra_warnings) cp_warning_at ("non-static reference `%#D' in class without a constructor", x); } type = strip_array_types (type); if ((((enum tree_code) (type)->common.code) == POINTER_TYPE) && !(((enum tree_code) (type)->common.code) == POINTER_TYPE && ((enum tree_code) (((type)->common.type))->common.code) == FUNCTION_TYPE) && !((((enum tree_code) (type)->common.code) == OFFSET_TYPE) || (((enum tree_code) (type)->common.code) == RECORD_TYPE && (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3024, __FUNCTION__); __t; })->type.lang_specific) && (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3024, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3024, __FUNCTION__); <->u.c; })->ptrmemfunc_flag)))) has_pointers = 1; if ((((((enum tree_code) (type)->common.code)) == RECORD_TYPE || (((enum tree_code) (type)->common.code)) == UNION_TYPE) && (((enum tree_code) (type)->common.code) == TEMPLATE_TYPE_PARM || ((enum tree_code) (type)->common.code) == TYPENAME_TYPE || ((enum tree_code) (type)->common.code) == TYPEOF_TYPE || ((enum tree_code) (type)->common.code) == BOUND_TEMPLATE_TEMPLATE_PARM || (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3027, __FUNCTION__); __t; })->type.lang_flag_5)))) { if (((__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3029, __FUNCTION__); __t; })->type.lang_specific) ? __extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3029, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3029, __FUNCTION__); <->u.c; })->h.ref_needs_init : 0)) (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3030, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3030, __FUNCTION__); <->u.c; })->h.ref_needs_init = (1)); if (((__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3031, __FUNCTION__); __t; })->type.lang_specific) ? __extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3031, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3031, __FUNCTION__); <->u.c; })->h.const_needs_init : 0)) (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3032, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3032, __FUNCTION__); <->u.c; })->h.const_needs_init = (1)); } if (((__extension__ ({ const tree __t = (x); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3035, __FUNCTION__); __t; })->decl.lang_flag_0)) || (cp_has_mutable_p (type))) (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3036, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3036, __FUNCTION__); <->u.c; })->has_mutable) = 1; if (! pod_type_p (type)) (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3041, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3041, __FUNCTION__); <->u.c; })->non_pod_class) = 1; if (! zero_init_p (type)) (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3044, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3044, __FUNCTION__); <->u.c; })->non_zero_init) = 1; if (((cp_type_quals (type) & 0x1) != 0)) { (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3049, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3049, __FUNCTION__); <->u.c; })->fields_readonly) = 1; if ((__extension__ ({ const tree __t = (x); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3050, __FUNCTION__); __t; })->decl.initial) == (tree) ((void *)0)) (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3051, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3051, __FUNCTION__); <->u.c; })->h.const_needs_init = (1)); *cant_have_default_ctor_p = 1; (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3058, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3058, __FUNCTION__); <->u.c; })->has_complex_assign_ref) = 1; if (! ((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3060, __FUNCTION__); __t; })->type.lang_flag_1)) && (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3060, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3060, __FUNCTION__); <->u.c; })->non_aggregate) && extra_warnings) cp_warning_at ("non-static const member `%#D' in class without a constructor", x); } else if ((((((enum tree_code) (type)->common.code)) == RECORD_TYPE || (((enum tree_code) (type)->common.code)) == UNION_TYPE) && (((enum tree_code) (type)->common.code) == TEMPLATE_TYPE_PARM || ((enum tree_code) (type)->common.code) == TYPENAME_TYPE || ((enum tree_code) (type)->common.code) == TYPEOF_TYPE || ((enum tree_code) (type)->common.code) == BOUND_TEMPLATE_TEMPLATE_PARM || (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3065, __FUNCTION__); __t; })->type.lang_flag_5)))) { (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3067, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3067, __FUNCTION__); <->u.c; })->fields_readonly) |= (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3067, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3067, __FUNCTION__); <->u.c; })->fields_readonly); (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3070, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3070, __FUNCTION__); <->u.c; })->h.const_needs_init = (((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3070, __FUNCTION__); __t; })->type.lang_specific) ? __extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3070, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3070, __FUNCTION__); <->u.c; })->h.const_needs_init : 0) | ((__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3070, __FUNCTION__); __t; })->type.lang_specific) ? __extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3070, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3070, __FUNCTION__); <->u.c; })->h.const_needs_init : 0))); } if (constructor_name_p ((__extension__ ({ const tree __t = (x); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3076, __FUNCTION__); __t; })->decl.name), t) && ((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3076, __FUNCTION__); __t; })->type.lang_flag_1))) cp_pedwarn_at ("field `%#D' with same name as class", x); if (((__extension__ ({ const tree __t = (__extension__ ({ const tree __t = (x); if (((enum tree_code) (__t)->common.code) != (FIELD_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3081, __FUNCTION__, (FIELD_DECL), 0); __t; })); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3081, __FUNCTION__); __t; })->decl.lang_flag_4) == 1)) check_bitfield_decl (x); else check_field_decl (x, t, cant_have_const_ctor_p, cant_have_default_ctor_p, no_const_asn_ref_p, &any_default_members); } if (warn_ecpp && has_pointers && ((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3107, __FUNCTION__); __t; })->type.lang_flag_1)) && ((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3108, __FUNCTION__); __t; })->type.lang_flag_2)) && !((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3109, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3109, __FUNCTION__); <->u.c; })->h.has_init_ref) && (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3109, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3109, __FUNCTION__); <->u.c; })->has_assign_ref))) { warning ("`%#T' has pointer data members", t); if (! (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3113, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3113, __FUNCTION__); <->u.c; })->h.has_init_ref)) { warning (" but does not override `%T(const %T&)'", t, t); if (! (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3116, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3116, __FUNCTION__); <->u.c; })->has_assign_ref)) warning (" or `operator=(const %T&)'", t); } else if (! (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3119, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3119, __FUNCTION__); <->u.c; })->has_assign_ref)) warning (" but does not override `operator=(const %T&)'", t); } finish_struct_anon (t); *access_decls = nreverse (*access_decls); } static int record_subobject_offset (tree type, tree offset, splay_tree offsets) { splay_tree_node n; if (!is_empty_class (type)) return 0; n = splay_tree_lookup (offsets, (splay_tree_key) offset); if (!n) n = splay_tree_insert (offsets, (splay_tree_key) offset, (splay_tree_value) (tree) ((void *)0)); n->value = ((splay_tree_value) tree_cons_stat ((tree) ((void *)0),type,(tree) n->value )); return 0; } static int check_subobject_offset (tree type, tree offset, splay_tree offsets) { splay_tree_node n; tree t; if (!is_empty_class (type)) return 0; n = splay_tree_lookup (offsets, (splay_tree_key) offset); if (!n) return 0; for (t = (tree) n->value; t; t = ((t)->common.chain)) if (comptypes (((__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3175, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value)), (type), 0)) return 1; return 0; } static int walk_subobject_offsets (tree type, subobject_offset_fn f, tree offset, splay_tree offsets, tree max_offset, int vbases_p) { int r = 0; tree type_binfo = (tree) ((void *)0); if (max_offset && (((__extension__ ({ const tree __t = (max_offset); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3205, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high) < ((__extension__ ({ const tree __t = (offset); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3205, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high) || (((__extension__ ({ const tree __t = (max_offset); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3205, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high) == ((__extension__ ({ const tree __t = (offset); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3205, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high) && ((__extension__ ({ const tree __t = (max_offset); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3205, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).low) < ((__extension__ ({ const tree __t = (offset); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3205, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).low)))) return 0; if (!(tree_code_type[(int) (((enum tree_code) (type)->common.code))] == 't')) { if ((flag_abi_version == 0 || flag_abi_version >= (2))) type_binfo = type; type = ((__extension__ ({ const tree __t = (type); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3212, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type); } if ((((((enum tree_code) (type)->common.code)) == RECORD_TYPE || (((enum tree_code) (type)->common.code)) == UNION_TYPE) && (((enum tree_code) (type)->common.code) == TEMPLATE_TYPE_PARM || ((enum tree_code) (type)->common.code) == TYPENAME_TYPE || ((enum tree_code) (type)->common.code) == TYPEOF_TYPE || ((enum tree_code) (type)->common.code) == BOUND_TEMPLATE_TEMPLATE_PARM || (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3215, __FUNCTION__); __t; })->type.lang_flag_5)))) { tree field; tree binfo; int i; if (!(__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3222, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3222, __FUNCTION__); <->u.c; })->contains_empty_class_p)) return 0; r = (*f) (type, offset, offsets); if (r) return r; if (!type_binfo) type_binfo = (__extension__ ({ const tree __t = (type); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3232, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo); for (i = 0; ((VEC_tree_iterate((&__extension__ ({ const tree __t = (type_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3233, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.base_binfos),(i),&((binfo))))); i++) { tree binfo_offset; if ((flag_abi_version == 0 || flag_abi_version >= (2)) && (__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3238, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag)) continue; if (!vbases_p && (__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3242, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag) && !((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3243, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_5)) continue; if (!(flag_abi_version == 0 || flag_abi_version >= (2))) binfo_offset = size_binop (PLUS_EXPR, offset, (__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3249, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.offset)); else { tree orig_binfo; orig_binfo = ((VEC_tree_index((&__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (type); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3256, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo)); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3256, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.base_binfos),(i) ,"../../gcc/gcc/cp/class.c",3256,__FUNCTION__))); binfo_offset = size_binop (PLUS_EXPR, offset, (__extension__ ({ const tree __t = (orig_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3259, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.offset)); } r = walk_subobject_offsets (binfo, f, binfo_offset, offsets, max_offset, ((flag_abi_version == 0 || flag_abi_version >= (2)) ? 0 : vbases_p)); if (r) return r; } if ((flag_abi_version == 0 || flag_abi_version >= (2)) && (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3273, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3273, __FUNCTION__); <->u.c; })->vbases)) { unsigned ix; VEC_tree *vbases; if (vbases_p) for (vbases = (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3284, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3284, __FUNCTION__); <->u.c; })->vbases), ix = 0; (VEC_tree_iterate(vbases,ix,&(binfo))); ix++) { r = walk_subobject_offsets (binfo, f, size_binop (PLUS_EXPR, offset, (__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3291, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.offset)), offsets, max_offset, 0); if (r) return r; } else { tree vbase = get_primary_binfo (type_binfo); if (vbase && (__extension__ ({ const tree __t = (vbase); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3305, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag) && ((__extension__ ({ const tree __t = (vbase); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3306, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_5) && (__extension__ ({ const tree __t = (vbase); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3307, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.inheritance) == type_binfo) { r = (walk_subobject_offsets (vbase, f, offset, offsets, max_offset, 0)); if (r) return r; } } } for (field = (__extension__ ({ const tree __t = (type); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3319, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.values); field; field = ((field)->common.chain)) if (((enum tree_code) (field)->common.code) == FIELD_DECL && !(__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3320, __FUNCTION__); __t; })->decl.artificial_flag)) { tree field_offset; if ((flag_abi_version == 0 || flag_abi_version >= (2))) field_offset = byte_position (field); else field_offset = (__extension__ ({ const tree __t = (field); if (((enum tree_code) (__t)->common.code) != (FIELD_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3328, __FUNCTION__, (FIELD_DECL), 0); __t; })->decl.arguments); r = walk_subobject_offsets (((field)->common.type), f, size_binop (PLUS_EXPR, offset, field_offset), offsets, max_offset, 1); if (r) return r; } } else if (((enum tree_code) (type)->common.code) == ARRAY_TYPE) { tree element_type = strip_array_types (type); tree domain = (__extension__ ({ const tree __t = (type); if (((enum tree_code) (__t)->common.code) != (ARRAY_TYPE) && ((enum tree_code) (__t)->common.code) != (SET_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3345, __FUNCTION__, (ARRAY_TYPE), (SET_TYPE), 0); __t; })->type.values); tree index; if (!(((((enum tree_code) (element_type)->common.code)) == RECORD_TYPE || (((enum tree_code) (element_type)->common.code)) == UNION_TYPE) && (((enum tree_code) (element_type)->common.code) == TEMPLATE_TYPE_PARM || ((enum tree_code) (element_type)->common.code) == TYPENAME_TYPE || ((enum tree_code) (element_type)->common.code) == TYPEOF_TYPE || ((enum tree_code) (element_type)->common.code) == BOUND_TEMPLATE_TEMPLATE_PARM || (__extension__ ({ const tree __t = (element_type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3349, __FUNCTION__); __t; })->type.lang_flag_5))) || !(__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (element_type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3350, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3350, __FUNCTION__); <->u.c; })->contains_empty_class_p)) return 0; for (index = global_trees[TI_SIZE_ZERO]; ((flag_abi_version == 0 || flag_abi_version >= (2)) ? !(((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (domain); if (((enum tree_code) (__t)->common.code) != (INTEGER_TYPE) && ((enum tree_code) (__t)->common.code) != (ENUMERAL_TYPE) && ((enum tree_code) (__t)->common.code) != (BOOLEAN_TYPE) && ((enum tree_code) (__t)->common.code) != (CHAR_TYPE) && ((enum tree_code) (__t)->common.code) != (REAL_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3357, __FUNCTION__, (INTEGER_TYPE), (ENUMERAL_TYPE), (BOOLEAN_TYPE), (CHAR_TYPE), (REAL_TYPE), 0); __t; })->type.maxval)); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3357, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high) < ((__extension__ ({ const tree __t = (index); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3357, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high) || (((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (domain); if (((enum tree_code) (__t)->common.code) != (INTEGER_TYPE) && ((enum tree_code) (__t)->common.code) != (ENUMERAL_TYPE) && ((enum tree_code) (__t)->common.code) != (BOOLEAN_TYPE) && ((enum tree_code) (__t)->common.code) != (CHAR_TYPE) && ((enum tree_code) (__t)->common.code) != (REAL_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3357, __FUNCTION__, (INTEGER_TYPE), (ENUMERAL_TYPE), (BOOLEAN_TYPE), (CHAR_TYPE), (REAL_TYPE), 0); __t; })->type.maxval)); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3357, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high) == ((__extension__ ({ const tree __t = (index); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3357, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high) && ((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (domain); if (((enum tree_code) (__t)->common.code) != (INTEGER_TYPE) && ((enum tree_code) (__t)->common.code) != (ENUMERAL_TYPE) && ((enum tree_code) (__t)->common.code) != (BOOLEAN_TYPE) && ((enum tree_code) (__t)->common.code) != (CHAR_TYPE) && ((enum tree_code) (__t)->common.code) != (REAL_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3357, __FUNCTION__, (INTEGER_TYPE), (ENUMERAL_TYPE), (BOOLEAN_TYPE), (CHAR_TYPE), (REAL_TYPE), 0); __t; })->type.maxval)); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3357, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).low) < ((__extension__ ({ const tree __t = (index); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3357, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).low))) : (((__extension__ ({ const tree __t = (index); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3358, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high) < ((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (domain); if (((enum tree_code) (__t)->common.code) != (INTEGER_TYPE) && ((enum tree_code) (__t)->common.code) != (ENUMERAL_TYPE) && ((enum tree_code) (__t)->common.code) != (BOOLEAN_TYPE) && ((enum tree_code) (__t)->common.code) != (CHAR_TYPE) && ((enum tree_code) (__t)->common.code) != (REAL_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3358, __FUNCTION__, (INTEGER_TYPE), (ENUMERAL_TYPE), (BOOLEAN_TYPE), (CHAR_TYPE), (REAL_TYPE), 0); __t; })->type.maxval)); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3358, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high) || (((__extension__ ({ const tree __t = (index); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3358, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high) == ((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (domain); if (((enum tree_code) (__t)->common.code) != (INTEGER_TYPE) && ((enum tree_code) (__t)->common.code) != (ENUMERAL_TYPE) && ((enum tree_code) (__t)->common.code) != (BOOLEAN_TYPE) && ((enum tree_code) (__t)->common.code) != (CHAR_TYPE) && ((enum tree_code) (__t)->common.code) != (REAL_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3358, __FUNCTION__, (INTEGER_TYPE), (ENUMERAL_TYPE), (BOOLEAN_TYPE), (CHAR_TYPE), (REAL_TYPE), 0); __t; })->type.maxval)); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3358, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high) && ((__extension__ ({ const tree __t = (index); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3358, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).low) < ((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (domain); if (((enum tree_code) (__t)->common.code) != (INTEGER_TYPE) && ((enum tree_code) (__t)->common.code) != (ENUMERAL_TYPE) && ((enum tree_code) (__t)->common.code) != (BOOLEAN_TYPE) && ((enum tree_code) (__t)->common.code) != (CHAR_TYPE) && ((enum tree_code) (__t)->common.code) != (REAL_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3358, __FUNCTION__, (INTEGER_TYPE), (ENUMERAL_TYPE), (BOOLEAN_TYPE), (CHAR_TYPE), (REAL_TYPE), 0); __t; })->type.maxval)); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3358, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).low)))); index = size_binop (PLUS_EXPR, index, global_trees[TI_SIZE_ONE])) { r = walk_subobject_offsets (((type)->common.type), f, offset, offsets, max_offset, 1); if (r) return r; offset = size_binop (PLUS_EXPR, offset, (__extension__ ({ const tree __t = (((type)->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3370, __FUNCTION__); __t; })->type.size_unit)); if (max_offset && (((__extension__ ({ const tree __t = (max_offset); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3374, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high) < ((__extension__ ({ const tree __t = (offset); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3374, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high) || (((__extension__ ({ const tree __t = (max_offset); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3374, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high) == ((__extension__ ({ const tree __t = (offset); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3374, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high) && ((__extension__ ({ const tree __t = (max_offset); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3374, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).low) < ((__extension__ ({ const tree __t = (offset); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3374, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).low)))) break; } } return 0; } static void record_subobject_offsets (tree type, tree offset, splay_tree offsets, int vbases_p) { walk_subobject_offsets (type, record_subobject_offset, offset, offsets, (tree) ((void *)0), vbases_p); } static int layout_conflict_p (tree type, tree offset, splay_tree offsets, int vbases_p) { splay_tree_node max_node; max_node = splay_tree_max (offsets); if (!max_node) return 0; return walk_subobject_offsets (type, check_subobject_offset, offset, offsets, (tree) (max_node->key), vbases_p); } static void layout_nonempty_base_or_field (record_layout_info rli, tree decl, tree binfo, splay_tree offsets) { tree offset = (tree) ((void *)0); unsigned char field_p; tree type; if (binfo) { type = ((binfo)->common.type); field_p = 0; } else { type = ((decl)->common.type); field_p = 1; } while (1) { struct record_layout_info_s old_rli = *rli; place_field (rli, decl); offset = byte_position (decl); if (((enum tree_code) (rli->t)->common.code) == UNION_TYPE) break; if (!(flag_abi_version == 0 || flag_abi_version >= (2)) && binfo && (__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3484, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag)) break; if (layout_conflict_p (field_p ? type : binfo, offset, offsets, field_p)) { *rli = old_rli; rli->bitpos = size_binop (PLUS_EXPR, rli->bitpos, size_int_kind (binfo ? (__extension__ ({ const tree __t = ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3499, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3499, __FUNCTION__); <->u.c; })->as_base)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3499, __FUNCTION__); __t; })->type.align) : (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3499, __FUNCTION__); __t; })->type.align), BITSIZETYPE)); normalize_rli (rli); } else break; } if (binfo && (((((enum tree_code) (((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3509, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type))->common.code)) == RECORD_TYPE || (((enum tree_code) (((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3509, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type))->common.code)) == UNION_TYPE) && (((enum tree_code) (((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3509, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type))->common.code) == TEMPLATE_TYPE_PARM || ((enum tree_code) (((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3509, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type))->common.code) == TYPENAME_TYPE || ((enum tree_code) (((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3509, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type))->common.code) == TYPEOF_TYPE || ((enum tree_code) (((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3509, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type))->common.code) == BOUND_TEMPLATE_TEMPLATE_PARM || (__extension__ ({ const tree __t = (((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3509, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3509, __FUNCTION__); __t; })->type.lang_flag_5)))) propagate_binfo_offsets (binfo, size_diffop (convert (sizetype_tab[(int) SSIZETYPE], offset), convert (sizetype_tab[(int) SSIZETYPE], (__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3517, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.offset)))); } static int empty_base_at_nonzero_offset_p (tree type, tree offset, splay_tree offsets __attribute__ ((__unused__))) { return is_empty_class (type) && !integer_zerop (offset); } static unsigned char layout_empty_base (tree binfo, tree eoc, splay_tree offsets) { tree alignment; tree basetype = ((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3540, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type); unsigned char atend = 0; ((void)(!(is_empty_class (basetype)) ? fancy_abort ("../../gcc/gcc/cp/class.c", 3544, __FUNCTION__), 0 : 0)); alignment = size_int_kind (((__extension__ ({ const tree __t = ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (basetype); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3545, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3545, __FUNCTION__); <->u.c; })->as_base)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3545, __FUNCTION__); __t; })->type.align) / 8), SSIZETYPE); if (!integer_zerop ((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3547, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.offset))) { if ((flag_abi_version == 0 || flag_abi_version >= (2))) propagate_binfo_offsets (binfo, size_diffop (global_trees[TI_SIZE_ZERO], (__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3551, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.offset))); else if (warn_abi) warning ("offset of empty base `%T' may not be ABI-compliant and may" "change in a future version of GCC", ((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3555, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)); } if (layout_conflict_p (binfo, (__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3561, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.offset), offsets, 0)) { atend = 1; propagate_binfo_offsets (binfo, convert (sizetype_tab[(int) SSIZETYPE], eoc)); while (1) { if (!layout_conflict_p (binfo, (__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3572, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.offset), offsets, 0)) break; propagate_binfo_offsets (binfo, alignment); } } return atend; } static tree * build_base_field (record_layout_info rli, tree binfo, splay_tree offsets, tree *next_field) { tree t = rli->t; tree basetype = ((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3599, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type); if (!((__extension__ ({ const tree __t = (basetype); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3601, __FUNCTION__); __t; })->type.size) != (tree) ((void *)0))) return next_field; if (!is_empty_class (basetype)) { tree decl; (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3613, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3613, __FUNCTION__); <->u.c; })->empty_p) = 0; decl = build_decl_stat (FIELD_DECL,(tree) ((void *)0),(__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (basetype); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3616, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3616, __FUNCTION__); <->u.c; })->as_base) ); (__extension__ ({ const tree __t = (decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3617, __FUNCTION__); __t; })->decl.artificial_flag) = 1; (__extension__ ({ const tree __t = (decl); if (((enum tree_code) (__t)->common.code) != (FIELD_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3618, __FUNCTION__, (FIELD_DECL), 0); __t; })->decl.context) = t; (__extension__ ({ const tree __t = (decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3619, __FUNCTION__); __t; })->decl.size) = (__extension__ ({ const tree __t = ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (basetype); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3619, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3619, __FUNCTION__); <->u.c; })->as_base)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3619, __FUNCTION__); __t; })->type.size); (__extension__ ({ const tree __t = (decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3620, __FUNCTION__); __t; })->decl.size_unit) = (__extension__ ({ const tree __t = ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (basetype); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3620, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3620, __FUNCTION__); <->u.c; })->as_base)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3620, __FUNCTION__); __t; })->type.size_unit); (__extension__ ({ const tree __t = (decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3621, __FUNCTION__); __t; })->decl.u1.a.align) = (__extension__ ({ const tree __t = ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (basetype); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3621, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3621, __FUNCTION__); <->u.c; })->as_base)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3621, __FUNCTION__); __t; })->type.align); (__extension__ ({ const tree __t = (decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3622, __FUNCTION__); __t; })->decl.user_align) = (__extension__ ({ const tree __t = ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (basetype); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3622, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3622, __FUNCTION__); <->u.c; })->as_base)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3622, __FUNCTION__); __t; })->type.user_align); (__extension__ ({ const tree __t = (decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3623, __FUNCTION__); __t; })->decl.ignored_flag) = 1; (__extension__ ({ const tree __t = (__extension__ ({ const tree __t = (decl); if (((enum tree_code) (__t)->common.code) != (FIELD_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3624, __FUNCTION__, (FIELD_DECL), 0); __t; })); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3624, __FUNCTION__); __t; })->decl.lang_flag_6) = 1; layout_nonempty_base_or_field (rli, decl, binfo, offsets); ((decl)->common.chain) = *next_field; *next_field = decl; next_field = &((decl)->common.chain); } else { tree eoc; unsigned char atend; eoc = round_up (rli_size_unit_so_far (rli), ((__extension__ ({ const tree __t = ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (basetype); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3643, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3643, __FUNCTION__); <->u.c; })->as_base)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3643, __FUNCTION__); __t; })->type.align) / 8)); atend = layout_empty_base (binfo, eoc, offsets); if (!(__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3647, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag) && (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3647, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3647, __FUNCTION__); <->u.c; })->nearly_empty_p)) { if (atend) (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3650, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3650, __FUNCTION__); <->u.c; })->nearly_empty_p) = 0; else if (walk_subobject_offsets (basetype, empty_base_at_nonzero_offset_p, global_trees[TI_SIZE_ZERO], ((void *)0), (tree) ((void *)0), 1)) { if ((flag_abi_version == 0 || flag_abi_version >= (2))) (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3662, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3662, __FUNCTION__); <->u.c; })->nearly_empty_p) = 0; else if (warn_abi) warning ("class `%T' will be considered nearly empty in a " "future version of GCC", t); } } } record_subobject_offsets (binfo, (__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3683, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.offset), offsets, 0); return next_field; } static void build_base_fields (record_layout_info rli, splay_tree offsets, tree *next_field) { tree t = rli->t; int n_baseclasses = ((VEC_tree_length((&__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3703, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo)); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3703, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.base_binfos)))); int i; if (((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3707, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3707, __FUNCTION__); <->u.c; })->primary_base) != (tree) ((void *)0))) next_field = build_base_field (rli, (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3708, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3708, __FUNCTION__); <->u.c; })->primary_base), offsets, next_field); for (i = 0; i < n_baseclasses; ++i) { tree base_binfo; base_binfo = ((VEC_tree_index((&__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3716, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo)); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3716, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.base_binfos),(i) ,"../../gcc/gcc/cp/class.c",3716,__FUNCTION__))); if (base_binfo == (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3720, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3720, __FUNCTION__); <->u.c; })->primary_base)) continue; if ((__extension__ ({ const tree __t = (base_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3725, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag)) continue; next_field = build_base_field (rli, base_binfo, offsets, next_field); } } static void check_methods (tree t) { tree x; for (x = (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3742, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.maxval); x; x = ((x)->common.chain)) { check_for_override (x, t); if (((__extension__ ({ const tree __t = (x); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3745, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.pure_virtual) && ! (__extension__ ({ const tree __t = (x); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3745, __FUNCTION__); __t; })->decl.vindex)) cp_error_at ("initializer specified for non-virtual method `%D'", x); if ((__extension__ ({ const tree __t = (x); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3749, __FUNCTION__); __t; })->decl.vindex)) { (((t)->common.lang_flag_2)) = 1; if (((__extension__ ({ const tree __t = (x); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3752, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.pure_virtual)) (VEC_tree_safe_push(&((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3753, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 3753, __FUNCTION__); <->u.c; })->pure_virtuals)),x ,"../../gcc/gcc/cp/class.c",3753,__FUNCTION__ )); } } } static tree build_clone (tree fn, tree name) { tree parms; tree clone; clone = copy_decl (fn); ((__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3771, __FUNCTION__); __t; })->decl.lang_specific)->u.f.cloned_function) = fn; (__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3772, __FUNCTION__); __t; })->decl.abstract_origin) = fn; (__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3774, __FUNCTION__); __t; })->decl.name) = name; (__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3775, __FUNCTION__); __t; })->decl.assembler_name = ((tree) ((void *)0))); ((__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3777, __FUNCTION__); __t; })->decl.lang_specific)->u.f.u.pending_inline_info) = ((void *)0); ((__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3778, __FUNCTION__); __t; })->decl.lang_specific)->u.f.pending_inline_p) = 0; ((__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3780, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.deferred) = 0; if (name == cp_global_trees[CPTI_BASE_DTOR_IDENTIFIER]) { (__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3785, __FUNCTION__); __t; })->decl.virtual_flag) = 0; if (((enum tree_code) (clone)->common.code) != TEMPLATE_DECL) (__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3787, __FUNCTION__); __t; })->decl.vindex) = (tree) ((void *)0); } if (((__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3792, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.has_in_charge_parm_p)) { tree basetype; tree parmtypes; tree exceptions; exceptions = (__extension__ ({ const tree __t = (((clone)->common.type)); if (((enum tree_code) (__t)->common.code) == (RECORD_TYPE) || ((enum tree_code) (__t)->common.code) == (UNION_TYPE) || ((enum tree_code) (__t)->common.code) == (QUAL_UNION_TYPE)) tree_not_check_failed (__t, "../../gcc/gcc/cp/class.c", 3798, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo); basetype = (__extension__ ({ const tree __t = (((clone)->common.type)); if (((enum tree_code) (__t)->common.code) != (FUNCTION_TYPE) && ((enum tree_code) (__t)->common.code) != (METHOD_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3799, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE), 0); __t; })->type.maxval); parmtypes = (__extension__ ({ const tree __t = (((clone)->common.type)); if (((enum tree_code) (__t)->common.code) != (FUNCTION_TYPE) && ((enum tree_code) (__t)->common.code) != (METHOD_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3800, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE), 0); __t; })->type.values); parmtypes = ((parmtypes)->common.chain); parmtypes = ((parmtypes)->common.chain); if (((__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3806, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.has_vtt_parm_p) && ! (((((__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3807, __FUNCTION__); __t; })->decl.context))->common.lang_flag_3)) && ((((__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3807, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.constructor_attr) && (__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3807, __FUNCTION__); __t; })->decl.name) == cp_global_trees[CPTI_BASE_CTOR_IDENTIFIER]) || (((__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3807, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.destructor_attr) && (__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3807, __FUNCTION__); __t; })->decl.name) == cp_global_trees[CPTI_BASE_DTOR_IDENTIFIER])))) parmtypes = ((parmtypes)->common.chain); ((clone)->common.type) = build_method_type_directly (basetype, ((((clone)->common.type))->common.type), parmtypes); if (exceptions) ((clone)->common.type) = build_exception_variant (((clone)->common.type), exceptions); ((clone)->common.type) = cp_build_type_attribute_variant (((clone)->common.type), (__extension__ ({ const tree __t = (((fn)->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 3820, __FUNCTION__); __t; })->type.attributes)); } if (((enum tree_code) (clone)->common.code) != TEMPLATE_DECL) { (__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3827, __FUNCTION__); __t; })->decl.arguments) = copy_list ((__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3827, __FUNCTION__); __t; })->decl.arguments)); if (((__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3829, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.has_in_charge_parm_p)) { (((__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3831, __FUNCTION__); __t; })->decl.arguments))->common.chain) = (((((__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3832, __FUNCTION__); __t; })->decl.arguments))->common.chain))->common.chain); ((__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3833, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.has_in_charge_parm_p) = 0; } if (((__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3836, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.has_vtt_parm_p)) { if ((((((__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3838, __FUNCTION__); __t; })->decl.context))->common.lang_flag_3)) && ((((__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3838, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.constructor_attr) && (__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3838, __FUNCTION__); __t; })->decl.name) == cp_global_trees[CPTI_BASE_CTOR_IDENTIFIER]) || (((__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3838, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.destructor_attr) && (__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3838, __FUNCTION__); __t; })->decl.name) == cp_global_trees[CPTI_BASE_DTOR_IDENTIFIER])))) ((__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3839, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.has_vtt_parm_p) = 1; else { (((__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3842, __FUNCTION__); __t; })->decl.arguments))->common.chain) = (((((__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3843, __FUNCTION__); __t; })->decl.arguments))->common.chain))->common.chain); ((__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3844, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.has_vtt_parm_p) = 0; } } for (parms = (__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3848, __FUNCTION__); __t; })->decl.arguments); parms; parms = ((parms)->common.chain)) { (__extension__ ({ const tree __t = (parms); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3850, __FUNCTION__); __t; })->decl.context) = clone; cxx_dup_lang_specific_decl (parms); } } set_decl_rtl (clone, (rtx) 0); rest_of_decl_compilation (clone, 1, at_eof); ((clone)->common.chain) = ((fn)->common.chain); ((fn)->common.chain) = clone; if (((enum tree_code) (clone)->common.code) == TEMPLATE_DECL) { tree result; (__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3868, __FUNCTION__); __t; })->decl.result) = build_clone ((__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3869, __FUNCTION__); __t; })->decl.result), name); result = (__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3870, __FUNCTION__); __t; })->decl.result); ((__extension__ ({ const tree __t = (__extension__ ({ const tree __t = (result); if (((enum tree_code) (__t)->common.code) != (VAR_DECL) && ((enum tree_code) (__t)->common.code) != (FUNCTION_DECL) && ((enum tree_code) (__t)->common.code) != (TYPE_DECL) && ((enum tree_code) (__t)->common.code) != (TEMPLATE_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3871, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL), (TYPE_DECL), (TEMPLATE_DECL), 0); __t; })); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3871, __FUNCTION__); __t; })->decl.lang_specific) ->decl_flags.u.template_info) = copy_node_stat (((__extension__ ({ const tree __t = (__extension__ ({ const tree __t = (result); if (((enum tree_code) (__t)->common.code) != (VAR_DECL) && ((enum tree_code) (__t)->common.code) != (FUNCTION_DECL) && ((enum tree_code) (__t)->common.code) != (TYPE_DECL) && ((enum tree_code) (__t)->common.code) != (TEMPLATE_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3871, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL), (TYPE_DECL), (TEMPLATE_DECL), 0); __t; })); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3871, __FUNCTION__); __t; })->decl.lang_specific) ->decl_flags.u.template_info) ); ((__extension__ ({ const tree __t = (((__extension__ ({ const tree __t = (__extension__ ({ const tree __t = (result); if (((enum tree_code) (__t)->common.code) != (VAR_DECL) && ((enum tree_code) (__t)->common.code) != (FUNCTION_DECL) && ((enum tree_code) (__t)->common.code) != (TYPE_DECL) && ((enum tree_code) (__t)->common.code) != (TEMPLATE_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3872, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL), (TYPE_DECL), (TEMPLATE_DECL), 0); __t; })); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3872, __FUNCTION__); __t; })->decl.lang_specific) ->decl_flags.u.template_info)); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3872, __FUNCTION__, (TREE_LIST), 0); __t; })->list.purpose)) = clone; } return clone; } void clone_function_decl (tree fn, int update_method_vec_p) { tree clone; if (((fn)->common.chain) && ((__extension__ ({ const tree __t = (((fn)->common.chain)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3889, __FUNCTION__); __t; })->decl.lang_specific)->u.f.cloned_function)) return; if ((((__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3892, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.constructor_attr) && !((((enum tree_code) (fn)->common.code) == FUNCTION_DECL || ((enum tree_code) (fn)->common.code) == TEMPLATE_DECL) && (__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3892, __FUNCTION__); __t; })->decl.lang_specific) && ((__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3892, __FUNCTION__); __t; })->decl.lang_specific)->u.f.cloned_function) != (tree) ((void *)0)))) { clone = build_clone (fn, cp_global_trees[CPTI_COMPLETE_CTOR_IDENTIFIER]); if (update_method_vec_p) add_method ((__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3898, __FUNCTION__); __t; })->decl.context), clone); clone = build_clone (fn, cp_global_trees[CPTI_BASE_CTOR_IDENTIFIER]); if (update_method_vec_p) add_method ((__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3901, __FUNCTION__); __t; })->decl.context), clone); } else { ((void)(!((((__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3905, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.destructor_attr) && !((((enum tree_code) (fn)->common.code) == FUNCTION_DECL || ((enum tree_code) (fn)->common.code) == TEMPLATE_DECL) && (__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3905, __FUNCTION__); __t; })->decl.lang_specific) && ((__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3905, __FUNCTION__); __t; })->decl.lang_specific)->u.f.cloned_function) != (tree) ((void *)0)))) ? fancy_abort ("../../gcc/gcc/cp/class.c", 3905, __FUNCTION__), 0 : 0)); if ((__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3916, __FUNCTION__); __t; })->decl.virtual_flag)) { clone = build_clone (fn, cp_global_trees[CPTI_DELETING_DTOR_IDENTIFIER]); if (update_method_vec_p) add_method ((__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3920, __FUNCTION__); __t; })->decl.context), clone); } clone = build_clone (fn, cp_global_trees[CPTI_COMPLETE_DTOR_IDENTIFIER]); if (update_method_vec_p) add_method ((__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3924, __FUNCTION__); __t; })->decl.context), clone); clone = build_clone (fn, cp_global_trees[CPTI_BASE_DTOR_IDENTIFIER]); if (update_method_vec_p) add_method ((__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3927, __FUNCTION__); __t; })->decl.context), clone); } (__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3931, __FUNCTION__); __t; })->decl.abstract_flag) = 1; } void adjust_clone_args (tree decl) { tree clone; for (clone = ((decl)->common.chain); clone && ((__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3946, __FUNCTION__); __t; })->decl.lang_specific)->u.f.cloned_function); clone = ((clone)->common.chain)) { tree orig_clone_parms = (__extension__ ({ const tree __t = (((clone)->common.type)); if (((enum tree_code) (__t)->common.code) != (FUNCTION_TYPE) && ((enum tree_code) (__t)->common.code) != (METHOD_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3949, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE), 0); __t; })->type.values); tree orig_decl_parms = (__extension__ ({ const tree __t = (((decl)->common.type)); if (((enum tree_code) (__t)->common.code) != (FUNCTION_TYPE) && ((enum tree_code) (__t)->common.code) != (METHOD_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3950, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE), 0); __t; })->type.values); tree decl_parms, clone_parms; clone_parms = orig_clone_parms; orig_clone_parms = ((orig_clone_parms)->common.chain); orig_decl_parms = ((orig_decl_parms)->common.chain); if (((__extension__ ({ const tree __t = (decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3959, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.has_in_charge_parm_p)) orig_decl_parms = ((orig_decl_parms)->common.chain); if (((__extension__ ({ const tree __t = (decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3961, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.has_vtt_parm_p)) orig_decl_parms = ((orig_decl_parms)->common.chain); clone_parms = orig_clone_parms; if (((__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3965, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.has_vtt_parm_p)) clone_parms = ((clone_parms)->common.chain); for (decl_parms = orig_decl_parms; decl_parms; decl_parms = ((decl_parms)->common.chain), clone_parms = ((clone_parms)->common.chain)) { ((void)(!(comptypes ((((decl_parms)->common.type)), (((clone_parms)->common.type)), 0)) ? fancy_abort ("../../gcc/gcc/cp/class.c", 3973, __FUNCTION__), 0 : 0)); if ((__extension__ ({ const tree __t = (decl_parms); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3975, __FUNCTION__, (TREE_LIST), 0); __t; })->list.purpose) && !(__extension__ ({ const tree __t = (clone_parms); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3975, __FUNCTION__, (TREE_LIST), 0); __t; })->list.purpose)) { tree exceptions = (__extension__ ({ const tree __t = (((clone)->common.type)); if (((enum tree_code) (__t)->common.code) == (RECORD_TYPE) || ((enum tree_code) (__t)->common.code) == (UNION_TYPE) || ((enum tree_code) (__t)->common.code) == (QUAL_UNION_TYPE)) tree_not_check_failed (__t, "../../gcc/gcc/cp/class.c", 3979, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo); tree basetype = (__extension__ ({ const tree __t = (((clone)->common.type)); if (((enum tree_code) (__t)->common.code) != (FUNCTION_TYPE) && ((enum tree_code) (__t)->common.code) != (METHOD_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3980, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE), 0); __t; })->type.maxval); tree type; clone_parms = orig_decl_parms; if (((__extension__ ({ const tree __t = (clone); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 3985, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.has_vtt_parm_p)) { clone_parms = tree_cons_stat ((__extension__ ({ const tree __t = (orig_clone_parms); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3989, __FUNCTION__, (TREE_LIST), 0); __t; })->list.purpose),(__extension__ ({ const tree __t = (orig_clone_parms); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 3989, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value),clone_parms ); ((clone_parms)->common.type) = ((orig_clone_parms)->common.type); } type = build_method_type_directly (basetype, ((((clone)->common.type))->common.type), clone_parms); if (exceptions) type = build_exception_variant (type, exceptions); ((clone)->common.type) = type; clone_parms = (tree) ((void *)0); break; } } ((void)(!(!clone_parms) ? fancy_abort ("../../gcc/gcc/cp/class.c", 4003, __FUNCTION__), 0 : 0)); } } static void clone_constructors_and_destructors (tree t) { tree fns; if (!(__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4017, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4017, __FUNCTION__); <->u.c; })->methods)) return; for (fns = ((VEC_tree_index((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4020, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4020, __FUNCTION__); <->u.c; })->methods),0 ,"../../gcc/gcc/cp/class.c",4020,__FUNCTION__))); fns; fns = ((((enum tree_code) (fns)->common.code) == OVERLOAD) ? ((fns)->common.chain) : (tree) ((void *)0))) clone_function_decl (((((enum tree_code) (fns)->common.code) == OVERLOAD) ? (((struct tree_overload*)__extension__ ({ const tree __t = (fns); if (((enum tree_code) (__t)->common.code) != (OVERLOAD)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4021, __FUNCTION__, (OVERLOAD), 0); __t; }))->function) : (fns)), 1); for (fns = ((VEC_tree_index((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4022, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4022, __FUNCTION__); <->u.c; })->methods),1 ,"../../gcc/gcc/cp/class.c",4022,__FUNCTION__))); fns; fns = ((((enum tree_code) (fns)->common.code) == OVERLOAD) ? ((fns)->common.chain) : (tree) ((void *)0))) clone_function_decl (((((enum tree_code) (fns)->common.code) == OVERLOAD) ? (((struct tree_overload*)__extension__ ({ const tree __t = (fns); if (((enum tree_code) (__t)->common.code) != (OVERLOAD)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4023, __FUNCTION__, (OVERLOAD), 0); __t; }))->function) : (fns)), 1); } static void remove_zero_width_bit_fields (tree t) { tree *fieldsp; fieldsp = &(__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4033, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.values); while (*fieldsp) { if (((enum tree_code) (*fieldsp)->common.code) == FIELD_DECL && ((__extension__ ({ const tree __t = (__extension__ ({ const tree __t = (*fieldsp); if (((enum tree_code) (__t)->common.code) != (FIELD_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4037, __FUNCTION__, (FIELD_DECL), 0); __t; })); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4037, __FUNCTION__); __t; })->decl.lang_flag_4) == 1) && (__extension__ ({ const tree __t = (*fieldsp); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4038, __FUNCTION__); __t; })->decl.initial)) *fieldsp = ((*fieldsp)->common.chain); else fieldsp = &((*fieldsp)->common.chain); } } static unsigned char type_requires_array_cookie (tree type) { tree fns; unsigned char has_two_argument_delete_p = 0; ((void)(!((((((enum tree_code) (type)->common.code)) == RECORD_TYPE || (((enum tree_code) (type)->common.code)) == UNION_TYPE) && (((enum tree_code) (type)->common.code) == TEMPLATE_TYPE_PARM || ((enum tree_code) (type)->common.code) == TYPENAME_TYPE || ((enum tree_code) (type)->common.code) == TYPEOF_TYPE || ((enum tree_code) (type)->common.code) == BOUND_TEMPLATE_TEMPLATE_PARM || (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4054, __FUNCTION__); __t; })->type.lang_flag_5)))) ? fancy_abort ("../../gcc/gcc/cp/class.c", 4054, __FUNCTION__), 0 : 0)); if (((__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4059, __FUNCTION__); __t; })->type.lang_flag_4))) return 1; fns = lookup_fnfields ((__extension__ ({ const tree __t = (type); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4066, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo), (operator_name_info[(int) (VEC_DELETE_EXPR)].identifier), 0); if (!fns || fns == global_trees[TI_ERROR_MARK]) return 0; for (fns = (((struct tree_baselink*) __extension__ ({ const tree __t = (fns); if (((enum tree_code) (__t)->common.code) != (BASELINK)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4074, __FUNCTION__, (BASELINK), 0); __t; }))->functions); fns; fns = ((((enum tree_code) (fns)->common.code) == OVERLOAD) ? ((fns)->common.chain) : (tree) ((void *)0))) { tree fn; tree second_parm; fn = ((((enum tree_code) (fns)->common.code) == OVERLOAD) ? (((struct tree_overload*)__extension__ ({ const tree __t = (fns); if (((enum tree_code) (__t)->common.code) != (OVERLOAD)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4080, __FUNCTION__, (OVERLOAD), 0); __t; }))->function) : (fns)); second_parm = (((__extension__ ({ const tree __t = (((fn)->common.type)); if (((enum tree_code) (__t)->common.code) != (FUNCTION_TYPE) && ((enum tree_code) (__t)->common.code) != (METHOD_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4083, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE), 0); __t; })->type.values))->common.chain); if (second_parm == global_trees[TI_VOID_LIST_NODE]) return 0; if (((second_parm)->common.chain) == global_trees[TI_VOID_LIST_NODE] && comptypes (((__extension__ ({ const tree __t = (second_parm); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4090, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value)), (sizetype_tab[(int) SIZETYPE]), 0)) has_two_argument_delete_p = 1; } return has_two_argument_delete_p; } static void check_bases_and_members (tree t) { int cant_have_default_ctor; int cant_have_const_ctor; int no_const_asn_ref; tree access_decls; cant_have_default_ctor = 0; cant_have_const_ctor = 0; no_const_asn_ref = 0; check_bases (t, &cant_have_default_ctor, &cant_have_const_ctor, &no_const_asn_ref); check_field_decls (t, &access_decls, &cant_have_default_ctor, &cant_have_const_ctor, &no_const_asn_ref); check_methods (t); if (!((((t)->common.lang_flag_2)) || (((t)->common.lang_flag_3)))) (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4139, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4139, __FUNCTION__); <->u.c; })->nearly_empty_p) = 0; (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4143, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4143, __FUNCTION__); <->u.c; })->has_complex_init_ref) |= ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4144, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4144, __FUNCTION__); <->u.c; })->h.has_init_ref) || (((t)->common.lang_flag_3)) || (((t)->common.lang_flag_2))); (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4147, __FUNCTION__); __t; })->type.needs_constructing_flag) |= (((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4148, __FUNCTION__); __t; })->type.lang_flag_1)) || (((t)->common.lang_flag_3)) || (((t)->common.lang_flag_2))); (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4151, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4151, __FUNCTION__); <->u.c; })->non_aggregate) |= (((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4151, __FUNCTION__); __t; })->type.lang_flag_1)) || (((t)->common.lang_flag_2))); (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4153, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4153, __FUNCTION__); <->u.c; })->non_pod_class) |= ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4154, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4154, __FUNCTION__); <->u.c; })->non_aggregate) || ((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4154, __FUNCTION__); __t; })->type.lang_flag_2)) || (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4155, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4155, __FUNCTION__); <->u.c; })->has_assign_ref)); (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4156, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4156, __FUNCTION__); <->u.c; })->has_complex_assign_ref) |= (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4157, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4157, __FUNCTION__); <->u.c; })->has_assign_ref) || ((((t)->common.lang_flag_2)) || (((t)->common.lang_flag_3))); add_implicitly_declared_members (t, cant_have_default_ctor, cant_have_const_ctor, no_const_asn_ref); clone_constructors_and_destructors (t); for (; access_decls; access_decls = ((access_decls)->common.chain)) handle_using_decl ((__extension__ ({ const tree __t = (access_decls); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4170, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value), t); finish_struct_methods (t); (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4177, __FUNCTION__); __t; })->type.lang_specific)->u.c.vec_new_uses_cookie = type_requires_array_cookie (t); } static tree create_vtable_ptr (tree t, tree* virtuals_p) { tree fn; for (fn = (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4194, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.maxval); fn; fn = ((fn)->common.chain)) if ((__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4195, __FUNCTION__); __t; })->decl.vindex) && !(((__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4195, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.destructor_attr) && !((((enum tree_code) (fn)->common.code) == FUNCTION_DECL || ((enum tree_code) (fn)->common.code) == TEMPLATE_DECL) && (__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4195, __FUNCTION__); __t; })->decl.lang_specific) && ((__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4195, __FUNCTION__); __t; })->decl.lang_specific)->u.f.cloned_function) != (tree) ((void *)0))) && ((enum tree_code) ((__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4196, __FUNCTION__); __t; })->decl.vindex))->common.code) != INTEGER_CST) { tree new_virtual = make_node_stat (TREE_LIST ); ((__extension__ ({ const tree __t = (new_virtual); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4200, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value)) = fn; ((__extension__ ({ const tree __t = (new_virtual); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4201, __FUNCTION__, (TREE_LIST), 0); __t; })->list.purpose)) = global_trees[TI_INTEGER_ZERO]; ((new_virtual)->common.chain) = *virtuals_p; *virtuals_p = new_virtual; } if (!(__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4211, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.minval) && (*virtuals_p || ((((t)->common.lang_flag_2)) || (((t)->common.lang_flag_3))))) { tree field; field = build_decl_stat (FIELD_DECL,get_vfield_name (t),cp_global_trees[CPTI_VTBL_PTR_TYPE] ); (__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4235, __FUNCTION__); __t; })->decl.assembler_name = ((__builtin_constant_p (".vf") ? get_identifier_with_length ((".vf"), strlen (".vf")) : get_identifier (".vf")))); (__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4236, __FUNCTION__); __t; })->decl.virtual_flag) = 1; (__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4237, __FUNCTION__); __t; })->decl.artificial_flag) = 1; (__extension__ ({ const tree __t = (field); if (((enum tree_code) (__t)->common.code) != (FIELD_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4238, __FUNCTION__, (FIELD_DECL), 0); __t; })->decl.context) = t; (__extension__ ({ const tree __t = (field); if (((enum tree_code) (__t)->common.code) != (FIELD_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4239, __FUNCTION__, (FIELD_DECL), 0); __t; })->decl.vindex) = t; (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4241, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.minval) = field; (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4244, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4244, __FUNCTION__); <->u.c; })->empty_p) = 0; if (((VEC_tree_length((&__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4246, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo)); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4246, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.base_binfos))))) (((t)->common.lang_flag_1)) = 1; return field; } return (tree) ((void *)0); } static void fixup_pending_inline (tree fn) { if (((__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4265, __FUNCTION__); __t; })->decl.lang_specific)->u.f.u.pending_inline_info)) { tree args = (__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4267, __FUNCTION__); __t; })->decl.arguments); while (args) { (__extension__ ({ const tree __t = (args); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4270, __FUNCTION__); __t; })->decl.context) = fn; args = ((args)->common.chain); } } } static void fixup_inline_methods (tree type) { tree method = (__extension__ ({ const tree __t = (type); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4282, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.maxval); VEC_tree *friends; unsigned ix; if (method && ((enum tree_code) (method)->common.code) == TREE_VEC) { if (__extension__ (*({const tree __t = (method); const int __i = (1); if (((enum tree_code) (__t)->common.code) != TREE_VEC) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4288, __FUNCTION__, TREE_VEC, 0); if (__i < 0 || __i >= __t->vec.length) tree_vec_elt_check_failed (__i, __t->vec.length, "../../gcc/gcc/cp/class.c", 4288, __FUNCTION__); &__t->vec.a[__i]; }))) method = __extension__ (*({const tree __t = (method); const int __i = (1); if (((enum tree_code) (__t)->common.code) != TREE_VEC) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4289, __FUNCTION__, TREE_VEC, 0); if (__i < 0 || __i >= __t->vec.length) tree_vec_elt_check_failed (__i, __t->vec.length, "../../gcc/gcc/cp/class.c", 4289, __FUNCTION__); &__t->vec.a[__i]; })); else if (__extension__ (*({const tree __t = (method); const int __i = (0); if (((enum tree_code) (__t)->common.code) != TREE_VEC) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4290, __FUNCTION__, TREE_VEC, 0); if (__i < 0 || __i >= __t->vec.length) tree_vec_elt_check_failed (__i, __t->vec.length, "../../gcc/gcc/cp/class.c", 4290, __FUNCTION__); &__t->vec.a[__i]; }))) method = __extension__ (*({const tree __t = (method); const int __i = (0); if (((enum tree_code) (__t)->common.code) != TREE_VEC) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4291, __FUNCTION__, TREE_VEC, 0); if (__i < 0 || __i >= __t->vec.length) tree_vec_elt_check_failed (__i, __t->vec.length, "../../gcc/gcc/cp/class.c", 4291, __FUNCTION__); &__t->vec.a[__i]; })); else method = __extension__ (*({const tree __t = (method); const int __i = (2); if (((enum tree_code) (__t)->common.code) != TREE_VEC) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4293, __FUNCTION__, TREE_VEC, 0); if (__i < 0 || __i >= __t->vec.length) tree_vec_elt_check_failed (__i, __t->vec.length, "../../gcc/gcc/cp/class.c", 4293, __FUNCTION__); &__t->vec.a[__i]; })); } for (; method; method = ((method)->common.chain)) fixup_pending_inline (method); for (friends = (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4301, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4301, __FUNCTION__); <->u.c; })->pure_virtuals); (VEC_tree_iterate(friends,ix,&(method))); ix++) fixup_pending_inline (method); (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4304, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4304, __FUNCTION__); <->u.c; })->pure_virtuals) = ((void *)0); } static void propagate_binfo_offsets (tree binfo, tree offset) { int i; tree primary_binfo; tree base_binfo; (__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4320, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.offset) = convert (sizetype_tab[(int) SIZETYPE], size_binop (PLUS_EXPR, convert (sizetype_tab[(int) SSIZETYPE], (__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4323, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.offset)), offset)); primary_binfo = get_primary_binfo (binfo); if (primary_binfo && (__extension__ ({ const tree __t = (primary_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4329, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.inheritance) == binfo) propagate_binfo_offsets (primary_binfo, offset); for (i = 0; ((VEC_tree_iterate((&__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4334, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.base_binfos),(i),&((base_binfo))))); ++i) { if (base_binfo == primary_binfo) continue; if ((__extension__ ({ const tree __t = (base_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4340, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag)) continue; propagate_binfo_offsets (base_binfo, offset); } } static void layout_virtual_bases (record_layout_info rli, splay_tree offsets) { tree vbase; tree t = rli->t; unsigned char first_vbase = 1; tree *next_field; if (((VEC_tree_length((&__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4359, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo)); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4359, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.base_binfos)))) == 0) return; if (!(flag_abi_version == 0 || flag_abi_version >= (2))) { finish_record_layout (rli, 0); rli->offset = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4372, __FUNCTION__); __t; })->type.size_unit); rli->bitpos = global_trees[TI_BITSIZE_ZERO]; rli->record_align = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4374, __FUNCTION__); __t; })->type.align); } next_field = &(__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4379, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.values); while (*next_field) next_field = &((*next_field)->common.chain); for (vbase = (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4386, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo); vbase; vbase = ((vbase)->common.chain)) { if (!(__extension__ ({ const tree __t = (vbase); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4388, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag)) continue; if (!((__extension__ ({ const tree __t = (vbase); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4391, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_5)) { tree basetype = ((vbase)->common.type); next_field = build_base_field (rli, vbase, offsets, next_field); if (warn_abi && first_vbase && (tree_int_cst_lt (size_binop (CEIL_DIV_EXPR, round_up ((__extension__ ({ const tree __t = ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4411, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4411, __FUNCTION__); <->u.c; })->as_base)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4411, __FUNCTION__); __t; })->type.size), (__extension__ ({ const tree __t = ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (basetype); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4412, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4412, __FUNCTION__); <->u.c; })->as_base)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4412, __FUNCTION__); __t; })->type.align)), global_trees[TI_BITSIZE_UNIT]), (__extension__ ({ const tree __t = (vbase); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4414, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.offset)))) warning ("offset of virtual base `%T' is not ABI-compliant and may change in a future version of GCC", basetype); first_vbase = 0; } } } static tree end_of_base (tree binfo) { tree size; if (is_empty_class (((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4431, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type))) size = (__extension__ ({ const tree __t = (((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4435, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4435, __FUNCTION__); __t; })->type.size_unit); else size = (__extension__ ({ const tree __t = ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4437, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4437, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4437, __FUNCTION__); <->u.c; })->as_base)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4437, __FUNCTION__); __t; })->type.size_unit); return size_binop (PLUS_EXPR, (__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4439, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.offset), size); } static tree end_of_class (tree t, int include_virtuals_p) { tree result = global_trees[TI_SIZE_ZERO]; VEC_tree *vbases; tree binfo; tree base_binfo; tree offset; int i; for (binfo = (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4456, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo), i = 0; ((VEC_tree_iterate((&__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4457, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.base_binfos),(i),&((base_binfo))))); ++i) { if (!include_virtuals_p && (__extension__ ({ const tree __t = (base_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4460, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag) && (!((__extension__ ({ const tree __t = (base_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4461, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_5) || (__extension__ ({ const tree __t = (base_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4462, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.inheritance) != (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4462, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo))) continue; offset = end_of_base (base_binfo); if ((((unsigned long) ((__extension__ ({ const tree __t = (result); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4466, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high) < (unsigned long) ((__extension__ ({ const tree __t = (offset); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4466, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high)) || (((unsigned long) ((__extension__ ({ const tree __t = (result); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4466, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high) == (unsigned long) ((__extension__ ({ const tree __t = (offset); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4466, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high)) && ((__extension__ ({ const tree __t = (result); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4466, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).low) < ((__extension__ ({ const tree __t = (offset); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4466, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).low)))) result = offset; } if ((flag_abi_version == 0 || flag_abi_version >= (2)) && include_virtuals_p) for (vbases = (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4472, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4472, __FUNCTION__); <->u.c; })->vbases), i = 0; (VEC_tree_iterate(vbases,i,&(base_binfo))); i++) { offset = end_of_base (base_binfo); if ((((unsigned long) ((__extension__ ({ const tree __t = (result); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4476, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high) < (unsigned long) ((__extension__ ({ const tree __t = (offset); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4476, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high)) || (((unsigned long) ((__extension__ ({ const tree __t = (result); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4476, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high) == (unsigned long) ((__extension__ ({ const tree __t = (offset); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4476, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high)) && ((__extension__ ({ const tree __t = (result); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4476, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).low) < ((__extension__ ({ const tree __t = (offset); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4476, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).low)))) result = offset; } return result; } static void warn_about_ambiguous_bases (tree t) { int i; VEC_tree *vbases; tree basetype; tree binfo; tree base_binfo; for (binfo = (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4503, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo), i = 0; ((VEC_tree_iterate((&__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4504, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.base_binfos),(i),&((base_binfo))))); ++i) { basetype = ((__extension__ ({ const tree __t = (base_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4506, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type); if (!lookup_base (t, basetype, ba_ignore | ba_quiet, ((void *)0))) warning ("direct base `%T' inaccessible in `%T' due to ambiguity", basetype, t); } if (extra_warnings) for (vbases = (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4515, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4515, __FUNCTION__); <->u.c; })->vbases), i = 0; (VEC_tree_iterate(vbases,i,&(binfo))); i++) { basetype = ((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4518, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type); if (!lookup_base (t, basetype, ba_ignore | ba_quiet, ((void *)0))) warning ("virtual base `%T' inaccessible in `%T' due to ambiguity", basetype, t); } } static int splay_tree_compare_integer_csts (splay_tree_key k1, splay_tree_key k2) { return tree_int_cst_compare ((tree) k1, (tree) k2); } static void include_empty_classes (record_layout_info rli) { tree eoc; tree rli_size; eoc = end_of_class (rli->t, (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (rli->t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4549, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4549, __FUNCTION__); <->u.c; })->as_base) != (tree) ((void *)0)); rli_size = rli_size_unit_so_far (rli); if (((enum tree_code) (rli_size)->common.code) == INTEGER_CST && (((unsigned long) ((__extension__ ({ const tree __t = (rli_size); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4552, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high) < (unsigned long) ((__extension__ ({ const tree __t = (eoc); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4552, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high)) || (((unsigned long) ((__extension__ ({ const tree __t = (rli_size); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4552, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high) == (unsigned long) ((__extension__ ({ const tree __t = (eoc); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4552, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high)) && ((__extension__ ({ const tree __t = (rli_size); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4552, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).low) < ((__extension__ ({ const tree __t = (eoc); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4552, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).low)))) { if (!(flag_abi_version == 0 || flag_abi_version >= (2))) rli->bitpos = round_down (rli->bitpos, 8); else ((void)(!(tree_int_cst_equal (rli->bitpos, round_down (rli->bitpos, 8))) ? fancy_abort ("../../gcc/gcc/cp/class.c", 4564, __FUNCTION__), 0 : 0)); rli->bitpos = size_binop (PLUS_EXPR, rli->bitpos, size_binop (MULT_EXPR, convert (sizetype_tab[(int) BITSIZETYPE], size_binop (MINUS_EXPR, eoc, rli_size)), size_int_kind (8, BITSIZETYPE))); normalize_rli (rli); } } static void layout_class_type (tree t, tree *virtuals_p) { tree non_static_data_members; tree field; tree vptr; record_layout_info rli; splay_tree empty_base_offsets; unsigned char last_field_was_bitfield = 0; tree *next_field; tree base_t; non_static_data_members = (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4599, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.values); rli = start_record_layout (t); determine_primary_bases (t); vptr = create_vtable_ptr (t, virtuals_p); if (vptr) { ((vptr)->common.chain) = (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4613, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.values); (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4614, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.values) = vptr; next_field = &((vptr)->common.chain); place_field (rli, vptr); } else next_field = &(__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4619, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.values); empty_base_offsets = splay_tree_new (splay_tree_compare_integer_csts, ((void *)0), ((void *)0)); build_base_fields (rli, empty_base_offsets, next_field); for (field = non_static_data_members; field; field = ((field)->common.chain)) { tree type; tree padding; if (((enum tree_code) (field)->common.code) != FIELD_DECL) { place_field (rli, field); if (((enum tree_code) (field)->common.code) == VAR_DECL) maybe_register_incomplete_var (field); continue; } type = ((field)->common.type); padding = (tree) ((void *)0); if (((__extension__ ({ const tree __t = (__extension__ ({ const tree __t = (field); if (((enum tree_code) (__t)->common.code) != (FIELD_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4659, __FUNCTION__, (FIELD_DECL), 0); __t; })); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4659, __FUNCTION__); __t; })->decl.lang_flag_4) == 1) && (((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4660, __FUNCTION__); __t; })->type.size)); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4660, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high) < ((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4660, __FUNCTION__); __t; })->decl.size)); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4660, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high) || (((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4660, __FUNCTION__); __t; })->type.size)); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4660, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high) == ((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4660, __FUNCTION__); __t; })->decl.size)); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4660, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high) && ((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4660, __FUNCTION__); __t; })->type.size)); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4660, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).low) < ((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4660, __FUNCTION__); __t; })->decl.size)); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4660, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).low)))) { integer_type_kind itk; tree integer_type; unsigned char was_unnamed_p = 0; for (itk = itk_char; itk != itk_none; ++itk) if ((((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4671, __FUNCTION__); __t; })->decl.size)); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4671, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high) < ((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (integer_types[itk]); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4671, __FUNCTION__); __t; })->type.size)); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4671, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high) || (((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4671, __FUNCTION__); __t; })->decl.size)); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4671, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high) == ((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (integer_types[itk]); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4671, __FUNCTION__); __t; })->type.size)); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4671, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high) && ((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4671, __FUNCTION__); __t; })->decl.size)); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4671, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).low) < ((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (integer_types[itk]); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4671, __FUNCTION__); __t; })->type.size)); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4671, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).low)))) break; integer_type = integer_types[itk - 1]; if (!(flag_abi_version == 0 || flag_abi_version >= (2)) || (((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (integer_type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4683, __FUNCTION__); __t; })->type.size)); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4683, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high) < ((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4683, __FUNCTION__); __t; })->decl.size)); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4683, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high) || (((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (integer_type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4683, __FUNCTION__); __t; })->type.size)); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4683, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high) == ((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4683, __FUNCTION__); __t; })->decl.size)); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4683, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).high) && ((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (integer_type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4683, __FUNCTION__); __t; })->type.size)); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4683, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).low) < ((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4683, __FUNCTION__); __t; })->decl.size)); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4683, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).low)))) { if ((flag_abi_version == 0 || flag_abi_version >= (2)) && ((enum tree_code) (t)->common.code) == UNION_TYPE) padding = (__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4688, __FUNCTION__); __t; })->decl.size); else { if (warn_abi && ((enum tree_code) (t)->common.code) == UNION_TYPE) warning ("size assigned to `%T' may not be " "ABI-compliant and may change in a future " "version of GCC", t); padding = size_binop (MINUS_EXPR, (__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4696, __FUNCTION__); __t; })->decl.size), (__extension__ ({ const tree __t = (integer_type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4697, __FUNCTION__); __t; })->type.size)); } } if (1 && !(__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4707, __FUNCTION__); __t; })->decl.name)) { was_unnamed_p = 1; (__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4710, __FUNCTION__); __t; })->decl.name) = make_anon_name (); } (__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4713, __FUNCTION__); __t; })->decl.size) = (__extension__ ({ const tree __t = (integer_type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4713, __FUNCTION__); __t; })->type.size); (__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4714, __FUNCTION__); __t; })->decl.u1.a.align) = (__extension__ ({ const tree __t = (integer_type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4714, __FUNCTION__); __t; })->type.align); (__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4715, __FUNCTION__); __t; })->decl.user_align) = (__extension__ ({ const tree __t = (integer_type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4715, __FUNCTION__); __t; })->type.user_align); layout_nonempty_base_or_field (rli, field, (tree) ((void *)0), empty_base_offsets); if (was_unnamed_p) (__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4719, __FUNCTION__); __t; })->decl.name) = (tree) ((void *)0); (__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4723, __FUNCTION__); __t; })->decl.size) = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4723, __FUNCTION__); __t; })->type.size); if ((flag_abi_version == 0 || flag_abi_version >= (2))) (__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4726, __FUNCTION__); __t; })->decl.mode) = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4726, __FUNCTION__); __t; })->type.mode); else if (warn_abi && (__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4728, __FUNCTION__); __t; })->decl.mode) != (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4728, __FUNCTION__); __t; })->type.mode)) warning ("the offset of `%D' may not be ABI-compliant and may " "change in a future version of GCC", field); } else layout_nonempty_base_or_field (rli, field, (tree) ((void *)0), empty_base_offsets); if ((flag_abi_version == 0 || flag_abi_version >= (2))) record_subobject_offsets (((field)->common.type), byte_position(field), empty_base_offsets, 1); if (warn_abi && ((__extension__ ({ const tree __t = (__extension__ ({ const tree __t = (field); if (((enum tree_code) (__t)->common.code) != (FIELD_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4749, __FUNCTION__, (FIELD_DECL), 0); __t; })); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4749, __FUNCTION__); __t; })->decl.lang_flag_4) == 1) && !last_field_was_bitfield && !integer_zerop (size_binop (TRUNC_MOD_EXPR, (__extension__ ({ const tree __t = (field); if (((enum tree_code) (__t)->common.code) != (FIELD_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4752, __FUNCTION__, (FIELD_DECL), 0); __t; })->decl.u2.t), global_trees[TI_BITSIZE_UNIT]))) cp_warning_at ("offset of `%D' is not ABI-compliant and may change in a future version of GCC", field); if (warn_abi && !tree_int_cst_equal ((__extension__ ({ const tree __t = (field); if (((enum tree_code) (__t)->common.code) != (FIELD_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4760, __FUNCTION__, (FIELD_DECL), 0); __t; })->decl.arguments), byte_position (field)) && contains_empty_class_p (((field)->common.type))) cp_warning_at ("`%D' contains empty classes which may cause base " "classes to be placed at different locations in a " "future version of GCC", field); if (padding) { tree padding_field; padding_field = build_decl_stat (FIELD_DECL,(tree) ((void *)0),integer_types[itk_char] ); (__extension__ ({ const tree __t = (padding_field); if (((enum tree_code) (__t)->common.code) != (FIELD_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4777, __FUNCTION__, (FIELD_DECL), 0); __t; })->decl.bit_field_flag) = 1; (__extension__ ({ const tree __t = (padding_field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4778, __FUNCTION__); __t; })->decl.size) = padding; (__extension__ ({ const tree __t = (padding_field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4779, __FUNCTION__); __t; })->decl.context) = t; (__extension__ ({ const tree __t = (padding_field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4780, __FUNCTION__); __t; })->decl.artificial_flag) = 1; layout_nonempty_base_or_field (rli, padding_field, (tree) ((void *)0), empty_base_offsets); } last_field_was_bitfield = ((__extension__ ({ const tree __t = (__extension__ ({ const tree __t = (field); if (((enum tree_code) (__t)->common.code) != (FIELD_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4786, __FUNCTION__, (FIELD_DECL), 0); __t; })); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4786, __FUNCTION__); __t; })->decl.lang_flag_4) == 1); } if ((flag_abi_version == 0 || flag_abi_version >= (2)) && !integer_zerop (rli->bitpos)) { rli->bitpos = round_up (rli->bitpos, 8); normalize_rli (rli); } if (!(flag_abi_version == 0 || flag_abi_version >= (2))) include_empty_classes(rli); remove_zero_width_bit_fields (t); if ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4810, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4810, __FUNCTION__); <->u.c; })->non_pod_class) || (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4810, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4810, __FUNCTION__); <->u.c; })->empty_p)) { base_t = make_node_stat (((enum tree_code) (t)->common.code) ); if (!(flag_abi_version == 0 || flag_abi_version >= (2)) && (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4817, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4817, __FUNCTION__); <->u.c; })->empty_p)) { (__extension__ ({ const tree __t = (base_t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4819, __FUNCTION__); __t; })->type.size) = global_trees[TI_BITSIZE_ZERO]; (__extension__ ({ const tree __t = (base_t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4820, __FUNCTION__); __t; })->type.size_unit) = global_trees[TI_SIZE_ZERO]; if (warn_abi && !integer_zerop (rli_size_unit_so_far (rli))) warning ("layout of classes derived from empty class `%T' " "may change in a future version of GCC", t); } else { tree eoc; eoc = end_of_class (t, 0); (__extension__ ({ const tree __t = (base_t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4838, __FUNCTION__); __t; })->type.size_unit) = size_binop (MAX_EXPR, convert (sizetype_tab[(int) SIZETYPE], size_binop (CEIL_DIV_EXPR, rli_size_so_far (rli), size_int_kind (8, BITSIZETYPE))), eoc); (__extension__ ({ const tree __t = (base_t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4845, __FUNCTION__); __t; })->type.size) = size_binop (MAX_EXPR, rli_size_so_far (rli), size_binop (MULT_EXPR, convert (sizetype_tab[(int) BITSIZETYPE], eoc), size_int_kind (8, BITSIZETYPE))); } (__extension__ ({ const tree __t = (base_t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4852, __FUNCTION__); __t; })->type.align) = rli->record_align; (__extension__ ({ const tree __t = (base_t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4853, __FUNCTION__); __t; })->type.user_align) = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4853, __FUNCTION__); __t; })->type.user_align); next_field = &(__extension__ ({ const tree __t = (base_t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4856, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.values); for (field = (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4857, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.values); field; field = ((field)->common.chain)) if (((enum tree_code) (field)->common.code) == FIELD_DECL) { *next_field = build_decl_stat (FIELD_DECL,(__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4862, __FUNCTION__); __t; })->decl.name),((field)->common.type) ); (__extension__ ({ const tree __t = (*next_field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4863, __FUNCTION__); __t; })->decl.context) = base_t; (__extension__ ({ const tree __t = (*next_field); if (((enum tree_code) (__t)->common.code) != (FIELD_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4864, __FUNCTION__, (FIELD_DECL), 0); __t; })->decl.arguments) = (__extension__ ({ const tree __t = (field); if (((enum tree_code) (__t)->common.code) != (FIELD_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4864, __FUNCTION__, (FIELD_DECL), 0); __t; })->decl.arguments); (__extension__ ({ const tree __t = (*next_field); if (((enum tree_code) (__t)->common.code) != (FIELD_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4865, __FUNCTION__, (FIELD_DECL), 0); __t; })->decl.u2.t) = (__extension__ ({ const tree __t = (field); if (((enum tree_code) (__t)->common.code) != (FIELD_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4866, __FUNCTION__, (FIELD_DECL), 0); __t; })->decl.u2.t); (__extension__ ({ const tree __t = (*next_field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4867, __FUNCTION__); __t; })->decl.size) = (__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4867, __FUNCTION__); __t; })->decl.size); (__extension__ ({ const tree __t = (*next_field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4868, __FUNCTION__); __t; })->decl.mode) = (__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4868, __FUNCTION__); __t; })->decl.mode); next_field = &((*next_field)->common.chain); } (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4873, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4873, __FUNCTION__); <->u.c; })->as_base) = base_t; (__extension__ ({ const tree __t = (base_t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4874, __FUNCTION__); __t; })->type.context) = t; } else (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4877, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4877, __FUNCTION__); <->u.c; })->as_base) = t; if ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4880, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4880, __FUNCTION__); <->u.c; })->empty_p)) (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4881, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4881, __FUNCTION__); <->u.c; })->contains_empty_class_p) = 1; layout_decl (((((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4886, __FUNCTION__); __t; })->type.main_variant))->common.chain)), 0); layout_virtual_bases (rli, empty_base_offsets); include_empty_classes(rli); if (integer_zerop (rli_size_unit_so_far (rli)) && (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4899, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4899, __FUNCTION__); <->u.c; })->empty_p)) place_field (rli, build_decl_stat (FIELD_DECL,(tree) ((void *)0),integer_types[itk_char] )); finish_record_layout (rli, 1); warn_about_ambiguous_bases (t); for (field = (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4910, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.values); field; field = ((field)->common.chain)) if ((__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4911, __FUNCTION__); __t; })->decl.artificial_flag) && (((enum tree_code) (((field)->common.type))->common.code) == RECORD_TYPE && (__extension__ ({ const tree __t = (((field)->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4911, __FUNCTION__); __t; })->type.context) && (((((enum tree_code) ((__extension__ ({ const tree __t = (((field)->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4911, __FUNCTION__); __t; })->type.context))->common.code)) == RECORD_TYPE || (((enum tree_code) ((__extension__ ({ const tree __t = (((field)->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4911, __FUNCTION__); __t; })->type.context))->common.code)) == UNION_TYPE) && (((enum tree_code) ((__extension__ ({ const tree __t = (((field)->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4911, __FUNCTION__); __t; })->type.context))->common.code) == TEMPLATE_TYPE_PARM || ((enum tree_code) ((__extension__ ({ const tree __t = (((field)->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4911, __FUNCTION__); __t; })->type.context))->common.code) == TYPENAME_TYPE || ((enum tree_code) ((__extension__ ({ const tree __t = (((field)->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4911, __FUNCTION__); __t; })->type.context))->common.code) == TYPEOF_TYPE || ((enum tree_code) ((__extension__ ({ const tree __t = (((field)->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4911, __FUNCTION__); __t; })->type.context))->common.code) == BOUND_TEMPLATE_TEMPLATE_PARM || (__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (((field)->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4911, __FUNCTION__); __t; })->type.context)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4911, __FUNCTION__); __t; })->type.lang_flag_5))) && (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (((field)->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4911, __FUNCTION__); __t; })->type.context)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4911, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4911, __FUNCTION__); <->u.c; })->as_base) == (((field)->common.type)))) ((field)->common.type) = (__extension__ ({ const tree __t = (((field)->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4912, __FUNCTION__); __t; })->type.context); splay_tree_delete (empty_base_offsets); } void determine_key_method (tree type) { tree method; if ((__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4926, __FUNCTION__); __t; })->type.lang_flag_3) || scope_chain->x_processing_template_decl || ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4928, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4928, __FUNCTION__); <->u.c; })->use_template) & 1) || (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4929, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4929, __FUNCTION__); <->u.c; })->interface_unknown == 0)) return; for (method = (__extension__ ({ const tree __t = (type); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4936, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.maxval); method != (tree) ((void *)0); method = ((method)->common.chain)) if ((__extension__ ({ const tree __t = (method); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4938, __FUNCTION__); __t; })->decl.vindex) != (tree) ((void *)0) && ! (__extension__ ({ const tree __t = (method); if (((enum tree_code) (__t)->common.code) != (FUNCTION_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 4939, __FUNCTION__, (FUNCTION_DECL), 0); __t; })->decl.declared_inline_flag) && ! ((__extension__ ({ const tree __t = (method); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 4940, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.pure_virtual)) { (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4942, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4942, __FUNCTION__); <->u.c; })->key_method) = method; break; } return; } void finish_struct_1 (tree t) { tree x; tree virtuals = (tree) ((void *)0); int n_fields = 0; if (((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4960, __FUNCTION__); __t; })->type.size) != (tree) ((void *)0))) { ((void)(!((((enum tree_code) (t)->common.code) == TEMPLATE_TYPE_PARM || ((enum tree_code) (t)->common.code) == TYPENAME_TYPE || ((enum tree_code) (t)->common.code) == TYPEOF_TYPE || ((enum tree_code) (t)->common.code) == BOUND_TEMPLATE_TEMPLATE_PARM || (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4962, __FUNCTION__); __t; })->type.lang_flag_5))) ? fancy_abort ("../../gcc/gcc/cp/class.c", 4962, __FUNCTION__), 0 : 0)); error ("redefinition of `%#T'", t); popclass (); return; } (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4970, __FUNCTION__); __t; })->type.size) = (tree) ((void *)0); (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4971, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4971, __FUNCTION__); <->u.c; })->primary_base) = (tree) ((void *)0); fixup_inline_methods (t); (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4977, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4977, __FUNCTION__); <->u.c; })->empty_p) = 1; (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4978, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4978, __FUNCTION__); <->u.c; })->nearly_empty_p) = 1; (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 4979, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 4979, __FUNCTION__); <->u.c; })->contains_empty_class_p) = 0; check_bases_and_members (t); if (((((t)->common.lang_flag_2)) || (((t)->common.lang_flag_3)))) { if (targetm.cxx.key_method_may_be_inline ()) determine_key_method (t); if ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5001, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 5001, __FUNCTION__); <->u.c; })->key_method) == (tree) ((void *)0)) cp_global_trees[CPTI_KEYED_CLASSES] = tree_cons_stat ((tree) ((void *)0),t,cp_global_trees[CPTI_KEYED_CLASSES] ); } layout_class_type (t, &virtuals); if ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5007, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 5007, __FUNCTION__); <->u.c; })->as_base) != t) compute_record_mode ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5010, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 5010, __FUNCTION__); <->u.c; })->as_base)); virtuals = modify_all_vtables (t, nreverse (virtuals)); if (virtuals || ((((t)->common.lang_flag_2)) || (((t)->common.lang_flag_3)))) { if (!((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5018, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 5018, __FUNCTION__); <->u.c; })->primary_base) != (tree) ((void *)0))) build_primary_vtable ((tree) ((void *)0), t); else if (! (((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5020, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo)); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5020, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_2))) build_primary_vtable ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5023, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 5023, __FUNCTION__); <->u.c; })->primary_base), t); } if (((((t)->common.lang_flag_2)) || (((t)->common.lang_flag_3)))) { int vindex; tree fn; if ((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5031, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo)); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5031, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vtable)) ((void)(!((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5032, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo)); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5032, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vtable)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5032, __FUNCTION__); __t; })->decl.virtual_flag)) ? fancy_abort ("../../gcc/gcc/cp/class.c", 5032, __FUNCTION__), 0 : 0)); if (!((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5033, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 5033, __FUNCTION__); <->u.c; })->primary_base) != (tree) ((void *)0))) ((void)(!((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5034, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo)); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5034, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.virtuals) == (tree) ((void *)0)) ? fancy_abort ("../../gcc/gcc/cp/class.c", 5034, __FUNCTION__), 0 : 0)); (__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5037, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo)); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5037, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.virtuals) = chainon ((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5038, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo)); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5038, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.virtuals), virtuals); for (vindex = 0, fn = (__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5041, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo)); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5041, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.virtuals); fn; fn = ((fn)->common.chain), vindex += (0 ? 0 : 1)) { tree fndecl = ((__extension__ ({ const tree __t = (fn); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5047, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value)); if ((((enum tree_code) (fndecl)->common.code) == FUNCTION_DECL && (__extension__ ({ const tree __t = (fndecl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5049, __FUNCTION__); __t; })->decl.lang_flag_7))) (__extension__ ({ const tree __t = (fndecl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5053, __FUNCTION__); __t; })->decl.vindex) = (tree) ((void *)0); else if (((enum tree_code) ((__extension__ ({ const tree __t = (fndecl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5054, __FUNCTION__); __t; })->decl.vindex))->common.code) != INTEGER_CST) (__extension__ ({ const tree __t = (fndecl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5055, __FUNCTION__); __t; })->decl.vindex) = build_int_cst ((tree) ((void *)0), vindex); } } finish_struct_bits (t); for (x = (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5063, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.values); x; x = ((x)->common.chain)) if (((enum tree_code) (x)->common.code) == VAR_DECL && ((x)->common.static_flag) && comptypes (((__extension__ ({ const tree __t = (((x)->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5065, __FUNCTION__); __t; })->type.main_variant)), (t), 0)) (__extension__ ({ const tree __t = (x); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5066, __FUNCTION__); __t; })->decl.mode) = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5066, __FUNCTION__); __t; })->type.mode); n_fields = count_fields ((__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5075, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.values)); if (n_fields > 7) { struct sorted_fields_type *field_vec = ((struct sorted_fields_type *) ggc_alloc_stat ((sizeof (struct sorted_fields_type) + n_fields * sizeof (tree)) )); field_vec->len = n_fields; add_fields_to_record_type ((__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5082, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.values), field_vec, 0); qsort (field_vec->elts, n_fields, sizeof (tree), field_decl_cmp); if (! (__extension__ ({ const tree __t = (((((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5085, __FUNCTION__); __t; })->type.main_variant))->common.chain))); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5085, __FUNCTION__); __t; })->decl.lang_specific)) retrofit_lang_decl (((((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5086, __FUNCTION__); __t; })->type.main_variant))->common.chain))); ((__extension__ ({ const tree __t = (__extension__ ({ const tree __t = (((((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5087, __FUNCTION__); __t; })->type.main_variant))->common.chain))); if (((enum tree_code) (__t)->common.code) != (TYPE_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5087, __FUNCTION__, (TYPE_DECL), 0); __t; })); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5087, __FUNCTION__); __t; })->decl.lang_specific)->u.f.u.sorted_fields) = field_vec; } finish_vtbls (t); build_vtt (t); if (warn_nonvdtor && (((t)->common.lang_flag_2)) && ((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5097, __FUNCTION__); __t; })->type.lang_flag_2)) && !(__extension__ ({ const tree __t = (((VEC_tree_index((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5098, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 5098, __FUNCTION__); <->u.c; })->methods),1 ,"../../gcc/gcc/cp/class.c",5098,__FUNCTION__)))); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5098, __FUNCTION__); __t; })->decl.vindex)) { tree dtor = ((VEC_tree_index((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5101, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 5101, __FUNCTION__); <->u.c; })->methods),1 ,"../../gcc/gcc/cp/class.c",5101,__FUNCTION__))); if (!((dtor)->common.private_flag) || ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5105, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 5105, __FUNCTION__); <->u.c; })->friend_classes) || ((__extension__ ({ const tree __t = (((((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5106, __FUNCTION__); __t; })->type.main_variant))->common.chain))); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5106, __FUNCTION__); __t; })->decl.initial)))) warning ("%#T' has virtual functions but non-virtual destructor", t); } complete_vars (t); if (warn_overloaded_virtual) warn_hidden (t); maybe_suppress_debug_info (t); dump_class_hierarchy (t); rest_of_type_compilation (t, ! (decl_function_context (((((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5120, __FUNCTION__); __t; })->type.main_variant))->common.chain))) != (tree) ((void *)0))); } void unreverse_member_declarations (tree t) { tree next; tree prev; tree x; (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5135, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.maxval) = nreverse ((__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5135, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.maxval)); (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5136, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 5136, __FUNCTION__); <->u.c; })->decl_list) = nreverse ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5136, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 5136, __FUNCTION__); <->u.c; })->decl_list)); prev = (tree) ((void *)0); for (x = (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5141, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.values); x && ((enum tree_code) (x)->common.code) != TYPE_DECL; x = next) { next = ((x)->common.chain); ((x)->common.chain) = prev; prev = x; } if (prev) { (((__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5151, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.values))->common.chain) = x; if (prev) (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5153, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.values) = prev; } } tree finish_struct (tree t, tree attributes) { location_t saved_loc = input_location; unreverse_member_declarations (t); cplus_decl_attributes (&t, attributes, (int) ATTR_FLAG_TYPE_IN_PLACE); input_location = (__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5170, __FUNCTION__); __t; })->type.name)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5170, __FUNCTION__); __t; })->decl.locus); if (scope_chain->x_processing_template_decl) { tree x; finish_struct_methods (t); (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5177, __FUNCTION__); __t; })->type.size) = global_trees[TI_BITSIZE_ZERO]; (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5186, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 5186, __FUNCTION__); <->u.c; })->pure_virtuals) = ((void *)0); for (x = (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5187, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.maxval); x; x = ((x)->common.chain)) if (((__extension__ ({ const tree __t = (x); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5188, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.pure_virtual)) (VEC_tree_safe_push(&((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5189, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 5189, __FUNCTION__); <->u.c; })->pure_virtuals)),x ,"../../gcc/gcc/cp/class.c",5189,__FUNCTION__ )); complete_vars (t); } else finish_struct_1 (t); input_location = saved_loc; (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5197, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 5197, __FUNCTION__); <->u.c; })->being_defined) = 0; if (scope_chain->class_type) popclass (); else error ("trying to finish struct, but kicked out due to previous parse errors"); if (scope_chain->x_processing_template_decl && at_function_scope_p ()) add_stmt (build_min (TAG_DEFN, t)); return t; } static tree fixed_type_or_null (tree instance, int* nonnull, int* cdtorp) { switch (((enum tree_code) (instance)->common.code)) { case INDIRECT_REF: if ((((enum tree_code) (((instance)->common.type))->common.code) == POINTER_TYPE || ((enum tree_code) (((instance)->common.type))->common.code) == REFERENCE_TYPE)) return (tree) ((void *)0); else return fixed_type_or_null (__extension__ (*({const tree __t = __extension__ ({ const tree __t = (instance); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 5227, __FUNCTION__); __t; }); const int __i = (0); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 5227, __FUNCTION__); &__t->exp.operands[__i]; })), nonnull, cdtorp); case CALL_EXPR: if ((((instance)->common.lang_flag_4))) { if (nonnull) *nonnull = 1; return ((instance)->common.type); } return (tree) ((void *)0); case SAVE_EXPR: if ((((instance)->common.lang_flag_4))) { if (nonnull) *nonnull = 1; return ((instance)->common.type); } return fixed_type_or_null (__extension__ (*({const tree __t = __extension__ ({ const tree __t = (instance); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 5248, __FUNCTION__); __t; }); const int __i = (0); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 5248, __FUNCTION__); &__t->exp.operands[__i]; })), nonnull, cdtorp); case PLUS_EXPR: case MINUS_EXPR: if (((enum tree_code) (__extension__ (*({const tree __t = __extension__ ({ const tree __t = (instance); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 5252, __FUNCTION__); __t; }); const int __i = (0); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 5252, __FUNCTION__); &__t->exp.operands[__i]; })))->common.code) == ADDR_EXPR) return fixed_type_or_null (__extension__ (*({const tree __t = __extension__ ({ const tree __t = (instance); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 5253, __FUNCTION__); __t; }); const int __i = (0); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 5253, __FUNCTION__); &__t->exp.operands[__i]; })), nonnull, cdtorp); if (((enum tree_code) (__extension__ (*({const tree __t = __extension__ ({ const tree __t = (instance); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 5254, __FUNCTION__); __t; }); const int __i = (1); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 5254, __FUNCTION__); &__t->exp.operands[__i]; })))->common.code) == INTEGER_CST) return fixed_type_or_null (__extension__ (*({const tree __t = __extension__ ({ const tree __t = (instance); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 5256, __FUNCTION__); __t; }); const int __i = (0); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 5256, __FUNCTION__); &__t->exp.operands[__i]; })), nonnull, cdtorp); return (tree) ((void *)0); case NOP_EXPR: case CONVERT_EXPR: return fixed_type_or_null (__extension__ (*({const tree __t = __extension__ ({ const tree __t = (instance); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 5261, __FUNCTION__); __t; }); const int __i = (0); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 5261, __FUNCTION__); &__t->exp.operands[__i]; })), nonnull, cdtorp); case ADDR_EXPR: instance = __extension__ (*({const tree __t = __extension__ ({ const tree __t = (instance); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 5264, __FUNCTION__); __t; }); const int __i = (0); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 5264, __FUNCTION__); &__t->exp.operands[__i]; })); if (nonnull) { tree t = get_base_address (instance); if (t && (tree_code_type[(int) (((enum tree_code) (t)->common.code))] == 'd')) *nonnull = 1; } return fixed_type_or_null (instance, nonnull, cdtorp); case COMPONENT_REF: if ((__extension__ ({ const tree __t = (__extension__ ({ const tree __t = (__extension__ (*({const tree __t = __extension__ ({ const tree __t = (instance); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 5279, __FUNCTION__); __t; }); const int __i = (1); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 5279, __FUNCTION__); &__t->exp.operands[__i]; }))); if (((enum tree_code) (__t)->common.code) != (FIELD_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5279, __FUNCTION__, (FIELD_DECL), 0); __t; })); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5279, __FUNCTION__); __t; })->decl.lang_flag_6)) return fixed_type_or_null (__extension__ (*({const tree __t = __extension__ ({ const tree __t = (instance); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 5280, __FUNCTION__); __t; }); const int __i = (0); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 5280, __FUNCTION__); &__t->exp.operands[__i]; })), nonnull, cdtorp); return fixed_type_or_null (__extension__ (*({const tree __t = __extension__ ({ const tree __t = (instance); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 5281, __FUNCTION__); __t; }); const int __i = (1); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 5281, __FUNCTION__); &__t->exp.operands[__i]; })), nonnull, cdtorp); case VAR_DECL: case FIELD_DECL: if (((enum tree_code) (((instance)->common.type))->common.code) == ARRAY_TYPE && (((enum tree_code) (((((instance)->common.type))->common.type))->common.code) == TEMPLATE_TYPE_PARM || ((enum tree_code) (((((instance)->common.type))->common.type))->common.code) == TYPENAME_TYPE || ((enum tree_code) (((((instance)->common.type))->common.type))->common.code) == TYPEOF_TYPE || ((enum tree_code) (((((instance)->common.type))->common.type))->common.code) == BOUND_TEMPLATE_TEMPLATE_PARM || (__extension__ ({ const tree __t = (((((instance)->common.type))->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5286, __FUNCTION__); __t; })->type.lang_flag_5))) { if (nonnull) *nonnull = 1; return ((((instance)->common.type))->common.type); } case TARGET_EXPR: case PARM_DECL: case RESULT_DECL: if ((((enum tree_code) (((instance)->common.type))->common.code) == TEMPLATE_TYPE_PARM || ((enum tree_code) (((instance)->common.type))->common.code) == TYPENAME_TYPE || ((enum tree_code) (((instance)->common.type))->common.code) == TYPEOF_TYPE || ((enum tree_code) (((instance)->common.type))->common.code) == BOUND_TEMPLATE_TEMPLATE_PARM || (__extension__ ({ const tree __t = (((instance)->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5296, __FUNCTION__); __t; })->type.lang_flag_5))) { if (nonnull) *nonnull = 1; return ((instance)->common.type); } else if (instance == (cfun ? (cfun->language)->x_current_class_ptr : (tree) ((void *)0))) { if (nonnull) *nonnull = 1; if ((__extension__ ({ const tree __t = (current_function_decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5308, __FUNCTION__); __t; })->decl.lang_specific) && (((__extension__ ({ const tree __t = (current_function_decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5309, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.constructor_attr) || ((__extension__ ({ const tree __t = (current_function_decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5310, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.destructor_attr))) { if (cdtorp) *cdtorp = 1; return ((((instance)->common.type))->common.type); } } else if (((enum tree_code) (((instance)->common.type))->common.code) == REFERENCE_TYPE) { if (nonnull) *nonnull = 1; if (((enum tree_code) (instance)->common.code) == VAR_DECL && (__extension__ ({ const tree __t = (instance); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5327, __FUNCTION__); __t; })->decl.initial) && !((__extension__ ({ const tree __t = (__extension__ ({ const tree __t = (instance); if (((enum tree_code) (__t)->common.code) != (VAR_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5328, __FUNCTION__, (VAR_DECL), 0); __t; })); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5328, __FUNCTION__); __t; })->decl.lang_flag_4))) { tree type; ((__extension__ ({ const tree __t = (__extension__ ({ const tree __t = (instance); if (((enum tree_code) (__t)->common.code) != (VAR_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5331, __FUNCTION__, (VAR_DECL), 0); __t; })); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5331, __FUNCTION__); __t; })->decl.lang_flag_4)) = 1; type = fixed_type_or_null ((__extension__ ({ const tree __t = (instance); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5332, __FUNCTION__); __t; })->decl.initial), nonnull, cdtorp); ((__extension__ ({ const tree __t = (__extension__ ({ const tree __t = (instance); if (((enum tree_code) (__t)->common.code) != (VAR_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5334, __FUNCTION__, (VAR_DECL), 0); __t; })); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5334, __FUNCTION__); __t; })->decl.lang_flag_4)) = 0; return type; } } return (tree) ((void *)0); default: return (tree) ((void *)0); } } int resolves_to_fixed_type_p (tree instance, int* nonnull) { tree t = ((instance)->common.type); int cdtorp = 0; tree fixed = fixed_type_or_null (instance, nonnull, &cdtorp); if (fixed == (tree) ((void *)0)) return 0; if ((((enum tree_code) (t)->common.code) == POINTER_TYPE || ((enum tree_code) (t)->common.code) == REFERENCE_TYPE)) t = ((t)->common.type); if (!comptypes (((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5370, __FUNCTION__); __t; })->type.main_variant)), ((__extension__ ({ const tree __t = (fixed); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5370, __FUNCTION__); __t; })->type.main_variant)), 0)) return 0; return cdtorp ? -1 : 1; } void init_class_processing (void) { current_class_depth = 0; current_class_stack_size = 10; current_class_stack = xmalloc (current_class_stack_size * sizeof (struct class_stack_node)); local_classes = varray_init (8, VARRAY_DATA_TREE, "local_classes"); ridpointers[(int) RID_PUBLIC] = global_trees[TI_PUBLIC]; ridpointers[(int) RID_PRIVATE] = global_trees[TI_PRIVATE]; ridpointers[(int) RID_PROTECTED] = global_trees[TI_PROTECTED]; } static void restore_class_cache (void) { tree type; push_binding_level (scope_chain->x_previous_class_level); scope_chain->class_bindings = scope_chain->x_previous_class_level; for (type = scope_chain->class_bindings->type_shadowed; type; type = ((type)->common.chain)) ((((__extension__ ({ const tree __t = (type); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5407, __FUNCTION__, (TREE_LIST), 0); __t; })->list.purpose))->common.type) = (((type)->common.type))); } void pushclass (tree type) { type = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5422, __FUNCTION__); __t; })->type.main_variant); if (current_class_depth + 1 >= current_class_stack_size) { current_class_stack_size *= 2; current_class_stack = xrealloc (current_class_stack, current_class_stack_size * sizeof (struct class_stack_node)); } current_class_stack[current_class_depth].name = scope_chain->class_name; current_class_stack[current_class_depth].type = scope_chain->class_type; current_class_stack[current_class_depth].access = scope_chain->access_specifier; current_class_stack[current_class_depth].names_used = 0; current_class_depth++; scope_chain->class_name = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5442, __FUNCTION__); __t; })->type.name); if (((enum tree_code) (scope_chain->class_name)->common.code) == TYPE_DECL) scope_chain->class_name = (__extension__ ({ const tree __t = (scope_chain->class_name); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5444, __FUNCTION__); __t; })->decl.name); scope_chain->class_type = type; scope_chain->access_specifier = ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5449, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 5449, __FUNCTION__); <->u.c; })->declared_class) ? global_trees[TI_PRIVATE] : global_trees[TI_PUBLIC]); if (scope_chain->x_previous_class_level && type != scope_chain->x_previous_class_level->this_entity && current_class_depth == 1) { invalidate_class_lookup_cache (); } if (!scope_chain->x_previous_class_level || type != scope_chain->x_previous_class_level->this_entity || current_class_depth > 1) pushlevel_class (); else restore_class_cache (); cxx_remember_type_decls ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5468, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 5468, __FUNCTION__); <->u.c; })->nested_udts)); } void invalidate_class_lookup_cache (void) { scope_chain->x_previous_class_level = ((void *)0); } void popclass (void) { poplevel_class (); current_class_depth--; scope_chain->class_name = current_class_stack[current_class_depth].name; scope_chain->class_type = current_class_stack[current_class_depth].type; scope_chain->access_specifier = current_class_stack[current_class_depth].access; if (current_class_stack[current_class_depth].names_used) splay_tree_delete (current_class_stack[current_class_depth].names_used); } int currently_open_class (tree t) { int i; if (scope_chain->class_type && comptypes ((t), (scope_chain->class_type), 0)) return 1; for (i = 1; i < current_class_depth; ++i) if (current_class_stack[i].type && comptypes ((current_class_stack [i].type), (t), 0)) return 1; return 0; } tree currently_open_derived_class (tree t) { int i; if (dependent_type_p (t)) return (tree) ((void *)0); if (!scope_chain->class_type) return (tree) ((void *)0); if ((lookup_base ((scope_chain->class_type), (t), ba_any, ((void *)0)) != (tree) ((void *)0))) return scope_chain->class_type; for (i = current_class_depth - 1; i > 0; --i) if ((lookup_base ((current_class_stack[i].type), (t), ba_any, ((void *)0)) != (tree) ((void *)0))) return current_class_stack[i].type; return (tree) ((void *)0); } void push_nested_class (tree type) { tree context; if (type == (tree) ((void *)0) || type == global_trees[TI_ERROR_MARK] || ((enum tree_code) (type)->common.code) == NAMESPACE_DECL || ! (((enum tree_code) (type)->common.code) == TEMPLATE_TYPE_PARM || ((enum tree_code) (type)->common.code) == TYPENAME_TYPE || ((enum tree_code) (type)->common.code) == TYPEOF_TYPE || ((enum tree_code) (type)->common.code) == BOUND_TEMPLATE_TEMPLATE_PARM || (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5555, __FUNCTION__); __t; })->type.lang_flag_5)) || ((enum tree_code) (type)->common.code) == TEMPLATE_TYPE_PARM || ((enum tree_code) (type)->common.code) == BOUND_TEMPLATE_TEMPLATE_PARM) return; context = (__extension__ ({ const tree __t = (((((__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5560, __FUNCTION__); __t; })->type.main_variant))->common.chain))); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5560, __FUNCTION__); __t; })->decl.context); if (context && (((((enum tree_code) (context)->common.code)) == RECORD_TYPE || (((enum tree_code) (context)->common.code)) == UNION_TYPE) && (((enum tree_code) (context)->common.code) == TEMPLATE_TYPE_PARM || ((enum tree_code) (context)->common.code) == TYPENAME_TYPE || ((enum tree_code) (context)->common.code) == TYPEOF_TYPE || ((enum tree_code) (context)->common.code) == BOUND_TEMPLATE_TEMPLATE_PARM || (__extension__ ({ const tree __t = (context); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5562, __FUNCTION__); __t; })->type.lang_flag_5)))) push_nested_class (context); pushclass (type); } void pop_nested_class (void) { tree context = (__extension__ ({ const tree __t = (((((__extension__ ({ const tree __t = (scope_chain->class_type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5572, __FUNCTION__); __t; })->type.main_variant))->common.chain))); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5572, __FUNCTION__); __t; })->decl.context); popclass (); if (context && (((((enum tree_code) (context)->common.code)) == RECORD_TYPE || (((enum tree_code) (context)->common.code)) == UNION_TYPE) && (((enum tree_code) (context)->common.code) == TEMPLATE_TYPE_PARM || ((enum tree_code) (context)->common.code) == TYPENAME_TYPE || ((enum tree_code) (context)->common.code) == TYPEOF_TYPE || ((enum tree_code) (context)->common.code) == BOUND_TEMPLATE_TEMPLATE_PARM || (__extension__ ({ const tree __t = (context); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5575, __FUNCTION__); __t; })->type.lang_flag_5)))) pop_nested_class (); } int current_lang_depth (void) { return ((scope_chain->lang_base)->elements_used); } void push_lang_context (tree name) { do { if ((scope_chain->lang_base)->elements_used >= (scope_chain->lang_base)->num_elements) (((scope_chain->lang_base)) = varray_grow ((scope_chain->lang_base), 2 * (scope_chain->lang_base)->num_elements)); (scope_chain->lang_base)->data.tree[(scope_chain->lang_base)->elements_used++] = (scope_chain->lang_name); } while (0); if (name == cp_global_trees[CPTI_LANG_NAME_CPLUSPLUS]) { scope_chain->lang_name = name; } else if (name == cp_global_trees[CPTI_LANG_NAME_JAVA]) { scope_chain->lang_name = name; (__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (cp_global_trees[CPTI_JAVA_BYTE_TYPE]); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5606, __FUNCTION__); __t; })->type.name)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5606, __FUNCTION__); __t; })->decl.ignored_flag) = 0; (__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (cp_global_trees[CPTI_JAVA_SHORT_TYPE]); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5607, __FUNCTION__); __t; })->type.name)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5607, __FUNCTION__); __t; })->decl.ignored_flag) = 0; (__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (cp_global_trees[CPTI_JAVA_INT_TYPE]); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5608, __FUNCTION__); __t; })->type.name)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5608, __FUNCTION__); __t; })->decl.ignored_flag) = 0; (__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (cp_global_trees[CPTI_JAVA_LONG_TYPE]); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5609, __FUNCTION__); __t; })->type.name)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5609, __FUNCTION__); __t; })->decl.ignored_flag) = 0; (__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (cp_global_trees[CPTI_JAVA_FLOAT_TYPE]); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5610, __FUNCTION__); __t; })->type.name)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5610, __FUNCTION__); __t; })->decl.ignored_flag) = 0; (__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (cp_global_trees[CPTI_JAVA_DOUBLE_TYPE]); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5611, __FUNCTION__); __t; })->type.name)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5611, __FUNCTION__); __t; })->decl.ignored_flag) = 0; (__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (cp_global_trees[CPTI_JAVA_CHAR_TYPE]); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5612, __FUNCTION__); __t; })->type.name)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5612, __FUNCTION__); __t; })->decl.ignored_flag) = 0; (__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (cp_global_trees[CPTI_JAVA_BOOLEAN_TYPE]); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5613, __FUNCTION__); __t; })->type.name)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5613, __FUNCTION__); __t; })->decl.ignored_flag) = 0; } else if (name == cp_global_trees[CPTI_LANG_NAME_C]) { scope_chain->lang_name = name; } else error ("language string `\"%E\"' not recognized", name); } void pop_lang_context (void) { scope_chain->lang_name = __extension__ (*({ varray_type const _va = (scope_chain->lang_base); const size_t _n = ((scope_chain->lang_base)->elements_used - 1); if (_n >= _va->num_elements) varray_check_failed (_va, _n, "../../gcc/gcc/cp/class.c", 5628, __FUNCTION__); &_va->data.tree[_n]; })); do { varray_type const _va = (scope_chain->lang_base); if (_va->elements_used == 0) varray_underflow (_va, "../../gcc/gcc/cp/class.c", 5629, __FUNCTION__); else _va->elements_used--; } while (0); } static tree resolve_address_of_overloaded_function (tree target_type, tree overload, tsubst_flags_t flags, unsigned char template_only, tree explicit_targs) { int is_ptrmem = 0; int is_reference = 0; tree matches = (tree) ((void *)0); tree fn; ((void)(!(((enum tree_code) (target_type)->common.code) != POINTER_TYPE || ((enum tree_code) (((target_type)->common.type))->common.code) != METHOD_TYPE) ? fancy_abort ("../../gcc/gcc/cp/class.c", 5687, __FUNCTION__), 0 : 0)); ((void)(!(is_overloaded_fn (overload)) ? fancy_abort ("../../gcc/gcc/cp/class.c", 5689, __FUNCTION__), 0 : 0)); if ((((enum tree_code) (target_type)->common.code) == POINTER_TYPE && ((enum tree_code) (((target_type)->common.type))->common.code) == FUNCTION_TYPE)) ; else if ((((enum tree_code) (target_type)->common.code) == RECORD_TYPE && (__extension__ ({ const tree __t = (target_type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5694, __FUNCTION__); __t; })->type.lang_specific) && (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (target_type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5694, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 5694, __FUNCTION__); <->u.c; })->ptrmemfunc_flag))) is_ptrmem = 1; else if (((enum tree_code) (target_type)->common.code) == FUNCTION_TYPE) { target_type = build_reference_type (target_type); is_reference = 1; } else { if (flags & tf_error) error ("cannot resolve overloaded function `%D' based on conversion to type `%T'", (__extension__ ({ const tree __t = ((((struct tree_overload*)__extension__ ({ const tree __t = (overload); if (((enum tree_code) (__t)->common.code) != (OVERLOAD)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5709, __FUNCTION__, (OVERLOAD), 0); __t; }))->function)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5709, __FUNCTION__); __t; })->decl.name), target_type); return global_trees[TI_ERROR_MARK]; } if (!template_only) { tree fns; for (fns = overload; fns; fns = ((((enum tree_code) (fns)->common.code) == OVERLOAD) ? ((fns)->common.chain) : (tree) ((void *)0))) { tree fn = ((((enum tree_code) (fns)->common.code) == OVERLOAD) ? (((struct tree_overload*)__extension__ ({ const tree __t = (fns); if (((enum tree_code) (__t)->common.code) != (OVERLOAD)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5723, __FUNCTION__, (OVERLOAD), 0); __t; }))->function) : (fns)); tree fntype; if (((enum tree_code) (fn)->common.code) == TEMPLATE_DECL) continue; if ((((enum tree_code) (((fn)->common.type))->common.code) == METHOD_TYPE) != is_ptrmem) continue; if (((__extension__ ({ const tree __t = (__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5737, __FUNCTION__); __t; })); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5737, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.anticipated_p)) continue; fntype = ((fn)->common.type); if (is_ptrmem) fntype = build_ptrmemfunc_type (build_pointer_type (fntype)); else if (!is_reference) fntype = build_pointer_type (fntype); if (can_convert_arg (target_type, fntype, fn)) matches = tree_cons_stat (fn,(tree) ((void *)0),matches ); } } if (!matches) { tree target_fn_type; tree target_arg_types; tree target_ret_type; tree fns; if (is_ptrmem) target_fn_type = ((((((__extension__ ({ const tree __t = (target_type); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5764, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.values))->common.type)))->common.type); else target_fn_type = ((target_type)->common.type); target_arg_types = (__extension__ ({ const tree __t = (target_fn_type); if (((enum tree_code) (__t)->common.code) != (FUNCTION_TYPE) && ((enum tree_code) (__t)->common.code) != (METHOD_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5767, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE), 0); __t; })->type.values); target_ret_type = ((target_fn_type)->common.type); if (((enum tree_code) (target_fn_type)->common.code) == METHOD_TYPE) target_arg_types = ((target_arg_types)->common.chain); for (fns = overload; fns; fns = ((((enum tree_code) (fns)->common.code) == OVERLOAD) ? ((fns)->common.chain) : (tree) ((void *)0))) { tree fn = ((((enum tree_code) (fns)->common.code) == OVERLOAD) ? (((struct tree_overload*)__extension__ ({ const tree __t = (fns); if (((enum tree_code) (__t)->common.code) != (OVERLOAD)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5776, __FUNCTION__, (OVERLOAD), 0); __t; }))->function) : (fns)); tree instantiation; tree instantiation_type; tree targs; if (((enum tree_code) (fn)->common.code) != TEMPLATE_DECL) continue; if ((((enum tree_code) (((fn)->common.type))->common.code) == METHOD_TYPE) != is_ptrmem) continue; targs = make_tree_vec_stat ((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5792, __FUNCTION__); __t; })->decl.arguments)); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5792, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value)); if (((enum tree_code) (__t)->common.code) != (TREE_VEC)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5792, __FUNCTION__, (TREE_VEC), 0); __t; })->vec.length) ); if (fn_type_unification (fn, explicit_targs, targs, target_arg_types, target_ret_type, DEDUCE_EXACT, -1) != 0) continue; instantiation = instantiate_template (fn, targs, flags); if (instantiation == global_trees[TI_ERROR_MARK]) continue; instantiation_type = ((instantiation)->common.type); if (is_ptrmem) instantiation_type = build_ptrmemfunc_type (build_pointer_type (instantiation_type)); else if (!is_reference) instantiation_type = build_pointer_type (instantiation_type); if (can_convert_arg (target_type, instantiation_type, instantiation)) matches = tree_cons_stat (instantiation,fn,matches ); } if (matches) { tree match = most_specialized_instantiation (matches); if (match != global_trees[TI_ERROR_MARK]) matches = tree_cons_stat (match,(tree) ((void *)0),(tree) ((void *)0) ); } } if (matches == (tree) ((void *)0)) { if (flags & tf_error) { error ("no matches converting function `%D' to type `%#T'", (__extension__ ({ const tree __t = ((((struct tree_overload*)__extension__ ({ const tree __t = (overload); if (((enum tree_code) (__t)->common.code) != (OVERLOAD)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5833, __FUNCTION__, (OVERLOAD), 0); __t; }))->function)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5833, __FUNCTION__); __t; })->decl.name), target_type); for (; overload; overload = ((((enum tree_code) (overload)->common.code) == OVERLOAD) ? ((overload)->common.chain) : (tree) ((void *)0))) matches = tree_cons_stat ((tree) ((void *)0),((((enum tree_code) (overload)->common.code) == OVERLOAD) ? (((struct tree_overload*)__extension__ ({ const tree __t = (overload); if (((enum tree_code) (__t)->common.code) != (OVERLOAD)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5841, __FUNCTION__, (OVERLOAD), 0); __t; }))->function) : (overload)),matches ); print_candidates (matches); } return global_trees[TI_ERROR_MARK]; } else if (((matches)->common.chain)) { if (flags & tf_error) { tree match; error ("converting overloaded function `%D' to type `%#T' is ambiguous", (__extension__ ({ const tree __t = ((((struct tree_overload*)__extension__ ({ const tree __t = (overload); if (((enum tree_code) (__t)->common.code) != (OVERLOAD)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5856, __FUNCTION__, (OVERLOAD), 0); __t; }))->function)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 5856, __FUNCTION__); __t; })->decl.name), target_type); for (match = matches; match; match = ((match)->common.chain)) (__extension__ ({ const tree __t = (match); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5862, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value) = (__extension__ ({ const tree __t = (match); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5862, __FUNCTION__, (TREE_LIST), 0); __t; })->list.purpose); print_candidates (matches); } return global_trees[TI_ERROR_MARK]; } fn = (__extension__ ({ const tree __t = (matches); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5871, __FUNCTION__, (TREE_LIST), 0); __t; })->list.purpose); if ((((enum tree_code) (((fn)->common.type))->common.code) == METHOD_TYPE) && !(flags & tf_ptrmem_ok) && !flag_ms_extensions) { static int explained; if (!(flags & tf_error)) return global_trees[TI_ERROR_MARK]; pedwarn ("assuming pointer to member `%D'", fn); if (!explained) { pedwarn ("(a pointer to member can only be formed with `&%E')", fn); explained = 1; } } if (!(flags & tf_conv)) mark_used (fn); if ((((enum tree_code) (target_type)->common.code) == POINTER_TYPE && ((enum tree_code) (((target_type)->common.type))->common.code) == FUNCTION_TYPE) || (((enum tree_code) (target_type)->common.code) == RECORD_TYPE && (__extension__ ({ const tree __t = (target_type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5896, __FUNCTION__); __t; })->type.lang_specific) && (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (target_type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5896, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 5896, __FUNCTION__); <->u.c; })->ptrmemfunc_flag))) return build_unary_op (ADDR_EXPR, fn, 0); else { cxx_mark_addressable (fn); return fn; } } tree instantiate_type (tree lhstype, tree rhs, tsubst_flags_t flags) { tsubst_flags_t flags_in = flags; flags &= ~tf_ptrmem_ok; if (((enum tree_code) (lhstype)->common.code) == LANG_TYPE) { if (flags & tf_error) error ("not enough type information"); return global_trees[TI_ERROR_MARK]; } if (((rhs)->common.type) != (tree) ((void *)0) && ! (type_unknown_p (rhs))) { if (comptypes ((lhstype), (((rhs)->common.type)), 0)) return rhs; if (flag_ms_extensions && (((enum tree_code) (lhstype)->common.code) == RECORD_TYPE && (__extension__ ({ const tree __t = (lhstype); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5938, __FUNCTION__); __t; })->type.lang_specific) && (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (lhstype); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5938, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 5938, __FUNCTION__); <->u.c; })->ptrmemfunc_flag)) && !(((enum tree_code) (((rhs)->common.type))->common.code) == RECORD_TYPE && (__extension__ ({ const tree __t = (((rhs)->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5939, __FUNCTION__); __t; })->type.lang_specific) && (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (((rhs)->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 5939, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 5939, __FUNCTION__); <->u.c; })->ptrmemfunc_flag))) ; else { if (flags & tf_error) error ("argument of type `%T' does not match `%T'", ((rhs)->common.type), lhstype); return global_trees[TI_ERROR_MARK]; } } if (((enum tree_code) (rhs)->common.code) == BASELINK) rhs = (((struct tree_baselink*) __extension__ ({ const tree __t = (rhs); if (((enum tree_code) (__t)->common.code) != (BASELINK)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 5953, __FUNCTION__, (BASELINK), 0); __t; }))->functions); if (((enum tree_code) (rhs)->common.code) != OVERLOAD) rhs = copy_node_stat (rhs ); switch (((enum tree_code) (rhs)->common.code)) { case TYPE_EXPR: case CONVERT_EXPR: case SAVE_EXPR: case CONSTRUCTOR: (fancy_abort ("../../gcc/gcc/cp/class.c", 5971, __FUNCTION__)); case INDIRECT_REF: case ARRAY_REF: { tree new_rhs; new_rhs = instantiate_type (build_pointer_type (lhstype), __extension__ (*({const tree __t = __extension__ ({ const tree __t = (rhs); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 5979, __FUNCTION__); __t; }); const int __i = (0); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 5979, __FUNCTION__); &__t->exp.operands[__i]; })), flags); if (new_rhs == global_trees[TI_ERROR_MARK]) return global_trees[TI_ERROR_MARK]; ((rhs)->common.type) = lhstype; __extension__ (*({const tree __t = __extension__ ({ const tree __t = (rhs); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 5984, __FUNCTION__); __t; }); const int __i = (0); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 5984, __FUNCTION__); &__t->exp.operands[__i]; })) = new_rhs; return rhs; } case NOP_EXPR: rhs = copy_node_stat (__extension__ (*({const tree __t = __extension__ ({ const tree __t = (rhs); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 5989, __FUNCTION__); __t; }); const int __i = (0); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 5989, __FUNCTION__); &__t->exp.operands[__i]; })) ); ((rhs)->common.type) = cp_global_trees[CPTI_UNKNOWN_TYPE]; return instantiate_type (lhstype, rhs, flags); case COMPONENT_REF: { tree addr = instantiate_type (lhstype, __extension__ (*({const tree __t = __extension__ ({ const tree __t = (rhs); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 5995, __FUNCTION__); __t; }); const int __i = (1); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 5995, __FUNCTION__); &__t->exp.operands[__i]; })), flags); if (addr != global_trees[TI_ERROR_MARK] && (__extension__ ({ const tree __t = (__extension__ (*({const tree __t = __extension__ ({ const tree __t = (rhs); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 5998, __FUNCTION__); __t; }); const int __i = (0); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 5998, __FUNCTION__); &__t->exp.operands[__i]; }))); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!((__c) != 't')) tree_class_check_failed (__t, 'T', "../../gcc/gcc/cp/class.c", 5998, __FUNCTION__); __t; })->common.side_effects_flag)) addr = build2_stat (COMPOUND_EXPR,((addr)->common.type),__extension__ (*({const tree __t = __extension__ ({ const tree __t = (rhs); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 6001, __FUNCTION__); __t; }); const int __i = (0); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 6001, __FUNCTION__); &__t->exp.operands[__i]; })),addr ); return addr; } case OFFSET_REF: rhs = __extension__ (*({const tree __t = __extension__ ({ const tree __t = (rhs); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 6006, __FUNCTION__); __t; }); const int __i = (1); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 6006, __FUNCTION__); &__t->exp.operands[__i]; })); if ((((enum tree_code) (rhs)->common.code) == BASELINK)) return instantiate_type (lhstype, (((struct tree_baselink*) __extension__ ({ const tree __t = (rhs); if (((enum tree_code) (__t)->common.code) != (BASELINK)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6008, __FUNCTION__, (BASELINK), 0); __t; }))->functions), flags_in); ((void)(!(((enum tree_code) (rhs)->common.code) == TEMPLATE_ID_EXPR) ? fancy_abort ("../../gcc/gcc/cp/class.c", 6012, __FUNCTION__), 0 : 0)); case TEMPLATE_ID_EXPR: { tree fns = __extension__ (*({const tree __t = __extension__ ({ const tree __t = (rhs); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 6018, __FUNCTION__); __t; }); const int __i = (0); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 6018, __FUNCTION__); &__t->exp.operands[__i]; })); tree args = __extension__ (*({const tree __t = __extension__ ({ const tree __t = (rhs); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 6019, __FUNCTION__); __t; }); const int __i = (1); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 6019, __FUNCTION__); &__t->exp.operands[__i]; })); return resolve_address_of_overloaded_function (lhstype, fns, flags_in, 1, args); } case OVERLOAD: case FUNCTION_DECL: return resolve_address_of_overloaded_function (lhstype, rhs, flags_in, 0, (tree) ((void *)0)); case TREE_LIST: ((void)(!((((enum tree_code) (rhs)->common.code) == BASELINK)) ? fancy_abort ("../../gcc/gcc/cp/class.c", 6036, __FUNCTION__), 0 : 0)); return instantiate_type (lhstype, (((struct tree_baselink*) __extension__ ({ const tree __t = (rhs); if (((enum tree_code) (__t)->common.code) != (BASELINK)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6038, __FUNCTION__, (BASELINK), 0); __t; }))->functions), flags); case CALL_EXPR: (fancy_abort ("../../gcc/gcc/cp/class.c", 6042, __FUNCTION__)); case PLUS_EXPR: case MINUS_EXPR: case COMPOUND_EXPR: __extension__ (*({const tree __t = __extension__ ({ const tree __t = (rhs); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 6047, __FUNCTION__); __t; }); const int __i = (0); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 6047, __FUNCTION__); &__t->exp.operands[__i]; })) = instantiate_type (lhstype, __extension__ (*({const tree __t = __extension__ ({ const tree __t = (rhs); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 6048, __FUNCTION__); __t; }); const int __i = (0); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 6048, __FUNCTION__); &__t->exp.operands[__i]; })), flags); if (__extension__ (*({const tree __t = __extension__ ({ const tree __t = (rhs); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 6049, __FUNCTION__); __t; }); const int __i = (0); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 6049, __FUNCTION__); &__t->exp.operands[__i]; })) == global_trees[TI_ERROR_MARK]) return global_trees[TI_ERROR_MARK]; __extension__ (*({const tree __t = __extension__ ({ const tree __t = (rhs); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 6051, __FUNCTION__); __t; }); const int __i = (1); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 6051, __FUNCTION__); &__t->exp.operands[__i]; })) = instantiate_type (lhstype, __extension__ (*({const tree __t = __extension__ ({ const tree __t = (rhs); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 6052, __FUNCTION__); __t; }); const int __i = (1); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 6052, __FUNCTION__); &__t->exp.operands[__i]; })), flags); if (__extension__ (*({const tree __t = __extension__ ({ const tree __t = (rhs); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 6053, __FUNCTION__); __t; }); const int __i = (1); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 6053, __FUNCTION__); &__t->exp.operands[__i]; })) == global_trees[TI_ERROR_MARK]) return global_trees[TI_ERROR_MARK]; ((rhs)->common.type) = lhstype; return rhs; case MULT_EXPR: case TRUNC_DIV_EXPR: case FLOOR_DIV_EXPR: case CEIL_DIV_EXPR: case ROUND_DIV_EXPR: case RDIV_EXPR: case TRUNC_MOD_EXPR: case FLOOR_MOD_EXPR: case CEIL_MOD_EXPR: case ROUND_MOD_EXPR: case FIX_ROUND_EXPR: case FIX_FLOOR_EXPR: case FIX_CEIL_EXPR: case FIX_TRUNC_EXPR: case FLOAT_EXPR: case NEGATE_EXPR: case ABS_EXPR: case MAX_EXPR: case MIN_EXPR: case BIT_AND_EXPR: case BIT_IOR_EXPR: case BIT_XOR_EXPR: case LSHIFT_EXPR: case RSHIFT_EXPR: case LROTATE_EXPR: case RROTATE_EXPR: case PREINCREMENT_EXPR: case PREDECREMENT_EXPR: case POSTINCREMENT_EXPR: case POSTDECREMENT_EXPR: if (flags & tf_error) error ("invalid operation on uninstantiated type"); return global_trees[TI_ERROR_MARK]; case TRUTH_AND_EXPR: case TRUTH_OR_EXPR: case TRUTH_XOR_EXPR: case LT_EXPR: case LE_EXPR: case GT_EXPR: case GE_EXPR: case EQ_EXPR: case NE_EXPR: case TRUTH_ANDIF_EXPR: case TRUTH_ORIF_EXPR: case TRUTH_NOT_EXPR: if (flags & tf_error) error ("not enough type information"); return global_trees[TI_ERROR_MARK]; case COND_EXPR: if (type_unknown_p (__extension__ (*({const tree __t = __extension__ ({ const tree __t = (rhs); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 6112, __FUNCTION__); __t; }); const int __i = (0); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 6112, __FUNCTION__); &__t->exp.operands[__i]; })))) { if (flags & tf_error) error ("not enough type information"); return global_trees[TI_ERROR_MARK]; } __extension__ (*({const tree __t = __extension__ ({ const tree __t = (rhs); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 6118, __FUNCTION__); __t; }); const int __i = (1); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 6118, __FUNCTION__); &__t->exp.operands[__i]; })) = instantiate_type (lhstype, __extension__ (*({const tree __t = __extension__ ({ const tree __t = (rhs); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 6119, __FUNCTION__); __t; }); const int __i = (1); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 6119, __FUNCTION__); &__t->exp.operands[__i]; })), flags); if (__extension__ (*({const tree __t = __extension__ ({ const tree __t = (rhs); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 6120, __FUNCTION__); __t; }); const int __i = (1); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 6120, __FUNCTION__); &__t->exp.operands[__i]; })) == global_trees[TI_ERROR_MARK]) return global_trees[TI_ERROR_MARK]; __extension__ (*({const tree __t = __extension__ ({ const tree __t = (rhs); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 6122, __FUNCTION__); __t; }); const int __i = (2); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 6122, __FUNCTION__); &__t->exp.operands[__i]; })) = instantiate_type (lhstype, __extension__ (*({const tree __t = __extension__ ({ const tree __t = (rhs); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 6123, __FUNCTION__); __t; }); const int __i = (2); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 6123, __FUNCTION__); &__t->exp.operands[__i]; })), flags); if (__extension__ (*({const tree __t = __extension__ ({ const tree __t = (rhs); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 6124, __FUNCTION__); __t; }); const int __i = (2); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 6124, __FUNCTION__); &__t->exp.operands[__i]; })) == global_trees[TI_ERROR_MARK]) return global_trees[TI_ERROR_MARK]; ((rhs)->common.type) = lhstype; return rhs; case MODIFY_EXPR: __extension__ (*({const tree __t = __extension__ ({ const tree __t = (rhs); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 6131, __FUNCTION__); __t; }); const int __i = (1); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 6131, __FUNCTION__); &__t->exp.operands[__i]; })) = instantiate_type (lhstype, __extension__ (*({const tree __t = __extension__ ({ const tree __t = (rhs); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 6132, __FUNCTION__); __t; }); const int __i = (1); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 6132, __FUNCTION__); &__t->exp.operands[__i]; })), flags); if (__extension__ (*({const tree __t = __extension__ ({ const tree __t = (rhs); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 6133, __FUNCTION__); __t; }); const int __i = (1); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 6133, __FUNCTION__); &__t->exp.operands[__i]; })) == global_trees[TI_ERROR_MARK]) return global_trees[TI_ERROR_MARK]; ((rhs)->common.type) = lhstype; return rhs; case ADDR_EXPR: { if (((__extension__ ({ const tree __t = ((rhs)); if (((enum tree_code) (__t)->common.code) != (ADDR_EXPR) && ((enum tree_code) (__t)->common.code) != (OFFSET_REF)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6141, __FUNCTION__, (ADDR_EXPR), (OFFSET_REF), 0); __t; }))->common.lang_flag_0)) flags |= tf_ptrmem_ok; return instantiate_type (lhstype, __extension__ (*({const tree __t = __extension__ ({ const tree __t = (rhs); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 6144, __FUNCTION__); __t; }); const int __i = (0); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 6144, __FUNCTION__); &__t->exp.operands[__i]; })), flags); } case ERROR_MARK: return global_trees[TI_ERROR_MARK]; default: (fancy_abort ("../../gcc/gcc/cp/class.c", 6151, __FUNCTION__)); } return global_trees[TI_ERROR_MARK]; } static tree get_vfield_name (tree type) { tree binfo, base_binfo; char *buf; for (binfo = (__extension__ ({ const tree __t = (type); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6168, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo); ((VEC_tree_length((&__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6169, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.base_binfos)))); binfo = base_binfo) { base_binfo = ((VEC_tree_index((&__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6172, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.base_binfos),(0) ,"../../gcc/gcc/cp/class.c",6172,__FUNCTION__))); if ((__extension__ ({ const tree __t = (base_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6174, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag) || !((((((__extension__ ({ const tree __t = (base_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6175, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type))->common.lang_flag_2)) || (((((__extension__ ({ const tree __t = (base_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6175, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type))->common.lang_flag_3)))) break; } type = ((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6179, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type); buf = __builtin_alloca(sizeof ("_vptr.%s") + ((__extension__ ({ const tree __t = (((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 6180, __FUNCTION__); __t; })->type.name)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 6180, __FUNCTION__); __t; })->decl.name))); if (((enum tree_code) (__t)->common.code) != (IDENTIFIER_NODE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6180, __FUNCTION__, (IDENTIFIER_NODE), 0); __t; })->identifier.id.len)) + 2); sprintf (buf, "_vptr.%s", ((const char *) __extension__ ({ const tree __t = (constructor_name (type)); if (((enum tree_code) (__t)->common.code) != (IDENTIFIER_NODE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6182, __FUNCTION__, (IDENTIFIER_NODE), 0); __t; })->identifier.id.str)); return (__builtin_constant_p (buf) ? get_identifier_with_length ((buf), strlen (buf)) : get_identifier (buf)); } void print_class_statistics (void) { } void build_self_reference (void) { tree name = constructor_name (scope_chain->class_type); tree value = build_lang_decl (TYPE_DECL, name, scope_chain->class_type); tree saved_cas; (__extension__ ({ const tree __t = (value); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 6215, __FUNCTION__); __t; })->decl.nonlocal_flag) = 1; (__extension__ ({ const tree __t = (value); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 6216, __FUNCTION__); __t; })->decl.context) = scope_chain->class_type; (__extension__ ({ const tree __t = (value); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 6217, __FUNCTION__); __t; })->decl.artificial_flag) = 1; ((__extension__ ({ const tree __t = (value); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 6218, __FUNCTION__); __t; })->decl.lang_flag_4) = 1); if (scope_chain->x_processing_template_decl) value = push_template_decl (value); saved_cas = scope_chain->access_specifier; scope_chain->access_specifier = global_trees[TI_PUBLIC]; finish_member_declaration (value); scope_chain->access_specifier = saved_cas; } int is_empty_class (tree type) { if (type == global_trees[TI_ERROR_MARK]) return 0; if (! (((enum tree_code) (type)->common.code) == TEMPLATE_TYPE_PARM || ((enum tree_code) (type)->common.code) == TYPENAME_TYPE || ((enum tree_code) (type)->common.code) == TYPEOF_TYPE || ((enum tree_code) (type)->common.code) == BOUND_TEMPLATE_TEMPLATE_PARM || (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 6237, __FUNCTION__); __t; })->type.lang_flag_5))) return 0; if ((flag_abi_version == 0 || flag_abi_version >= (2))) return (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 6243, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 6243, __FUNCTION__); <->u.c; })->empty_p); else return integer_zerop ((__extension__ ({ const tree __t = ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 6245, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 6245, __FUNCTION__); <->u.c; })->as_base)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 6245, __FUNCTION__); __t; })->type.size)); } static unsigned char contains_empty_class_p (tree type) { if (is_empty_class (type)) return 1; if ((((((enum tree_code) (type)->common.code)) == RECORD_TYPE || (((enum tree_code) (type)->common.code)) == UNION_TYPE) && (((enum tree_code) (type)->common.code) == TEMPLATE_TYPE_PARM || ((enum tree_code) (type)->common.code) == TYPENAME_TYPE || ((enum tree_code) (type)->common.code) == TYPEOF_TYPE || ((enum tree_code) (type)->common.code) == BOUND_TEMPLATE_TEMPLATE_PARM || (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 6255, __FUNCTION__); __t; })->type.lang_flag_5)))) { tree field; tree binfo; tree base_binfo; int i; for (binfo = (__extension__ ({ const tree __t = (type); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6262, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo), i = 0; ((VEC_tree_iterate((&__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6263, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.base_binfos),(i),&((base_binfo))))); ++i) if (contains_empty_class_p (((__extension__ ({ const tree __t = (base_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6264, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type))) return 1; for (field = (__extension__ ({ const tree __t = (type); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6266, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.values); field; field = ((field)->common.chain)) if (((enum tree_code) (field)->common.code) == FIELD_DECL && !(__extension__ ({ const tree __t = (field); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 6268, __FUNCTION__); __t; })->decl.artificial_flag) && is_empty_class (((field)->common.type))) return 1; } else if (((enum tree_code) (type)->common.code) == ARRAY_TYPE) return contains_empty_class_p (((type)->common.type)); return 0; } tree get_enclosing_class (tree type) { tree node = type; while (node && ((enum tree_code) (node)->common.code) != NAMESPACE_DECL) { switch (tree_code_type[(int) (((enum tree_code) (node)->common.code))]) { case 'd': node = (__extension__ ({ const tree __t = (node); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 6290, __FUNCTION__); __t; })->decl.context); break; case 't': if (node != type) return node; node = (__extension__ ({ const tree __t = (node); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 6296, __FUNCTION__); __t; })->type.context); break; default: (fancy_abort ("../../gcc/gcc/cp/class.c", 6300, __FUNCTION__)); } } return (tree) ((void *)0); } void maybe_note_name_used_in_class (tree name, tree decl) { splay_tree names_used; if (!(innermost_scope_kind() == sk_class && (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (scope_chain->class_type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 6316, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 6316, __FUNCTION__); <->u.c; })->being_defined))) return; if (lookup_member (scope_chain->class_type, name, 0, 0)) return; if (!current_class_stack[current_class_depth - 1].names_used) current_class_stack[current_class_depth - 1].names_used = splay_tree_new (splay_tree_compare_pointers, 0, 0); names_used = current_class_stack[current_class_depth - 1].names_used; splay_tree_insert (names_used, (splay_tree_key) name, (splay_tree_value) decl); } void note_name_declared_in_class (tree name, tree decl) { splay_tree names_used; splay_tree_node n; names_used = current_class_stack[current_class_depth - 1].names_used; if (!names_used) return; n = splay_tree_lookup (names_used, (splay_tree_key) name); if (n) { error ("declaration of `%#D'", decl); cp_error_at ("changes meaning of `%D' from `%+#D'", (__extension__ ({ const tree __t = (((((enum tree_code) (decl)->common.code) == OVERLOAD) ? (((struct tree_overload*)__extension__ ({ const tree __t = (decl); if (((enum tree_code) (__t)->common.code) != (OVERLOAD)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6360, __FUNCTION__, (OVERLOAD), 0); __t; }))->function) : (decl))); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 6360, __FUNCTION__); __t; })->decl.name), (tree) n->value); } } tree get_vtbl_decl_for_binfo (tree binfo) { tree decl; decl = (__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6374, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vtable); if (decl && ((enum tree_code) (decl)->common.code) == PLUS_EXPR) { ((void)(!(((enum tree_code) (__extension__ (*({const tree __t = __extension__ ({ const tree __t = (decl); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 6377, __FUNCTION__); __t; }); const int __i = (0); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 6377, __FUNCTION__); &__t->exp.operands[__i]; })))->common.code) == ADDR_EXPR) ? fancy_abort ("../../gcc/gcc/cp/class.c", 6377, __FUNCTION__), 0 : 0)); decl = __extension__ (*({const tree __t = __extension__ ({ const tree __t = (__extension__ (*({const tree __t = __extension__ ({ const tree __t = (decl); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 6378, __FUNCTION__); __t; }); const int __i = (0); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 6378, __FUNCTION__); &__t->exp.operands[__i]; }))); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 6378, __FUNCTION__); __t; }); const int __i = (0); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 6378, __FUNCTION__); &__t->exp.operands[__i]; })); } if (decl) ((void)(!(((enum tree_code) (decl)->common.code) == VAR_DECL) ? fancy_abort ("../../gcc/gcc/cp/class.c", 6381, __FUNCTION__), 0 : 0)); return decl; } tree get_primary_binfo (tree binfo) { tree primary_base; tree result; primary_base = (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6398, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 6398, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 6398, __FUNCTION__); <->u.c; })->primary_base); if (!primary_base) return (tree) ((void *)0); result = copied_binfo (primary_base, binfo); return result; } static int maybe_indent_hierarchy (FILE * stream, int indent, int indented_p) { if (!indented_p) fprintf (stream, "%*s", indent, ""); return 1; } static tree dump_class_hierarchy_r (FILE *stream, int flags, tree binfo, tree igo, int indent) { int indented = 0; tree base_binfo; int i; indented = maybe_indent_hierarchy (stream, indent, 0); fprintf (stream, "%s (0x%lx) ", type_as_string (((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6434, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type), (0)), (unsigned long) binfo); if (binfo != igo) { fprintf (stream, "alternative-path\n"); return igo; } igo = ((binfo)->common.chain); fprintf (stream, "%" "l" "d", tree_low_cst ((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6444, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.offset), 0)); if (is_empty_class (((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6445, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type))) fprintf (stream, " empty"); else if ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6447, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 6447, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 6447, __FUNCTION__); <->u.c; })->nearly_empty_p)) fprintf (stream, " nearly-empty"); if ((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6449, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag)) fprintf (stream, " virtual"); fprintf (stream, "\n"); indented = 0; if (((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6454, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_5)) { indented = maybe_indent_hierarchy (stream, indent + 3, indented); fprintf (stream, " primary-for %s (0x%lx)", type_as_string (((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6458, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.inheritance)); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6458, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type), (0)), (unsigned long)(__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6460, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.inheritance)); } if (((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6462, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_4)) { indented = maybe_indent_hierarchy (stream, indent + 3, indented); fprintf (stream, " lost-primary"); } if (indented) fprintf (stream, "\n"); if (!(flags & (1 << 1))) { int indented = 0; if ((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6474, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vtt_subvtt)) { indented = maybe_indent_hierarchy (stream, indent + 3, indented); fprintf (stream, " subvttidx=%s", expr_as_string ((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6478, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vtt_subvtt), (0))); } if ((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6481, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vtt_vptr)) { indented = maybe_indent_hierarchy (stream, indent + 3, indented); fprintf (stream, " vptridx=%s", expr_as_string ((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6485, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vtt_vptr), (0))); } if ((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6488, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vptr_field)) { indented = maybe_indent_hierarchy (stream, indent + 3, indented); fprintf (stream, " vbaseoffset=%s", expr_as_string ((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6492, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vptr_field), (0))); } if ((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6495, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vtable)) { indented = maybe_indent_hierarchy (stream, indent + 3, indented); fprintf (stream, " vptr=%s", expr_as_string ((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6499, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vtable), (0))); } if (indented) fprintf (stream, "\n"); } for (i = 0; ((VEC_tree_iterate((&__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6507, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.base_binfos),(i),&((base_binfo))))); i++) igo = dump_class_hierarchy_r (stream, flags, base_binfo, igo, indent + 2); return igo; } static void dump_class_hierarchy_1 (FILE *stream, int flags, tree t) { fprintf (stream, "Class %s\n", type_as_string (t, (0))); fprintf (stream, " size=%lu align=%lu\n", (unsigned long)(tree_low_cst ((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 6520, __FUNCTION__); __t; })->type.size), 0) / 8), (unsigned long)((__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 6521, __FUNCTION__); __t; })->type.align) / 8)); fprintf (stream, " base size=%lu base align=%lu\n", (unsigned long)(tree_low_cst ((__extension__ ({ const tree __t = ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 6523, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 6523, __FUNCTION__); <->u.c; })->as_base)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 6523, __FUNCTION__); __t; })->type.size), 0) / 8), (unsigned long)((__extension__ ({ const tree __t = ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 6525, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 6525, __FUNCTION__); <->u.c; })->as_base)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 6525, __FUNCTION__); __t; })->type.align) / 8)); dump_class_hierarchy_r (stream, flags, (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6527, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo), (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6527, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo), 0); fprintf (stream, "\n"); } extern void debug_class (tree t) { dump_class_hierarchy_1 (stderr, (1 << 1), t); } static void dump_class_hierarchy (tree t) { int flags; FILE *stream = dump_begin (TDI_class, &flags); if (stream) { dump_class_hierarchy_1 (stream, flags, t); dump_end (TDI_class, stream); } } static void dump_array (FILE * stream, tree decl) { tree inits; int ix; long elt; tree size = (__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (((decl)->common.type)); if (((enum tree_code) (__t)->common.code) != (ARRAY_TYPE) && ((enum tree_code) (__t)->common.code) != (SET_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6558, __FUNCTION__, (ARRAY_TYPE), (SET_TYPE), 0); __t; })->type.values)); if (((enum tree_code) (__t)->common.code) != (INTEGER_TYPE) && ((enum tree_code) (__t)->common.code) != (ENUMERAL_TYPE) && ((enum tree_code) (__t)->common.code) != (BOOLEAN_TYPE) && ((enum tree_code) (__t)->common.code) != (CHAR_TYPE) && ((enum tree_code) (__t)->common.code) != (REAL_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6558, __FUNCTION__, (INTEGER_TYPE), (ENUMERAL_TYPE), (BOOLEAN_TYPE), (CHAR_TYPE), (REAL_TYPE), 0); __t; })->type.maxval); elt = (tree_low_cst ((__extension__ ({ const tree __t = (((((decl)->common.type))->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 6560, __FUNCTION__); __t; })->type.size), 0) / 8); fprintf (stream, "%s:", decl_as_string (decl, (0))); fprintf (stream, " %s entries", expr_as_string (size_binop (PLUS_EXPR, size, global_trees[TI_SIZE_ONE]), (0))); fprintf (stream, "\n"); for (ix = 0, inits = __extension__ (*({const tree __t = ((__extension__ ({ const tree __t = (decl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 6568, __FUNCTION__); __t; })->decl.initial)); const int __i = (0); if (((enum tree_code) (__t)->common.code) != CONSTRUCTOR) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6568, __FUNCTION__, (CONSTRUCTOR), 0); if (__i < 0 || __i >= tree_code_length[(int) (CONSTRUCTOR)]) tree_operand_check_failed (__i, (CONSTRUCTOR), "../../gcc/gcc/cp/class.c", 6568, __FUNCTION__); &__t->exp.operands[__i]; })); inits; ix++, inits = ((inits)->common.chain)) fprintf (stream, "%-4ld %s\n", (long)(ix * elt), expr_as_string ((__extension__ ({ const tree __t = (inits); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6571, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value), (0))); } static void dump_vtable (tree t, tree binfo, tree vtable) { int flags; FILE *stream = dump_begin (TDI_class, &flags); if (!stream) return; if (!(flags & (1 << 1))) { int ctor_vtbl_p = (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6585, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo) != binfo; fprintf (stream, "%s for %s", ctor_vtbl_p ? "Construction vtable" : "Vtable", type_as_string (((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6589, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type), (0))); if (ctor_vtbl_p) { if (!(__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6592, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag)) fprintf (stream, " (0x%lx instance)", (unsigned long)binfo); fprintf (stream, " in %s", type_as_string (t, (0))); } fprintf (stream, "\n"); dump_array (stream, vtable); fprintf (stream, "\n"); } dump_end (TDI_class, stream); } static void dump_vtt (tree t, tree vtt) { int flags; FILE *stream = dump_begin (TDI_class, &flags); if (!stream) return; if (!(flags & (1 << 1))) { fprintf (stream, "VTT for %s\n", type_as_string (t, (0))); dump_array (stream, vtt); fprintf (stream, "\n"); } dump_end (TDI_class, stream); } static void dump_thunk (FILE *stream, int indent, tree thunk) { static const char spaces[] = " "; tree name = (__extension__ ({ const tree __t = (thunk); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 6630, __FUNCTION__); __t; })->decl.name); tree thunks; fprintf (stream, "%.*s%p %s %s", indent, spaces, (void *)thunk, !(((enum tree_code) (thunk)->common.code) == FUNCTION_DECL && (__extension__ ({ const tree __t = (thunk); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 6635, __FUNCTION__); __t; })->decl.lang_flag_7)) ? "function" : ((((enum tree_code) (thunk)->common.code) == FUNCTION_DECL && (__extension__ ({ const tree __t = (thunk); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 6636, __FUNCTION__); __t; })->decl.lang_flag_7)) && (__extension__ ({ const tree __t = (thunk); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 6636, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.this_thunk_p) ? "this-thunk" : "covariant-thunk", name ? ((const char *) __extension__ ({ const tree __t = (name); if (((enum tree_code) (__t)->common.code) != (IDENTIFIER_NODE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6637, __FUNCTION__, (IDENTIFIER_NODE), 0); __t; })->identifier.id.str) : "<unset>"); if ((((enum tree_code) (thunk)->common.code) == FUNCTION_DECL && (__extension__ ({ const tree __t = (thunk); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 6638, __FUNCTION__); __t; })->decl.lang_flag_7))) { long fixed_adjust = ((__extension__ ({ const tree __t = (__extension__ ({ const tree __t = (thunk); if (((enum tree_code) (__t)->common.code) != (VAR_DECL) && ((enum tree_code) (__t)->common.code) != (FUNCTION_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6640, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL), 0); __t; })); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 6640, __FUNCTION__); __t; })->decl.lang_specific)->u.f.fixed_offset); tree virtual_adjust = (__extension__ ({ struct lang_decl *lt = (__extension__ ({ const tree __t = (__extension__ ({ const tree __t = (thunk); if (((enum tree_code) (__t)->common.code) != (FUNCTION_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6641, __FUNCTION__, (FUNCTION_DECL), 0); __t; })); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 6641, __FUNCTION__); __t; })->decl.lang_specific); if (lt->decl_flags.u2sel != 0) lang_check_failed ("../../gcc/gcc/cp/class.c", 6641, __FUNCTION__); <->decl_flags.u2; })->access); fprintf (stream, " fixed=" "%" "l" "d", fixed_adjust); if (!virtual_adjust) ; else if (((((enum tree_code) (thunk)->common.code) == FUNCTION_DECL && (__extension__ ({ const tree __t = (thunk); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 6646, __FUNCTION__); __t; })->decl.lang_flag_7)) && (__extension__ ({ const tree __t = (thunk); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 6646, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.this_thunk_p)) fprintf (stream, " vcall=" "%" "l" "d", tree_low_cst (virtual_adjust, 0)); else fprintf (stream, " vbase=" "%" "l" "d" "(%s)", tree_low_cst ((__extension__ ({ const tree __t = (virtual_adjust); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6651, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vptr_field), 0), type_as_string (((__extension__ ({ const tree __t = (virtual_adjust); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6652, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type), (1))); if (((__extension__ ({ const tree __t = (__extension__ ({ const tree __t = (thunk); if (((enum tree_code) (__t)->common.code) != (FUNCTION_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6653, __FUNCTION__, (FUNCTION_DECL), 0); __t; })); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 6653, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.u.template_info)) fprintf (stream, " alias to %p", (void *)((__extension__ ({ const tree __t = (__extension__ ({ const tree __t = (thunk); if (((enum tree_code) (__t)->common.code) != (FUNCTION_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6654, __FUNCTION__, (FUNCTION_DECL), 0); __t; })); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 6654, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.u.template_info)); } fprintf (stream, "\n"); for (thunks = ((__extension__ ({ const tree __t = (thunk); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 6657, __FUNCTION__); __t; })->decl.lang_specific)->u.f.context); thunks; thunks = ((thunks)->common.chain)) dump_thunk (stream, indent + 2, thunks); } extern void debug_thunks (tree fn) { dump_thunk (stderr, 0, fn); } static void finish_vtbls (tree t) { tree list; tree vbase; list = build_tree_list_stat((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6682, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo)); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6682, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vtable),(tree) ((void *)0) ); accumulate_vtbl_inits ((__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6683, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo), (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6683, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo), (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6684, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo), t, list); for (vbase = (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6687, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo); vbase; vbase = ((vbase)->common.chain)) { if (!(__extension__ ({ const tree __t = (vbase); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6689, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag)) continue; accumulate_vtbl_inits (vbase, vbase, (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6691, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo), t, list); } if ((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6694, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo)); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6694, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vtable)) initialize_vtable ((__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6695, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo), (__extension__ ({ const tree __t = (list); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6695, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value)); } static void initialize_vtable (tree binfo, tree inits) { tree decl; layout_vtable_decl (binfo, list_length (inits)); decl = get_vtbl_decl_for_binfo (binfo); initialize_artificial_var (decl, inits); dump_vtable (((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6708, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type), binfo, decl); } static void build_vtt (tree t) { tree inits; tree type; tree vtt; tree index; inits = (tree) ((void *)0); index = global_trees[TI_SIZE_ZERO]; build_vtt_inits ((__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6735, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo), t, &inits, &index); if (!inits) return; type = build_index_type (size_int_kind (list_length (inits) - 1, SIZETYPE)); type = build_cplus_array_type (global_trees[TI_CONST_PTR_TYPE], type); vtt = build_vtable (t, get_vtt_name (t), type); initialize_artificial_var (vtt, inits); ((vtt)->common.chain) = (((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 6749, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 6749, __FUNCTION__); <->u.c; })->vtables))->common.chain); (((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 6750, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 6750, __FUNCTION__); <->u.c; })->vtables))->common.chain) = vtt; dump_vtt (t, vtt); } static tree binfo_ctor_vtable (tree binfo) { tree vt; while (1) { vt = (__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6767, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vtable); if (((enum tree_code) (vt)->common.code) == TREE_LIST) vt = (__extension__ ({ const tree __t = (vt); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6769, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value); if (((enum tree_code) (vt)->common.code) == TREE_BINFO) binfo = vt; else break; } return vt; } static tree * build_vtt_inits (tree binfo, tree t, tree* inits, tree* index) { int i; tree b; tree init; tree secondary_vptrs; int top_level_p = comptypes ((((binfo)->common.type)), (t), 0); if (!(((((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6797, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type))->common.lang_flag_3))) return inits; if (!top_level_p) { build_ctor_vtbl_group (binfo, t); (__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6807, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vtt_subvtt) = *index; } init = binfo_ctor_vtable (binfo); *inits = build_tree_list_stat((tree) ((void *)0),init ); inits = &((*inits)->common.chain); if (top_level_p) { ((void)(!(!(__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6816, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vtt_vptr)) ? fancy_abort ("../../gcc/gcc/cp/class.c", 6816, __FUNCTION__), 0 : 0)); (__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6817, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vtt_vptr) = *index; } *index = size_binop (PLUS_EXPR, *index, (__extension__ ({ const tree __t = (global_trees[TI_PTR_TYPE]); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 6819, __FUNCTION__); __t; })->type.size_unit)); for (i = 0; ((VEC_tree_iterate((&__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6822, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.base_binfos),(i),&((b))))); ++i) if (!(__extension__ ({ const tree __t = (b); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6823, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag)) inits = build_vtt_inits (((VEC_tree_index((&__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6824, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.base_binfos),(i) ,"../../gcc/gcc/cp/class.c",6824,__FUNCTION__))), t, inits, index); secondary_vptrs = tree_cons_stat (t,(tree) ((void *)0),((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6829, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type) ); ((secondary_vptrs)->common.type) = *index; (__extension__ ({ const tree __t = (secondary_vptrs); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6831, __FUNCTION__, (TREE_LIST), 0); __t; })->common.unsigned_flag) = top_level_p; ((secondary_vptrs)->common.used_flag) = 0; dfs_walk_real (binfo, dfs_build_secondary_vptr_vtt_inits, ((void *)0), dfs_ctor_vtable_bases_queue_p, secondary_vptrs); ((secondary_vptrs)->common.used_flag) = 1; dfs_walk (binfo, dfs_unmark, dfs_ctor_vtable_bases_queue_p, secondary_vptrs); *index = ((secondary_vptrs)->common.type); secondary_vptrs = (__extension__ ({ const tree __t = (secondary_vptrs); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6848, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value); if (secondary_vptrs) { *inits = nreverse (secondary_vptrs); inits = &((secondary_vptrs)->common.chain); ((void)(!(*inits == (tree) ((void *)0)) ? fancy_abort ("../../gcc/gcc/cp/class.c", 6853, __FUNCTION__), 0 : 0)); } if (top_level_p) for (b = (__extension__ ({ const tree __t = (((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6858, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6858, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo); b; b = ((b)->common.chain)) { if (!(__extension__ ({ const tree __t = (b); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6860, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag)) continue; inits = build_vtt_inits (b, t, inits, index); } if (!top_level_p) { tree data = tree_cons_stat (t,binfo,(tree) ((void *)0) ); (__extension__ ({ const tree __t = (data); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6869, __FUNCTION__, (TREE_LIST), 0); __t; })->common.unsigned_flag) = 0; ((data)->common.used_flag) = 0; dfs_walk (binfo, dfs_fixup_binfo_vtbls, dfs_ctor_vtable_bases_queue_p, data); } return inits; } static tree dfs_build_secondary_vptr_vtt_inits (tree binfo, void *data) { tree l; tree t; tree init; tree index; int top_level_p; l = (tree) data; t = ((l)->common.chain); top_level_p = (__extension__ ({ const tree __t = (l); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6896, __FUNCTION__, (TREE_LIST), 0); __t; })->common.unsigned_flag); ((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6898, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_0) = 1; if (!(__extension__ ({ const tree __t = (((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6901, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6901, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.minval)) return (tree) ((void *)0); if (comptypes ((((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6905, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)), (t), 0)) return (tree) ((void *)0); if (!(__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6909, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag) && ((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6909, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_5)) return (tree) ((void *)0); if (!(((((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6914, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type))->common.lang_flag_3)) && !binfo_via_virtual (binfo, t)) return (tree) ((void *)0); index = ((l)->common.type); if (top_level_p) { ((void)(!(!(__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6922, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vtt_vptr)) ? fancy_abort ("../../gcc/gcc/cp/class.c", 6922, __FUNCTION__), 0 : 0)); (__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6923, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vtt_vptr) = index; } ((l)->common.type) = size_binop (PLUS_EXPR, index, (__extension__ ({ const tree __t = (global_trees[TI_PTR_TYPE]); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 6926, __FUNCTION__); __t; })->type.size_unit)); if (top_level_p && (__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6929, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag)) { while (((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6934, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_5)) binfo = (__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6935, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.inheritance); } init = binfo_ctor_vtable (binfo); (__extension__ ({ const tree __t = (l); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6938, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value) = tree_cons_stat ((tree) ((void *)0),init,(__extension__ ({ const tree __t = (l); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6938, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value) ); return (tree) ((void *)0); } static tree dfs_ctor_vtable_bases_queue_p (tree derived, int ix, void* data) { tree binfo = ((VEC_tree_index((&__extension__ ({ const tree __t = (derived); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6952, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.base_binfos),(ix) ,"../../gcc/gcc/cp/class.c",6952,__FUNCTION__))); if (!((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6954, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_0) == (((tree) data)->common.used_flag)) return (tree) ((void *)0); return binfo; } static tree dfs_fixup_binfo_vtbls (tree binfo, void* data) { ((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6967, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_0) = 0; if (!(__extension__ ({ const tree __t = (((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6970, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6970, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.minval)) return (tree) ((void *)0); if ((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6975, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vtable) && ((enum tree_code) ((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6976, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vtable))->common.code) == TREE_LIST && ((__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6977, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vtable)); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6977, __FUNCTION__, (TREE_LIST), 0); __t; })->list.purpose) == (__extension__ ({ const tree __t = ((tree) data); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6978, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value))) (__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6979, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vtable) = (((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 6979, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vtable))->common.chain); return (tree) ((void *)0); } static void build_ctor_vtbl_group (tree binfo, tree t) { tree list; tree type; tree vtbl; tree inits; tree id; tree vbase; id = mangle_ctor_vtbl_for_type (t, binfo); if (namespace_binding ((id), global_namespace)) return; ((void)(!(!comptypes ((((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7002, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)), (t), 0)) ? fancy_abort ("../../gcc/gcc/cp/class.c", 7002, __FUNCTION__), 0 : 0)); vtbl = build_vtable (t, id, global_trees[TI_PTR_TYPE]); ((__extension__ ({ const tree __t = (vtbl); if (((enum tree_code) (__t)->common.code) != (VAR_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7007, __FUNCTION__, (VAR_DECL), 0); __t; }))->common.lang_flag_6) = 1; list = build_tree_list_stat(vtbl,(tree) ((void *)0) ); accumulate_vtbl_inits (binfo, (__extension__ ({ const tree __t = (((binfo)->common.type)); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7009, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo), binfo, t, list); for (vbase = (__extension__ ({ const tree __t = (((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7014, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7014, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo); vbase; vbase = ((vbase)->common.chain)) { tree b; if (!(__extension__ ({ const tree __t = (vbase); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7020, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag)) continue; b = copied_binfo (vbase, binfo); accumulate_vtbl_inits (b, vbase, binfo, t, list); } inits = (__extension__ ({ const tree __t = (list); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7026, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value); type = build_index_type (size_int_kind (list_length (inits) - 1, SIZETYPE)); type = build_cplus_array_type (cp_global_trees[CPTI_VTABLE_ENTRY_TYPE], type); ((vtbl)->common.type) = type; (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 7034, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 7034, __FUNCTION__); <->u.c; })->vtables) = chainon ((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 7034, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 7034, __FUNCTION__); <->u.c; })->vtables), vtbl); initialize_artificial_var (vtbl, inits); dump_vtable (t, binfo, vtbl); } static void accumulate_vtbl_inits (tree binfo, tree orig_binfo, tree rtti_binfo, tree t, tree inits) { int i; tree base_binfo; int ctor_vtbl_p = !comptypes ((((__extension__ ({ const tree __t = (rtti_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7058, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)), (t), 0); ((void)(!(comptypes ((((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7060, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)), (((__extension__ ({ const tree __t = (orig_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7060, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)), 0)) ? fancy_abort ("../../gcc/gcc/cp/class.c", 7060, __FUNCTION__), 0 : 0)); if (!((((((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7063, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type))->common.lang_flag_2)) || (((((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7063, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type))->common.lang_flag_3)))) return; if (ctor_vtbl_p && !(((((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7069, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type))->common.lang_flag_3)) && !binfo_via_virtual (orig_binfo, ((__extension__ ({ const tree __t = (rtti_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7070, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type))) return; (__extension__ ({ const tree __t = (inits); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7074, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value) = chainon ((__extension__ ({ const tree __t = (inits); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7075, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value), dfs_accumulate_vtbl_inits (binfo, orig_binfo, rtti_binfo, t, inits)); for (i = 0; ((VEC_tree_iterate((&__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7084, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.base_binfos),(i),&((base_binfo))))); ++i) { if ((__extension__ ({ const tree __t = (base_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7087, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag)) continue; accumulate_vtbl_inits (base_binfo, ((VEC_tree_index((&__extension__ ({ const tree __t = (orig_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7090, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.base_binfos),(i) ,"../../gcc/gcc/cp/class.c",7090,__FUNCTION__))), rtti_binfo, t, inits); } } static tree dfs_accumulate_vtbl_inits (tree binfo, tree orig_binfo, tree rtti_binfo, tree t, tree l) { tree inits = (tree) ((void *)0); tree vtbl = (tree) ((void *)0); int ctor_vtbl_p = !comptypes ((((__extension__ ({ const tree __t = (rtti_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7108, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)), (t), 0); if (ctor_vtbl_p && (__extension__ ({ const tree __t = (orig_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7111, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag) && ((__extension__ ({ const tree __t = (orig_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7111, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_5)) { tree b; tree last = (tree) ((void *)0); b = binfo; while (((__extension__ ({ const tree __t = (b); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7134, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_5)) { b = (__extension__ ({ const tree __t = (b); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7136, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.inheritance); last = b; if ((__extension__ ({ const tree __t = (b); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7138, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag) || b == rtti_binfo) goto found; } for (b = last; b; b = (__extension__ ({ const tree __t = (b); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7143, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.inheritance)) if ((__extension__ ({ const tree __t = (b); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7144, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag) || b == rtti_binfo) break; found: if (b == rtti_binfo || (b && binfo_for_vbase (((__extension__ ({ const tree __t = (b); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7153, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type), ((__extension__ ({ const tree __t = (rtti_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7153, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)))) vtbl = last; } else if (!(((__extension__ ({ const tree __t = (orig_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7161, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_2))) return inits; if (!vtbl) { tree index; int non_fn_entries; inits = build_vtbl_initializer (binfo, orig_binfo, t, rtti_binfo, &non_fn_entries); vtbl = (__extension__ ({ const tree __t = (l); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7174, __FUNCTION__, (TREE_LIST), 0); __t; })->list.purpose); vtbl = build1_stat (ADDR_EXPR,cp_global_trees[CPTI_VTBL_PTR_TYPE],vtbl ); index = size_binop (PLUS_EXPR, size_int_kind (non_fn_entries, SIZETYPE), size_int_kind (list_length ((__extension__ ({ const tree __t = (l); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7178, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value)), SIZETYPE)); index = size_binop (MULT_EXPR, (__extension__ ({ const tree __t = (cp_global_trees[CPTI_VTABLE_ENTRY_TYPE]); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 7180, __FUNCTION__); __t; })->type.size_unit), index); vtbl = build2_stat (PLUS_EXPR,((vtbl)->common.type),vtbl,index ); } if (ctor_vtbl_p) (__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7189, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vtable) = tree_cons_stat (rtti_binfo,vtbl,(__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7189, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vtable) ); else if (((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7190, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_5) && (__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7190, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag)) inits = (tree) ((void *)0); else (__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7194, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vtable) = vtbl; return inits; } static tree build_vtbl_initializer (tree binfo, tree orig_binfo, tree t, tree rtti_binfo, int* non_fn_entries_p) { tree v, b; tree vfun_inits; vtbl_init_data vid; unsigned ix; tree vbinfo; VEC_tree *vbases; memset (&vid, 0, sizeof (vid)); vid.binfo = binfo; vid.derived = t; vid.rtti_binfo = rtti_binfo; vid.last_init = &vid.inits; vid.primary_vtbl_p = (binfo == (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7242, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo)); vid.ctor_vtbl_p = !comptypes ((((__extension__ ({ const tree __t = (rtti_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7243, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)), (t), 0); vid.generate_vcall_entries = 1; vid.index = size_int_kind (-3 * 1, SSIZETYPE); build_rtti_vtbl_entries (binfo, &vid); vid.fns = varray_init (32, VARRAY_DATA_TREE, "fns"); build_vcall_and_vbase_vtbl_entries (binfo, &vid); for (vbases = (__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (t); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 7260, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 7260, __FUNCTION__); <->u.c; })->vbases), ix = 0; (VEC_tree_iterate(vbases,ix,&(vbinfo))); ix++) ((__extension__ ({ const tree __t = (vbinfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7262, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_1) = 0; if (1 > 1) { tree cur, *prev; for (prev = &vid.inits; (cur = *prev); prev = &((cur)->common.chain)) { tree add = cur; int i; for (i = 1; i < 1; ++i) add = tree_cons_stat ((tree) ((void *)0),build1_stat (NOP_EXPR,cp_global_trees[CPTI_VTABLE_ENTRY_TYPE],global_trees[TI_NULL_POINTER] ),add ); *prev = add; } } if (non_fn_entries_p) *non_fn_entries_p = list_length (vid.inits); vfun_inits = (tree) ((void *)0); for (v = (__extension__ ({ const tree __t = (orig_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7289, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.virtuals); v; v = ((v)->common.chain)) { tree delta; tree vcall_index; tree fn, fn_original; tree init = (tree) ((void *)0); fn = ((__extension__ ({ const tree __t = (v); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7296, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value)); fn_original = fn; if ((((enum tree_code) (fn)->common.code) == FUNCTION_DECL && (__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 7298, __FUNCTION__); __t; })->decl.lang_flag_7))) { if (!(__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 7300, __FUNCTION__); __t; })->decl.name)) finish_thunk (fn); if (((__extension__ ({ const tree __t = (__extension__ ({ const tree __t = (fn); if (((enum tree_code) (__t)->common.code) != (FUNCTION_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7302, __FUNCTION__, (FUNCTION_DECL), 0); __t; })); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 7302, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.u.template_info)) { fn = ((__extension__ ({ const tree __t = (__extension__ ({ const tree __t = (fn); if (((enum tree_code) (__t)->common.code) != (FUNCTION_DECL)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7304, __FUNCTION__, (FUNCTION_DECL), 0); __t; })); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 7304, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.u.template_info); ((__extension__ ({ const tree __t = (v); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7305, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value)) = fn; } fn_original = ((__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 7307, __FUNCTION__); __t; })->decl.lang_specific)->u.f.befriending_classes); } for (b = binfo; ; b = get_primary_binfo (b)) { if (look_for_overrides_here (((__extension__ ({ const tree __t = (b); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7323, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type), fn_original)) break; if (((__extension__ ({ const tree __t = (b); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7328, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_4)) { init = global_trees[TI_SIZE_ZERO]; break; } } if (! init) { delta = ((__extension__ ({ const tree __t = (v); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7339, __FUNCTION__, (TREE_LIST), 0); __t; })->list.purpose)); vcall_index = (((v)->common.type)); ((void)(!(((enum tree_code) (delta)->common.code) == INTEGER_CST) ? fancy_abort ("../../gcc/gcc/cp/class.c", 7342, __FUNCTION__), 0 : 0)); ((void)(!(((enum tree_code) (fn)->common.code) == FUNCTION_DECL) ? fancy_abort ("../../gcc/gcc/cp/class.c", 7343, __FUNCTION__), 0 : 0)); if (((__extension__ ({ const tree __t = (fn_original); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 7347, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.pure_virtual)) fn = cp_global_trees[CPTI_ABORT_FNDECL]; else if (!integer_zerop (delta) || vcall_index) { fn = make_thunk (fn, 1, delta, vcall_index); if (!(__extension__ ({ const tree __t = (fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 7352, __FUNCTION__); __t; })->decl.name)) finish_thunk (fn); } init = build1_stat (ADDR_EXPR,cp_global_trees[CPTI_VTABLE_ENTRY_TYPE],fn ); } if (0) { int i; if (init == global_trees[TI_SIZE_ZERO]) for (i = 0; i < 0; ++i) vfun_inits = tree_cons_stat ((tree) ((void *)0),init,vfun_inits ); else for (i = 0; i < 0; ++i) { tree fdesc = build2_stat (FDESC_EXPR,cp_global_trees[CPTI_VTABLE_ENTRY_TYPE],__extension__ (*({const tree __t = __extension__ ({ const tree __t = (init); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 7372, __FUNCTION__); __t; }); const int __i = (0); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 7372, __FUNCTION__); &__t->exp.operands[__i]; })),build_int_cst ((tree) ((void *)0), i) ); (__extension__ ({ const tree __t = (fdesc); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!((__c) != 't')) tree_class_check_failed (__t, 'T', "../../gcc/gcc/cp/class.c", 7373, __FUNCTION__); __t; })->common.constant_flag) = 1; ((fdesc)->common.invariant_flag) = 1; vfun_inits = tree_cons_stat ((tree) ((void *)0),fdesc,vfun_inits ); } } else vfun_inits = tree_cons_stat ((tree) ((void *)0),init,vfun_inits ); } vfun_inits = nreverse (vfun_inits); vid.inits = nreverse (vid.inits); return chainon (vid.inits, vfun_inits); } static void build_vcall_and_vbase_vtbl_entries (tree binfo, vtbl_init_data* vid) { tree b; b = get_primary_binfo (binfo); if (b) build_vcall_and_vbase_vtbl_entries (b, vid); build_vbase_offset_vtbl_entries (binfo, vid); build_vcall_offset_vtbl_entries (binfo, vid); } static void build_vbase_offset_vtbl_entries (tree binfo, vtbl_init_data* vid) { tree vbase; tree t; tree non_primary_binfo; if (!(((((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7428, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type))->common.lang_flag_3))) return; t = vid->derived; non_primary_binfo = binfo; while ((__extension__ ({ const tree __t = (non_primary_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7437, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.inheritance)) { tree b; if ((__extension__ ({ const tree __t = (non_primary_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7445, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag)) { non_primary_binfo = vid->binfo; break; } b = (__extension__ ({ const tree __t = (non_primary_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7451, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.inheritance); if (get_primary_binfo (b) != non_primary_binfo) break; non_primary_binfo = b; } for (vbase = (__extension__ ({ const tree __t = (((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7458, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7458, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo); vbase; vbase = ((vbase)->common.chain)) { tree b; tree delta; if (!(__extension__ ({ const tree __t = (vbase); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7465, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag)) continue; b = copied_binfo (vbase, binfo); if (((__extension__ ({ const tree __t = (b); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7474, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_1)) continue; ((__extension__ ({ const tree __t = (b); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7476, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_1) = 1; delta = size_binop (MULT_EXPR, vid->index, convert (sizetype_tab[(int) SSIZETYPE], (__extension__ ({ const tree __t = (cp_global_trees[CPTI_VTABLE_ENTRY_TYPE]); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 7482, __FUNCTION__); __t; })->type.size_unit))); if (vid->primary_vtbl_p) (__extension__ ({ const tree __t = (b); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7484, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vptr_field) = delta; if (binfo != (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7486, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo)) ((void)(!(tree_int_cst_equal (delta, (__extension__ ({ const tree __t = (vbase); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7488, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.vptr_field))) ? fancy_abort ("../../gcc/gcc/cp/class.c", 7488, __FUNCTION__), 0 : 0)); vid->index = size_binop (MINUS_EXPR, vid->index, size_int_kind (1, SSIZETYPE)); delta = size_diffop ((__extension__ ({ const tree __t = (b); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7498, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.offset), (__extension__ ({ const tree __t = (non_primary_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7498, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.offset)); *vid->last_init = build_tree_list_stat((tree) ((void *)0),fold (build1_stat (NOP_EXPR,cp_global_trees[CPTI_VTABLE_ENTRY_TYPE],delta )) ); vid->last_init = &((*vid->last_init)->common.chain); } } static void build_vcall_offset_vtbl_entries (tree binfo, vtbl_init_data* vid) { if ((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7519, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag) || binfo == (__extension__ ({ const tree __t = (vid->derived); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7519, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo)) { vid->vbase = binfo; if (!(__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7542, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag)) vid->generate_vcall_entries = 0; add_vcall_offset_vtbl_entries_r (binfo, vid); } } static void add_vcall_offset_vtbl_entries_r (tree binfo, vtbl_init_data* vid) { int i; tree primary_binfo; tree base_binfo; if ((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7562, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag) && vid->vbase != binfo) return; primary_binfo = get_primary_binfo (binfo); if (primary_binfo) add_vcall_offset_vtbl_entries_r (primary_binfo, vid); add_vcall_offset_vtbl_entries_1 (binfo, vid); for (i = 0; ((VEC_tree_iterate((&__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7574, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.base_binfos),(i),&((base_binfo))))); ++i) if (base_binfo != primary_binfo) add_vcall_offset_vtbl_entries_r (base_binfo, vid); } static void add_vcall_offset_vtbl_entries_1 (tree binfo, vtbl_init_data* vid) { if ((flag_abi_version == 0 || flag_abi_version >= (2))) { tree orig_fn; for (orig_fn = (__extension__ ({ const tree __t = (((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7591, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7591, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.maxval); orig_fn; orig_fn = ((orig_fn)->common.chain)) if ((__extension__ ({ const tree __t = (orig_fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 7594, __FUNCTION__); __t; })->decl.vindex)) add_vcall_offset (orig_fn, binfo, vid); } else { tree derived_virtuals; tree base_virtuals; tree orig_virtuals; tree non_primary_binfo; non_primary_binfo = binfo; while ((__extension__ ({ const tree __t = (non_primary_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7610, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.inheritance)) { tree b; if ((__extension__ ({ const tree __t = (non_primary_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7620, __FUNCTION__, (TREE_BINFO), 0); __t; })->common.static_flag)) { ((void)(!(non_primary_binfo == vid->vbase) ? fancy_abort ("../../gcc/gcc/cp/class.c", 7622, __FUNCTION__), 0 : 0)); non_primary_binfo = vid->binfo; break; } b = (__extension__ ({ const tree __t = (non_primary_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7627, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.inheritance); if (get_primary_binfo (b) != non_primary_binfo) break; non_primary_binfo = b; } if (vid->ctor_vtbl_p) non_primary_binfo = original_binfo (non_primary_binfo, vid->rtti_binfo); for (base_virtuals = (__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7639, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.virtuals), derived_virtuals = (__extension__ ({ const tree __t = (non_primary_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7640, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.virtuals), orig_virtuals = (__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7641, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7641, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo)); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7641, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.virtuals); base_virtuals; base_virtuals = ((base_virtuals)->common.chain), derived_virtuals = ((derived_virtuals)->common.chain), orig_virtuals = ((orig_virtuals)->common.chain)) { tree orig_fn; orig_fn = ((__extension__ ({ const tree __t = (orig_virtuals); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7651, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value)); if (!comptypes (((__extension__ ({ const tree __t = (orig_fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 7656, __FUNCTION__); __t; })->decl.context)), (((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7656, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)), 0)) continue; add_vcall_offset (orig_fn, binfo, vid); } } } static void add_vcall_offset (tree orig_fn, tree binfo, vtbl_init_data *vid) { size_t i; tree vcall_offset; for (i = 0; i < ((vid->fns)->elements_used); ++i) { tree derived_entry; derived_entry = __extension__ (*({ varray_type const _va = (vid->fns); const size_t _n = (i); if (_n >= _va->num_elements) varray_check_failed (_va, _n, "../../gcc/gcc/cp/class.c", 7680, __FUNCTION__); &_va->data.tree[_n]; })); if (same_signature_p (derived_entry, orig_fn) || (((__extension__ ({ const tree __t = (derived_entry); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 7684, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.destructor_attr) && ((__extension__ ({ const tree __t = (orig_fn); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 7685, __FUNCTION__); __t; })->decl.lang_specific)->decl_flags.destructor_attr))) return; } if (vid->binfo == (__extension__ ({ const tree __t = (vid->derived); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7692, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo)) { tree_pair_p elt = (VEC_tree_pair_s_safe_push(&((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (vid->derived); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 7696, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 7696, __FUNCTION__); <->u.c; })->vcall_indices)),((void *)0) ,"../../gcc/gcc/cp/class.c",7696,__FUNCTION__ )); elt->purpose = orig_fn; elt->value = vid->index; } vid->index = size_binop (MINUS_EXPR, vid->index, size_int_kind (1, SSIZETYPE)); do { if ((vid->fns)->elements_used >= (vid->fns)->num_elements) (((vid->fns)) = varray_grow ((vid->fns), 2 * (vid->fns)->num_elements)); (vid->fns)->data.tree[(vid->fns)->elements_used++] = (orig_fn); } while (0); if (vid->generate_vcall_entries) { tree base; tree fn; fn = find_final_overrider (vid->rtti_binfo, binfo, orig_fn); if (fn == global_trees[TI_ERROR_MARK]) vcall_offset = build1_stat (NOP_EXPR,cp_global_trees[CPTI_VTABLE_ENTRY_TYPE],global_trees[TI_INTEGER_ZERO] ); else { base = (__extension__ ({ const tree __t = (fn); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7721, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value); vcall_offset = size_diffop ((__extension__ ({ const tree __t = (base); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7727, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.offset), (__extension__ ({ const tree __t = (vid->binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7728, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.offset)); vcall_offset = fold (build1_stat (NOP_EXPR,cp_global_trees[CPTI_VTABLE_ENTRY_TYPE],vcall_offset )); } *vid->last_init = build_tree_list_stat((tree) ((void *)0),vcall_offset ); vid->last_init = &((*vid->last_init)->common.chain); } } static void build_rtti_vtbl_entries (tree binfo, vtbl_init_data* vid) { tree b; tree t; tree basetype; tree offset; tree decl; tree init; basetype = ((__extension__ ({ const tree __t = (binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7752, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type); t = ((__extension__ ({ const tree __t = (vid->rtti_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7753, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type); b = binfo; while (((__extension__ ({ struct lang_type *lt = (__extension__ ({ const tree __t = (((__extension__ ({ const tree __t = (b); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7758, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('t')) tree_class_check_failed (__t, ('t'), "../../gcc/gcc/cp/class.c", 7758, __FUNCTION__); __t; })->type.lang_specific); if (! lt->u.h.is_lang_type_class) lang_check_failed ("../../gcc/gcc/cp/class.c", 7758, __FUNCTION__); <->u.c; })->primary_base) != (tree) ((void *)0)) && !((__extension__ ({ const tree __t = (b); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7759, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_4)) { tree primary_base; primary_base = get_primary_binfo (b); ((void)(!(((__extension__ ({ const tree __t = (primary_base); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7765, __FUNCTION__, (TREE_BINFO), 0); __t; }))->common.lang_flag_5) && (__extension__ ({ const tree __t = (primary_base); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7765, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.inheritance) == b) ? fancy_abort ("../../gcc/gcc/cp/class.c", 7765, __FUNCTION__), 0 : 0)); b = primary_base; } offset = size_diffop ((__extension__ ({ const tree __t = (vid->rtti_binfo); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7768, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.offset), (__extension__ ({ const tree __t = (b); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7768, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.offset)); if (flag_rtti) decl = build_address (get_tinfo_decl (t)); else decl = global_trees[TI_INTEGER_ZERO]; init = build_nop (cp_global_trees[CPTI_VTABLE_ENTRY_TYPE], decl); *vid->last_init = build_tree_list_stat((tree) ((void *)0),init ); vid->last_init = &((*vid->last_init)->common.chain); init = build_nop (cp_global_trees[CPTI_VTABLE_ENTRY_TYPE], offset); *vid->last_init = build_tree_list_stat((tree) ((void *)0),init ); vid->last_init = &((*vid->last_init)->common.chain); } tree cp_fold_obj_type_ref (tree ref, tree known_type) { long index = tree_low_cst (__extension__ (*({const tree __t = __extension__ ({ const tree __t = (__extension__ ({ const tree __t = (ref); if (((enum tree_code) (__t)->common.code) != (OBJ_TYPE_REF)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7796, __FUNCTION__, (OBJ_TYPE_REF), 0); __t; })); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 7796, __FUNCTION__); __t; }); const int __i = (2); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 7796, __FUNCTION__); &__t->exp.operands[__i]; })), 1); long i = 0; tree v = (__extension__ ({ const tree __t = ((__extension__ ({ const tree __t = (known_type); if (((enum tree_code) (__t)->common.code) != (RECORD_TYPE) && ((enum tree_code) (__t)->common.code) != (UNION_TYPE) && ((enum tree_code) (__t)->common.code) != (QUAL_UNION_TYPE)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7798, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE), 0); __t; })->type.binfo)); if (((enum tree_code) (__t)->common.code) != (TREE_BINFO)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7798, __FUNCTION__, (TREE_BINFO), 0); __t; })->binfo.virtuals); tree fndecl; while (i != index) { i += (0 ? 0 : 1); v = ((v)->common.chain); } fndecl = ((__extension__ ({ const tree __t = (v); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7808, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value)); ((void)(!(tree_int_cst_equal (__extension__ (*({const tree __t = __extension__ ({ const tree __t = (__extension__ ({ const tree __t = (ref); if (((enum tree_code) (__t)->common.code) != (OBJ_TYPE_REF)) tree_check_failed (__t, "../../gcc/gcc/cp/class.c", 7812, __FUNCTION__, (OBJ_TYPE_REF), 0); __t; })); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!(strchr ("<12ers", (__c)) != 0)) tree_class_check_failed (__t, 'E', "../../gcc/gcc/cp/class.c", 7812, __FUNCTION__); __t; }); const int __i = (2); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../gcc/gcc/cp/class.c", 7812, __FUNCTION__); &__t->exp.operands[__i]; })), (__extension__ ({ const tree __t = (fndecl); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != ('d')) tree_class_check_failed (__t, ('d'), "../../gcc/gcc/cp/class.c", 7812, __FUNCTION__); __t; })->decl.vindex))) ? fancy_abort ("../../gcc/gcc/cp/class.c", 7812, __FUNCTION__), 0 : 0)); return build_address (fndecl); }
Become a Patron
Sponsor on GitHub
Donate via PayPal
Source on GitHub
Mailing list
Installed libraries
Wiki
Report an issue
How it works
Contact the author
CE on Mastodon
About the author
Statistics
Changelog
Version tree