brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1023 B · 45a7e5e Raw
31 lines · c
1// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s \2// RUN:     -fsanitize=signed-integer-overflow \3// RUN:   | FileCheck %s4 5// Verify we emit constants for "immediate" inline assembly arguments.6// Emitting a scalar expression can make the immediate be generated as7// overflow intrinsics, if the overflow sanitizer is enabled.8 9// Check both 'i' and 'I':10// - 'i' accepts symbolic constants.11// - 'I' doesn't, and is really an immediate-required constraint.12 13// See also PR23517.14 15// CHECK-LABEL: @test_inlineasm_i16// CHECK: call void asm sideeffect "int $0", "i{{.*}}"(i32 2)17void test_inlineasm_i(void) {18  __asm__ __volatile__("int %0" :: "i"(1 + 1));19}20 21// CHECK-LABEL: @test_inlineasm_I22// CHECK: call void asm sideeffect "int $0", "I{{.*}}"(i32 2)23// CHECK: call void asm sideeffect "int $0", "I{{.*}}"(i32 3)24void test_inlineasm_I(void) {25  __asm__ __volatile__("int %0" :: "I"(1 + 1));26 27  // Also check a C non-ICE.28  static const int N = 1;29  __asm__ __volatile__("int %0" :: "I"(N + 2));30}31