// Verify that we do check for constraints in device-side inline // assembly. Passing an illegal input/output constraint and look // for corresponding error // RUN: %clang_cc1 -triple nvptx-unknown-cuda -fsyntax-only -fcuda-is-device -verify %s __attribute__((device)) void df() { short h; int a; // asm with PTX constraints. Some of them are PTX-specific. __asm__("output constraints" : "=h"(h), // .u16 reg, OK "=a"(a) // expected-error {{invalid output constraint '=a' in asm}} : // None ); __asm__("input constraints" : // None : "f"(0.0), // .f32 reg, OK "d"(0.0), // .f64 reg, OK "h"(0), // .u16 reg, OK "r"(0), // .u32 reg, OK "l"(0), // .u64 reg, OK "a"(0) // expected-error {{invalid input constraint 'a' in asm}} ); } |