llvm-project

Форк
0
/
ms-inline-asm.c 
79 строк · 1.8 Кб
1
// REQUIRES: x86-registered-target
2
// RUN: %clang_cc1 %s -triple i386-apple-darwin10 -verify -fasm-blocks
3
// Disabling gnu inline assembly should have no effect on this testcase
4
// RUN: %clang_cc1 %s -triple i386-apple-darwin10 -verify -fasm-blocks -fno-gnu-inline-asm
5

6
#define M __asm int 0x2c
7
#define M2 int
8

9
void t1(void) { M }
10
void t2(void) { __asm int 2ch }
11
void t3(void) { __asm M2 2ch }
12
void t4(void) { __asm mov eax, fs:[10h] }
13
void t5(void) {
14
  __asm {
15
    int 0x2c ; } asm comments are fun! }{
16
  }
17
  __asm {}
18
}
19
int t6(void) {
20
  __asm int 3 ; } comments for single-line asm
21
  __asm {}
22

23
  __asm int 4
24
  return 10;
25
}
26
void t7(void) {
27
  __asm {
28
    push ebx
29
    mov ebx, 07h
30
    pop ebx
31
  }
32
}
33
void t8(void) {
34
  __asm nop __asm nop __asm nop
35
}
36
void t9(void) {
37
  __asm nop __asm nop ; __asm nop
38
}
39
void t10(void) {
40
  __asm {
41
    mov eax, 0
42
    __asm {
43
      mov eax, 1
44
      {
45
        mov eax, 2
46
      }
47
    }
48
  }
49
}
50
void t11(void) {
51
  do { __asm mov eax, 0 __asm { __asm mov edx, 1 } } while(0);
52
}
53
void t12(void) {
54
  __asm jmp label // expected-error {{use of undeclared label 'label'}}
55
}
56
void t13(void) {
57
  __asm m{o}v eax, ebx // expected-error {{unknown token in expression}}
58
}
59

60
void t14(void) {
61
  enum { A = 1, B };
62
  __asm mov eax, offset A // expected-error {{offset operator cannot yet handle constants}}
63
}
64

65
// GH57791
66
typedef struct S {
67
  unsigned bf1:1; // expected-note {{bit-field is declared here}}
68
  unsigned bf2:1; // expected-note {{bit-field is declared here}}
69
} S;
70
void t15(S s) {
71
  __asm {
72
    mov eax, s.bf1 // expected-error {{an inline asm block cannot have an operand which is a bit-field}}
73
    mov s.bf2, eax // expected-error {{an inline asm block cannot have an operand which is a bit-field}}
74
  }
75
}
76

77
int t_fail(void) { // expected-note {{to match this}}
78
  __asm 
79
  __asm { // expected-error 3 {{expected}} expected-note {{to match this}}
80

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.