Mercurial > hg > CbC > CbC_gcc
comparison gcc/doc/generic.texi @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | 84e7813d76e9 |
children |
comparison
equal
deleted
inserted
replaced
131:84e7813d76e9 | 145:1830386684a0 |
---|---|
1 @c Copyright (C) 2004-2018 Free Software Foundation, Inc. | 1 @c Copyright (C) 2004-2020 Free Software Foundation, Inc. |
2 @c This is part of the GCC manual. | 2 @c This is part of the GCC manual. |
3 @c For copying conditions, see the file gcc.texi. | 3 @c For copying conditions, see the file gcc.texi. |
4 | 4 |
5 @c --------------------------------------------------------------------- | 5 @c --------------------------------------------------------------------- |
6 @c GENERIC | 6 @c GENERIC |
41 * Expressions: Expression trees. Operating on data. | 41 * Expressions: Expression trees. Operating on data. |
42 * Statements:: Control flow and related trees. | 42 * Statements:: Control flow and related trees. |
43 * Functions:: Function bodies, linkage, and other aspects. | 43 * Functions:: Function bodies, linkage, and other aspects. |
44 * Language-dependent trees:: Topics and trees specific to language front ends. | 44 * Language-dependent trees:: Topics and trees specific to language front ends. |
45 * C and C++ Trees:: Trees specific to C and C++. | 45 * C and C++ Trees:: Trees specific to C and C++. |
46 * Java Trees:: Trees specific to Java. | |
47 @end menu | 46 @end menu |
48 | 47 |
49 @c --------------------------------------------------------------------- | 48 @c --------------------------------------------------------------------- |
50 @c Deficiencies | 49 @c Deficiencies |
51 @c --------------------------------------------------------------------- | 50 @c --------------------------------------------------------------------- |
1272 | 1271 |
1273 @node Unary and Binary Expressions | 1272 @node Unary and Binary Expressions |
1274 @subsection Unary and Binary Expressions | 1273 @subsection Unary and Binary Expressions |
1275 @tindex NEGATE_EXPR | 1274 @tindex NEGATE_EXPR |
1276 @tindex ABS_EXPR | 1275 @tindex ABS_EXPR |
1276 @tindex ABSU_EXPR | |
1277 @tindex BIT_NOT_EXPR | 1277 @tindex BIT_NOT_EXPR |
1278 @tindex TRUTH_NOT_EXPR | 1278 @tindex TRUTH_NOT_EXPR |
1279 @tindex PREDECREMENT_EXPR | 1279 @tindex PREDECREMENT_EXPR |
1280 @tindex PREINCREMENT_EXPR | 1280 @tindex PREINCREMENT_EXPR |
1281 @tindex POSTDECREMENT_EXPR | 1281 @tindex POSTDECREMENT_EXPR |
1369 or complex abs of a complex value, use the @code{BUILT_IN_CABS}, | 1369 or complex abs of a complex value, use the @code{BUILT_IN_CABS}, |
1370 @code{BUILT_IN_CABSF} or @code{BUILT_IN_CABSL} builtins, as used | 1370 @code{BUILT_IN_CABSF} or @code{BUILT_IN_CABSL} builtins, as used |
1371 to implement the C99 @code{cabs}, @code{cabsf} and @code{cabsl} | 1371 to implement the C99 @code{cabs}, @code{cabsf} and @code{cabsl} |
1372 built-in functions. | 1372 built-in functions. |
1373 | 1373 |
1374 @item ABSU_EXPR | |
1375 These nodes represent the absolute value of the single operand in | |
1376 equivalent unsigned type such that @code{ABSU_EXPR} of @code{TYPE_MIN} | |
1377 is well defined. | |
1378 | |
1374 @item BIT_NOT_EXPR | 1379 @item BIT_NOT_EXPR |
1375 These nodes represent bitwise complement, and will always have integral | 1380 These nodes represent bitwise complement, and will always have integral |
1376 type. The only operand is the value to be complemented. | 1381 type. The only operand is the value to be complemented. |
1377 | 1382 |
1378 @item TRUTH_NOT_EXPR | 1383 @item TRUTH_NOT_EXPR |
1557 | 1562 |
1558 @item LT_EXPR | 1563 @item LT_EXPR |
1559 @itemx LE_EXPR | 1564 @itemx LE_EXPR |
1560 @itemx GT_EXPR | 1565 @itemx GT_EXPR |
1561 @itemx GE_EXPR | 1566 @itemx GE_EXPR |
1567 @itemx LTGT_EXPR | |
1562 @itemx EQ_EXPR | 1568 @itemx EQ_EXPR |
1563 @itemx NE_EXPR | 1569 @itemx NE_EXPR |
1564 These nodes represent the less than, less than or equal to, greater | 1570 These nodes represent the less than, less than or equal to, greater than, |
1565 than, greater than or equal to, equal, and not equal comparison | 1571 greater than or equal to, less or greater than, equal, and not equal |
1566 operators. The first and second operands will either be both of integral | 1572 comparison operators. The first and second operands will either be both |
1567 type, both of floating type or both of vector type. The result type of | 1573 of integral type, both of floating type or both of vector type, except for |
1568 these expressions will always be of integral, boolean or signed integral | 1574 LTGT_EXPR where they will only be both of floating type. The result type |
1569 vector type. These operations return the result type's zero value for | 1575 of these expressions will always be of integral, boolean or signed integral |
1570 false, the result type's one value for true, and a vector whose elements | 1576 vector type. These operations return the result type's zero value for false, |
1571 are zero (false) or minus one (true) for vectors. | 1577 the result type's one value for true, and a vector whose elements are zero |
1578 (false) or minus one (true) for vectors. | |
1572 | 1579 |
1573 For floating point comparisons, if we honor IEEE NaNs and either operand | 1580 For floating point comparisons, if we honor IEEE NaNs and either operand |
1574 is NaN, then @code{NE_EXPR} always returns true and the remaining operators | 1581 is NaN, then @code{NE_EXPR} always returns true and the remaining operators |
1575 always return false. On some targets, comparisons against an IEEE NaN, | 1582 always return false. On some targets, comparisons against an IEEE NaN, |
1576 other than equality and inequality, may generate a floating point exception. | 1583 other than equality and inequality, may generate a floating-point exception. |
1577 | 1584 |
1578 @item ORDERED_EXPR | 1585 @item ORDERED_EXPR |
1579 @itemx UNORDERED_EXPR | 1586 @itemx UNORDERED_EXPR |
1580 These nodes represent non-trapping ordered and unordered comparison | 1587 These nodes represent non-trapping ordered and unordered comparison |
1581 operators. These operations take two floating point operands and | 1588 operators. These operations take two floating point operands and |
1589 @item UNLT_EXPR | 1596 @item UNLT_EXPR |
1590 @itemx UNLE_EXPR | 1597 @itemx UNLE_EXPR |
1591 @itemx UNGT_EXPR | 1598 @itemx UNGT_EXPR |
1592 @itemx UNGE_EXPR | 1599 @itemx UNGE_EXPR |
1593 @itemx UNEQ_EXPR | 1600 @itemx UNEQ_EXPR |
1594 @itemx LTGT_EXPR | |
1595 These nodes represent the unordered comparison operators. | 1601 These nodes represent the unordered comparison operators. |
1596 These operations take two floating point operands and determine whether | 1602 These operations take two floating point operands and determine whether |
1597 the operands are unordered or are less than, less than or equal to, | 1603 the operands are unordered or are less than, less than or equal to, |
1598 greater than, greater than or equal to, or equal respectively. For | 1604 greater than, greater than or equal to, or equal respectively. For |
1599 example, @code{UNLT_EXPR} returns true if either operand is an IEEE | 1605 example, @code{UNLT_EXPR} returns true if either operand is an IEEE |
1600 NaN or the first operand is less than the second. With the possible | 1606 NaN or the first operand is less than the second. All these operations |
1601 exception of @code{LTGT_EXPR}, all of these operations are guaranteed | 1607 are guaranteed not to generate a floating point exception. The result |
1602 not to generate a floating point exception. The result | |
1603 type of these expressions will always be of integral or boolean type. | 1608 type of these expressions will always be of integral or boolean type. |
1604 These operations return the result type's zero value for false, | 1609 These operations return the result type's zero value for false, |
1605 and the result type's one value for true. | 1610 and the result type's one value for true. |
1606 | 1611 |
1607 @item MODIFY_EXPR | 1612 @item MODIFY_EXPR |
2173 | 2178 |
2174 After the second sequence is executed, if it completes normally by | 2179 After the second sequence is executed, if it completes normally by |
2175 falling off the end, execution continues wherever the first sequence | 2180 falling off the end, execution continues wherever the first sequence |
2176 would have continued, by falling off the end, or doing a goto, etc. | 2181 would have continued, by falling off the end, or doing a goto, etc. |
2177 | 2182 |
2183 If the second sequence is an @code{EH_ELSE_EXPR} selector, then the | |
2184 sequence in its first operand is used when the first sequence completes | |
2185 normally, and that in its second operand is used for exceptional | |
2186 cleanups, i.e., when an exception propagates out of the first sequence. | |
2187 | |
2178 @code{TRY_FINALLY_EXPR} complicates the flow graph, since the cleanup | 2188 @code{TRY_FINALLY_EXPR} complicates the flow graph, since the cleanup |
2179 needs to appear on every edge out of the controlled block; this | 2189 needs to appear on every edge out of the controlled block; this |
2180 reduces the freedom to move code across these edges. Therefore, the | 2190 reduces the freedom to move code across these edges. Therefore, the |
2181 EH lowering pass which runs before most of the optimization passes | 2191 EH lowering pass which runs before most of the optimization passes |
2182 eliminates these expressions by explicitly adding the cleanup to each | 2192 eliminates these expressions by explicitly adding the cleanup to each |
2376 @tindex OACC_EXIT_DATA | 2386 @tindex OACC_EXIT_DATA |
2377 @tindex OACC_HOST_DATA | 2387 @tindex OACC_HOST_DATA |
2378 @tindex OACC_KERNELS | 2388 @tindex OACC_KERNELS |
2379 @tindex OACC_LOOP | 2389 @tindex OACC_LOOP |
2380 @tindex OACC_PARALLEL | 2390 @tindex OACC_PARALLEL |
2391 @tindex OACC_SERIAL | |
2381 @tindex OACC_UPDATE | 2392 @tindex OACC_UPDATE |
2382 | 2393 |
2383 All the statements starting with @code{OACC_} represent directives and | 2394 All the statements starting with @code{OACC_} represent directives and |
2384 clauses used by the OpenACC API @w{@uref{https://www.openacc.org}}. | 2395 clauses used by the OpenACC API @w{@uref{https://www.openacc.org}}. |
2385 | 2396 |
2419 See the description of the @code{OMP_FOR} code. | 2430 See the description of the @code{OMP_FOR} code. |
2420 | 2431 |
2421 @item OACC_PARALLEL | 2432 @item OACC_PARALLEL |
2422 | 2433 |
2423 Represents @code{#pragma acc parallel [clause1 @dots{} clauseN]}. | 2434 Represents @code{#pragma acc parallel [clause1 @dots{} clauseN]}. |
2435 | |
2436 @item OACC_SERIAL | |
2437 | |
2438 Represents @code{#pragma acc serial [clause1 @dots{} clauseN]}. | |
2424 | 2439 |
2425 @item OACC_UPDATE | 2440 @item OACC_UPDATE |
2426 | 2441 |
2427 Represents @code{#pragma acc update [clause1 @dots{} clauseN]}. | 2442 Represents @code{#pragma acc update [clause1 @dots{} clauseN]}. |
2428 | 2443 |
3536 | 3551 |
3537 In either case, the expression is void. | 3552 In either case, the expression is void. |
3538 | 3553 |
3539 | 3554 |
3540 @end table | 3555 @end table |
3541 | |
3542 | |
3543 @node Java Trees | |
3544 @section Java Trees |