https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87426

            Bug ID: 87426
           Summary: c_parser_unary_expression ICE
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: SztfG at yandex dot ru
  Target Milestone: ---

testcase:

#include <stdio.h>
#include <inttypes.h>
//#include <stdlib.h>

static const uint32_t pow2[511] ={ 0 }; // doesnt matter

#define SQR(x) pow2[x]

uint16_t mul8b(uint8_t a, uint8_t b)
{
  return (SQR((uint16_t)a+(uint16_t)b) - SQR(abs((int16_t)a-(int16_t)b))) >>
2;;
}


prog.c: In function 'mul8b':
prog.c:12:46: warning: implicit declaration of function 'abs'
[-Wimplicit-function-declaration]
12 |   return (SQR((uint16_t)a+(uint16_t)b) - SQR(abs((int16_t)a-(int16_t)b)))
>> 2;;
   |                                              ^~~
prog.c:8:21: note: in definition of macro 'SQR'
8 | #define SQR(x) pow2[x]
  |                     ^
prog.c:12:3: internal compiler error: Segmentation fault
12 |   return (SQR((uint16_t)a+(uint16_t)b) - SQR(abs((int16_t)a-(int16_t)b)))
>> 2;;
   |   ^~~~~~
0xa31cbf crash_signal
        ../../source/gcc/toplev.c:325
0x5f8606 warn_for_abs
        ../../source/gcc/c/c-parser.c:9226
0x5f8606 c_parser_postfix_expression_after_primary
        ../../source/gcc/c/c-parser.c:9318
0x5ea523 c_parser_postfix_expression
        ../../source/gcc/c/c-parser.c:9006
0x5f2f27 c_parser_unary_expression
        ../../source/gcc/c/c-parser.c:7266
0x5f416f c_parser_cast_expression
        ../../source/gcc/c/c-parser.c:7110
0x5f43e6 c_parser_binary_expression
        ../../source/gcc/c/c-parser.c:6913
0x5f52f5 c_parser_conditional_expression
        ../../source/gcc/c/c-parser.c:6647
0x5f5830 c_parser_expr_no_commas
        ../../source/gcc/c/c-parser.c:6564
0x5f5a82 c_parser_expression
        ../../source/gcc/c/c-parser.c:9460
0x5f7fb7 c_parser_postfix_expression_after_primary
        ../../source/gcc/c/c-parser.c:9272
0x5ea523 c_parser_postfix_expression
        ../../source/gcc/c/c-parser.c:9006
0x5f2f27 c_parser_unary_expression
        ../../source/gcc/c/c-parser.c:7266
0x5f416f c_parser_cast_expression
        ../../source/gcc/c/c-parser.c:7110
0x5f4580 c_parser_binary_expression
        ../../source/gcc/c/c-parser.c:7036
0x5f52f5 c_parser_conditional_expression
        ../../source/gcc/c/c-parser.c:6647
0x5f5830 c_parser_expr_no_commas
        ../../source/gcc/c/c-parser.c:6564
0x5f5a82 c_parser_expression
        ../../source/gcc/c/c-parser.c:9460
0x5ea67b c_parser_postfix_expression
        ../../source/gcc/c/c-parser.c:7968
0x5f2f27 c_parser_unary_expression
        ../../source/gcc/c/c-parser.c:7266
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.

Reply via email to