File: operators.test

package info (click to toggle)
llvm-toolchain-11 1%3A11.0.1-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 995,808 kB
  • sloc: cpp: 4,767,656; ansic: 760,916; asm: 477,436; python: 170,940; objc: 69,804; lisp: 29,914; sh: 23,855; f90: 18,173; pascal: 7,551; perl: 7,471; ml: 5,603; awk: 3,489; makefile: 2,573; xml: 915; cs: 573; fortran: 503; javascript: 452
file content (130 lines) | stat: -rw-r--r-- 4,255 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# REQUIRES: x86
# RUN: llvm-mc -filetype=obj -triple=x86_64 /dev/null -o %t.o
# RUN: ld.lld %t.o -T %s -o %t
# RUN: llvm-nm -p %t | FileCheck %s

SECTIONS {
  _start = .;
  plus = 1 + 2 + 3;
  minus = 5 - 1;
  div = 6 / 2;
  mod = 20 % 7;
  mul = 1 + 2 * 3;
  nospace = 1+2*6/3;
  braces = 1 + (2 + 3) * 4;
  and = 0xbb & 0xee;
  ternary1 = 1 ? 1 : 2;
  ternary2 = 0 ? 1 : 2;
  less = 1 < 0 ? 1 : 2;
  lesseq = 1 <= 1 ? 1 : 2;
  greater = 0 > 1 ? 1 : 2;
  greatereq = 1 >= 1 ? 1 : 2;
  eq = 1 == 1 ? 1 : 2;
  neq = 1 != 1 ? 1 : 2;
  plusassign = 1;
  plusassign += 2;
  unary = -1 + 3;
  lshift = 1 << 5;
  rshift = 0xff >> 3;
  precedence1 = 1 | 0xff & 1 << 1 + 1 * 2;
  precedence2 = (1 | (0xff & (1 << (1 + (1 * 2)))));
  maxpagesize = CONSTANT (MAXPAGESIZE);
  commonpagesize = CONSTANT (COMMONPAGESIZE);
  . = 0xfff0;
  datasegmentalign = DATA_SEGMENT_ALIGN (0xffff, 0);
  datasegmentalign2 = DATA_SEGMENT_ALIGN (0, 0);
  _end = .;
  minus_rel = _end - 0x10;
  minus_abs = _end - _start;
  max = MAX(11, 22);
  min = MIN(11, 22);
  logicaland1 = 0 && 0;
  logicaland2 = 0 && 1;
  logicaland3 = 1 && 0;
  logicaland4 = 1 && 1;
  logicalor1 = 0 || 0;
  logicalor2 = 0 || 1;
  logicalor3 = 1 || 0;
  logicalor4 = 1 || 1;
}

# CHECK:      00000000000006 A plus
# CHECK-NEXT: 00000000000004 A minus
# CHECK-NEXT: 00000000000003 A div
# CHECK-NEXT: 00000000000006 A mod
# CHECK-NEXT: 00000000000007 A mul
# CHECK-NEXT: 00000000000005 A nospace
# CHECK-NEXT: 00000000000015 A braces
# CHECK-NEXT: 000000000000aa A and
# CHECK-NEXT: 00000000000001 A ternary1
# CHECK-NEXT: 00000000000002 A ternary2
# CHECK-NEXT: 00000000000002 A less
# CHECK-NEXT: 00000000000001 A lesseq
# CHECK-NEXT: 00000000000002 A greater
# CHECK-NEXT: 00000000000001 A greatereq
# CHECK-NEXT: 00000000000001 A eq
# CHECK-NEXT: 00000000000002 A neq
# CHECK-NEXT: 00000000000003 A plusassign
# CHECK-NEXT: 00000000000002 A unary
# CHECK-NEXT: 00000000000020 A lshift
# CHECK-NEXT: 0000000000001f A rshift
# CHECK-NEXT: 00000000000009 A precedence1
# CHECK-NEXT: 00000000000009 A precedence2
# CHECK-NEXT: 00000000001000 A maxpagesize
# CHECK-NEXT: 00000000001000 A commonpagesize
# CHECK-NEXT: 0000000000ffff A datasegmentalign
# CHECK-NEXT: 0000000000fff0 A datasegmentalign2
# CHECK-NEXT: 0000000000ffe0 T minus_rel
# CHECK-NEXT: 0000000000fff0 A minus_abs
# CHECK-NEXT: 00000000000016 A max
# CHECK-NEXT: 0000000000000b A min
# CHECK-NEXT: 00000000000000 A logicaland1
# CHECK-NEXT: 00000000000000 A logicaland2
# CHECK-NEXT: 00000000000000 A logicaland3
# CHECK-NEXT: 00000000000001 A logicaland4
# CHECK-NEXT: 00000000000000 A logicalor1
# CHECK-NEXT: 00000000000001 A logicalor2
# CHECK-NEXT: 00000000000001 A logicalor3
# CHECK-NEXT: 00000000000001 A logicalor4

## Mailformed number error.
# RUN: echo "SECTIONS { . = 0x12Q41; }" > %t.script
# RUN: not ld.lld %t.o -T %t.script -o /dev/null 2>&1 | \
# RUN:  FileCheck --check-prefix=NUMERR %s
# NUMERR: malformed number: 0x12Q41

## Missing closing bracket.
# RUN: echo "SECTIONS { . = (1; }" > %t.script
# RUN: not ld.lld %t.o -T %t.script -o /dev/null 2>&1 | \
# RUN:  FileCheck --check-prefix=BRACKETERR %s
# BRACKETERR: ) expected, but got ;

## Missing opening bracket.
# RUN: echo "SECTIONS { . = 1); }" > %t.script
# RUN: not ld.lld %t.o -T %t.script -o /dev/null 2>&1 | \
# RUN:  FileCheck --check-prefix=BRACKETERR2 %s
# BRACKETERR2: ; expected, but got )

## Empty expression.
# RUN: echo "SECTIONS { . = ; }" > %t.script
# RUN: not ld.lld %t.o -T %t.script -o /dev/null 2>&1 | \
# RUN:  FileCheck --check-prefix=ERREXPR %s
# ERREXPR: malformed number: ;

## Div by zero error.
# RUN: echo "SECTIONS { . = 1 / 0; }" > %t.script
# RUN: not ld.lld %t.o -T %t.script -o /dev/null 2>&1 | \
# RUN:  FileCheck --check-prefix=DIVZERO %s
# DIVZERO: {{.*}}.script:1: division by zero

## Mod by zero error.
# RUN: echo "SECTIONS { . = 1 % 0; }" > %t.script
# RUN: not ld.lld %t.o -T %t.script -o /dev/null 2>&1 | \
# RUN:  FileCheck --check-prefix=MODZERO %s
# MODZERO: {{.*}}.script:1: modulo by zero

## Broken ternary operator expression.
# RUN: echo "SECTIONS { . = 1 ? 2; }" > %t.script
# RUN: not ld.lld %t.o -T %t.script -o /dev/null 2>&1 | \
# RUN:  FileCheck --check-prefix=TERNERR %s
# TERNERR: : expected, but got ;