target/7021: __builtin_alpha_zapnot gives ICE

falk.hueffner@student.uni-tuebingen.de falk.hueffner@student.uni-tuebingen.de
Thu Jun 13 12:36:00 GMT 2002


>Number:         7021
>Category:       target
>Synopsis:       __builtin_alpha_zapnot gives ICE
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Thu Jun 13 11:16:02 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     falk.hueffner@student.uni-tuebingen.de
>Release:        CVS 2002-06-13
>Organization:
>Environment:
Alpha PCA56, Debian GNU/Linux
>Description:
__builtin_alpha_zapnot with a non-constant second argument gives an ICE.

It seems the problem is that in the machine description, the second parameter is declared to be in QI mode, while copy_to_mode_reg (called from alpha_expand_builtin) expects DI.
>How-To-Repeat:
% cat zapnot.c
unsigned long f(unsigned long x, unsigned long y) {
    return __builtin_alpha_zapnot(x, y);
}
% gcc -c zapnot.c
zapnot.c: In function `f':
zapnot.c:2: Internal compiler error: Internal compiler error in copy_to_mode_reg, at explow.c:711
>Fix:
Using DI mode everywhere in builtin_zapnot* helps, but the QI was supposedly there to tell the compiler that only the low byte matters, which would get lost then.
>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the Gcc-bugs mailing list