This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

target/7021: __builtin_alpha_zapnot gives ICE


>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:


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]