--- Comment #8 from ubizjak at gmail dot com 2007-06-04 12:27 ---
A bit of debugging leads to following findings:
build_common_builtin_nodes() defines supported complex mul/div functions
depending on lang_hooks.types.type_for_mode(). This langhook defaults to
c_common_type_for_mode().
--- Comment #7 from ubizjak at gmail dot com 2007-06-03 16:32 ---
These missing complex types should probably be defined in i386.c (line 17710),
alongside __float128 and __float80 definitions.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32191
--- Comment #6 from fxcoudert at gcc dot gnu dot org 2007-06-03 13:45
---
(In reply to comment #3)
> fndecl is already NULL there.
>
>> #1 0x0068d0bd in expand_complex_libcall (bsi=0x7fbfffed20,
In tree.c, at line 7225, we define the builtins for complex multiplication:
--- Comment #5 from fxcoudert at gcc dot gnu dot org 2007-06-03 11:42
---
(In reply to comment #4)
> c128 foo (c128 x, c128 y)
> {
> typedef _Complex float __attribute__((mode(TC))) c128;
> x *= y;
> return x;
> }
>
> This will most likely also crash at higher optimization levels
--
fxcoudert at gcc dot gnu dot org changed:
What|Removed |Added
Status|UNCONFIRMED |NEW
Ever Confirmed|0 |1
Last recon
--- Comment #4 from pinskia at gcc dot gnu dot org 2007-06-03 07:00 ---
Try compiling:
c128 foo (c128 x, c128 y)
{
typedef _Complex float __attribute__((mode(TC))) c128;
x *= y;
return x;
}
This will most likely also crash at higher optimization levels.
--
http://gcc.gnu.org
--- Comment #3 from ubizjak at gmail dot com 2007-06-03 06:42 ---
(In reply to comment #2)
> #0 build_call_expr (fndecl=0x0, n=4) at ../../trunk/gcc/builtins.c:10379
fndecl is already NULL there.
> #1 0x0068d0bd in expand_complex_libcall (bsi=0x7fbfffed20,
There is a pack
--- Comment #2 from fxcoudert at gcc dot gnu dot org 2007-06-02 21:10
---
(In reply to comment #1)
> typedef _Complex float __attribute__((mode(TC))) c128;
> c128 g(void);
> void foo ()
> {
> c128 x, y;
> x = g();
> }
Nope. That one doesn't ICE. The backtrace for the ICE my code in
--- Comment #1 from pinskia at gcc dot gnu dot org 2007-06-02 21:06 ---
This works for me with powerpc64-linux-gnu which has a TCmode.
I think the reason why it is only triggered with -std=c99/-std=gnu99 is because
__multc3 is only called then. __multc3 returns a TCmode. So you most li