Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/gcc.c-torture/compile/pr38554.c @ 152:2b5abeee2509
update gcc11
author | anatofuz |
---|---|
date | Mon, 25 May 2020 07:50:57 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
typedef unsigned long sample; struct pam { sample maxval; }; typedef sample *tuple; enum function { FN_MULTIPLY, FN_DIVIDE, FN_ADD, FN_SUBTRACT, FN_MIN, FN_MAX, FN_AND, FN_OR, FN_XOR, FN_NOT, FN_SHIFTLEFT, FN_SHIFTRIGHT }; struct cmdlineInfo { enum function function; union { float divisor; unsigned int shiftCount; } u; }; applyFunction (struct cmdlineInfo const cmdline, struct pam const inpam, struct pam const outpam, tuple * const inputRow, tuple * const outputRow) { float const oneOverDivisor = 1 / cmdline.u.divisor; int col; { int plane; { sample const inSample = inputRow[col][plane]; sample outSample; switch (cmdline.function) { case FN_DIVIDE: outSample = ((unsigned int) ((inSample * oneOverDivisor) + 0.5)); break; case FN_SHIFTLEFT: outSample = (inSample << cmdline.u.shiftCount) & outpam.maxval; } outputRow[col][plane] = ((outpam.maxval) < (outSample) ? (outpam.maxval) : (outSample)); } } }