| /* Check if conversion for two instructions. */ |
| |
| /* { dg-do run } */ |
| /* { dg-options "-O2 -march=z13 --save-temps" } */ |
| |
| /* { dg-final { scan-assembler "lochih\t%r.?,1" } } */ |
| /* { dg-final { scan-assembler "locrh\t.*" } } */ |
| #include <limits.h> |
| #include <stdio.h> |
| #include <assert.h> |
| |
| __attribute__ ((noinline)) |
| int foo (int *a, unsigned int n) |
| { |
| int min = 999999; |
| int bla = 0; |
| for (int i = 0; i < n; i++) |
| { |
| if (a[i] < min) |
| { |
| min = a[i]; |
| bla = 1; |
| } |
| } |
| |
| if (bla) |
| min += 1; |
| return min; |
| } |
| |
| int main() |
| { |
| int a[] = {2, 1, -13, INT_MAX, INT_MIN, 0}; |
| |
| int res = foo (a, sizeof (a) / sizeof (a[0])); |
| |
| assert (res == (INT_MIN + 1)); |
| } |