[RISC-V] Avoid unnecessary extensions when value is already extended
[official-gcc.git] / gcc / testsuite / c-c++-common / analyzer / asm-x86-1.c
bloba3f86e440b57cf3916e282b645284cd1cea92bfe
1 /* { dg-do compile { target x86_64-*-* } } */
3 #include "analyzer-decls.h"
5 int test_out (void)
7 int dst_a, dst_b;
8 asm ("mov 42, %0"
9 : "=r" (dst_a));
10 asm ("mov 42, %0"
11 : "=r" (dst_b));
12 __analyzer_eval (dst_a == dst_b); /* { dg-warning "TRUE" } */
13 return dst_a;
16 int test_out_in (int src_a)
18 int dst_a, dst_b;
19 asm ("mov %1, %0"
20 : "=r" (dst_a)
21 : "r" (src_a));
22 asm ("mov %1, %0"
23 : "=r" (dst_b)
24 : "r" (src_a));
25 __analyzer_eval (dst_a == dst_b); /* { dg-warning "TRUE" } */
26 return dst_a;
29 int test_out_in_in (int src_a, int src_b)
31 int dst_a, dst_b;
32 asm ("mov %1, %0;\n"
33 "add %2, %0"
34 : "=r" (dst_a)
35 : "r" (src_a),
36 "r" (src_b));
37 asm ("mov %1, %0;\n"
38 "add %2, %0"
39 : "=r" (dst_b)
40 : "r" (src_a),
41 "r" (src_b));
42 __analyzer_eval (dst_a == dst_b); /* { dg-warning "TRUE" } */
43 return dst_a;
46 void test_inout_1 (int v)
48 int saved = v;
49 int result_a, result_b;
50 asm ("dec %0"
51 : "+r" (v));
52 result_a = v;
54 asm ("dec %0"
55 : "+r" (v));
56 result_b = v;
58 __analyzer_eval (v == saved); /* { dg-warning "UNKNOWN" } */
59 __analyzer_eval (v == result_a); /* { dg-warning "UNKNOWN" } */
60 __analyzer_eval (v == result_b); /* { dg-warning "TRUE" } */
63 void test_inout_2 (void)
65 int v;
66 int result_a, result_b;
67 asm ("dec %0" /* { dg-warning "use of uninitialized value 'v'" } */
68 : "+r" (v));