diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-02-12 00:26:57 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-02-12 00:26:57 +0000 |
commit | 0dfc45b5614725c49ee4d16ad5cd04dde5fb1912 (patch) | |
tree | d07cd0c8b8b5189a1a0ffc5396fe8bf7003febf4 /gcc/libgcc2.h | |
parent | 94a53c2d0659a2871fb6c3df953df115a1673d04 (diff) | |
download | gcc-0dfc45b5614725c49ee4d16ad5cd04dde5fb1912.tar.gz |
* tree-complex.c (expand_complex_libcall): New.
(expand_complex_multiplication): Use it for c99 compliance.
(expand_complex_division): Likewise.
* fold-const.c (fold_complex_add, fold_complex_mult): New.
(fold): Call them.
* builtins.c (built_in_names): Remove const.
* tree.c (build_common_builtin_nodes): Build complex arithmetic
builtins.
* tree.h (BUILT_IN_COMPLEX_MUL_MIN, BUILT_IN_COMPLEX_MUL_MAX): New.
(BUILT_IN_COMPLEX_DIV_MIN, BUILT_IN_COMPLEX_DIV_MAX): New.
(built_in_names): Remove const.
* c-common.c (c_common_type_for_mode): Handle complex modes.
* flags.h, toplev.c (flag_complex_method): Rename from
flag_complex_divide_method.
* libgcc2.c (__divsc3, __divdc3, __divxc3, __divtc3,
__mulsc3, __muldc3, __mulxc3, __multc3): New.
* libgcc2.h: Declare them.
* libgcc-std.ver: Export them.
* mklibgcc.in (lib2funcs): Build them.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@94909 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/libgcc2.h')
-rw-r--r-- | gcc/libgcc2.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/gcc/libgcc2.h b/gcc/libgcc2.h index fb6d91485b7..16578731636 100644 --- a/gcc/libgcc2.h +++ b/gcc/libgcc2.h @@ -92,12 +92,16 @@ typedef unsigned int UTItype __attribute__ ((mode (TI))); typedef float SFtype __attribute__ ((mode (SF))); typedef float DFtype __attribute__ ((mode (DF))); +typedef _Complex float SCtype __attribute__ ((mode (SC))); +typedef _Complex float DCtype __attribute__ ((mode (DC))); #if LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 80 typedef float XFtype __attribute__ ((mode (XF))); +typedef _Complex float XCtype __attribute__ ((mode (XC))); #endif #if LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 128 typedef float TFtype __attribute__ ((mode (TF))); +typedef _Complex float TCtype __attribute__ ((mode (TC))); #endif #else /* BITS_PER_UNIT != 8 */ @@ -308,12 +312,19 @@ extern DWtype __fixunssfDI (SFtype); extern SFtype __powisf2 (SFtype, Wtype); extern DFtype __powidf2 (DFtype, Wtype); +extern SCtype __divsc3 (SFtype, SFtype, SFtype, SFtype); +extern SCtype __mulsc3 (SFtype, SFtype, SFtype, SFtype); +extern DCtype __divdc3 (DFtype, DFtype, DFtype, DFtype); +extern DCtype __muldc3 (DFtype, DFtype, DFtype, DFtype); + #if LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 80 extern DWtype __fixxfdi (XFtype); extern DWtype __fixunsxfDI (XFtype); extern XFtype __floatdixf (DWtype); extern UWtype __fixunsxfSI (XFtype); extern XFtype __powixf2 (XFtype, Wtype); +extern XCtype __divxc3 (XFtype, XFtype, XFtype, XFtype); +extern XCtype __mulxc3 (XFtype, XFtype, XFtype, XFtype); #endif #if LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 128 @@ -321,6 +332,8 @@ extern DWtype __fixunstfDI (TFtype); extern DWtype __fixtfdi (TFtype); extern TFtype __floatditf (DWtype); extern TFtype __powitf2 (TFtype, Wtype); +extern TCtype __divtc3 (TFtype, TFtype, TFtype, TFtype); +extern TCtype __multc3 (TFtype, TFtype, TFtype, TFtype); #endif #endif /* BITS_PER_UNIT == 8 */ |