c-common.c (260011) | c-common.c (260074) |
---|---|
1/* Subroutines shared by all languages that are variants of C. 2 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 3 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. 4 5This file is part of GCC. 6 7GCC is free software; you can redistribute it and/or modify it under 8the terms of the GNU General Public License as published by the Free --- 240 unchanged lines hidden (view full) --- 249/* Nonzero means give `double' the same size as `float'. */ 250 251int flag_short_double; 252 253/* Nonzero means give `wchar_t' the same size as `short'. */ 254 255int flag_short_wchar; 256 | 1/* Subroutines shared by all languages that are variants of C. 2 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 3 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. 4 5This file is part of GCC. 6 7GCC is free software; you can redistribute it and/or modify it under 8the terms of the GNU General Public License as published by the Free --- 240 unchanged lines hidden (view full) --- 249/* Nonzero means give `double' the same size as `float'. */ 250 251int flag_short_double; 252 253/* Nonzero means give `wchar_t' the same size as `short'. */ 254 255int flag_short_wchar; 256 |
257/* Nonzero means allow implicit conversions between vectors with 258 differing numbers of subparts and/or differing element types. */ 259int flag_lax_vector_conversions; 260 |
|
257/* Nonzero means allow Microsoft extensions without warnings or errors. */ 258int flag_ms_extensions; 259 260/* Nonzero means don't recognize the keyword `asm'. */ 261 262int flag_no_asm; 263 264/* Nonzero means to treat bitfields as signed unless they say `unsigned'. */ --- 825 unchanged lines hidden (view full) --- 1090{ 1091 if (TREE_CODE (c) == INTEGER_CST) 1092 return int_fits_type_p (c, type); 1093 1094 c = convert (type, c); 1095 return !TREE_OVERFLOW (c); 1096} 1097 | 261/* Nonzero means allow Microsoft extensions without warnings or errors. */ 262int flag_ms_extensions; 263 264/* Nonzero means don't recognize the keyword `asm'. */ 265 266int flag_no_asm; 267 268/* Nonzero means to treat bitfields as signed unless they say `unsigned'. */ --- 825 unchanged lines hidden (view full) --- 1094{ 1095 if (TREE_CODE (c) == INTEGER_CST) 1096 return int_fits_type_p (c, type); 1097 1098 c = convert (type, c); 1099 return !TREE_OVERFLOW (c); 1100} 1101 |
1098/* Nonzero if vector types T1 and T2 can be converted to each other 1099 without an explicit cast. */ 1100int 1101vector_types_convertible_p (tree t1, tree t2) | 1102 1103/* True if vector types T1 and T2 can be converted to each other 1104 without an explicit cast. If EMIT_LAX_NOTE is true, and T1 and T2 1105 can only be converted with -flax-vector-conversions yet that is not 1106 in effect, emit a note telling the user about that option if such 1107 a note has not previously been emitted. */ 1108bool 1109vector_types_convertible_p (tree t1, tree t2, bool emit_lax_note) |
1102{ | 1110{ |
1103 return targetm.vector_opaque_p (t1) 1104 || targetm.vector_opaque_p (t2) 1105 || (tree_int_cst_equal (TYPE_SIZE (t1), TYPE_SIZE (t2)) 1106 && (TREE_CODE (TREE_TYPE (t1)) != REAL_TYPE || 1107 TYPE_PRECISION (t1) == TYPE_PRECISION (t2)) 1108 && INTEGRAL_TYPE_P (TREE_TYPE (t1)) 1109 == INTEGRAL_TYPE_P (TREE_TYPE (t2))); | 1111 static bool emitted_lax_note = false; 1112 bool convertible_lax; 1113 1114 if ((targetm.vector_opaque_p (t1) || targetm.vector_opaque_p (t2)) 1115 && tree_int_cst_equal (TYPE_SIZE (t1), TYPE_SIZE (t2))) 1116 return true; 1117 1118 convertible_lax = 1119 (tree_int_cst_equal (TYPE_SIZE (t1), TYPE_SIZE (t2)) 1120 && (TREE_CODE (TREE_TYPE (t1)) != REAL_TYPE || 1121 TYPE_PRECISION (t1) == TYPE_PRECISION (t2)) 1122 && (INTEGRAL_TYPE_P (TREE_TYPE (t1)) 1123 == INTEGRAL_TYPE_P (TREE_TYPE (t2)))); 1124 1125 if (!convertible_lax || flag_lax_vector_conversions) 1126 return convertible_lax; 1127 1128 if (TYPE_VECTOR_SUBPARTS (t1) == TYPE_VECTOR_SUBPARTS (t2) 1129 && comptypes (TREE_TYPE (t1), TREE_TYPE (t2))) 1130 return true; 1131 1132 if (emit_lax_note && !emitted_lax_note) 1133 { 1134 emitted_lax_note = true; 1135 inform ("use -flax-vector-conversions to permit " 1136 "conversions between vectors with differing " 1137 "element types or numbers of subparts"); 1138 } 1139 1140 return false; |
1110} 1111 1112/* Convert EXPR to TYPE, warning about conversion problems with constants. 1113 Invoke this function on every expression that is converted implicitly, 1114 i.e. because of language rules and not because of an explicit cast. */ 1115 1116tree 1117convert_and_check (tree type, tree expr) --- 5505 unchanged lines hidden --- | 1141} 1142 1143/* Convert EXPR to TYPE, warning about conversion problems with constants. 1144 Invoke this function on every expression that is converted implicitly, 1145 i.e. because of language rules and not because of an explicit cast. */ 1146 1147tree 1148convert_and_check (tree type, tree expr) --- 5505 unchanged lines hidden --- |