Index: cfe/trunk/lib/Basic/Targets/RISCV.cpp =================================================================== --- cfe/trunk/lib/Basic/Targets/RISCV.cpp +++ cfe/trunk/lib/Basic/Targets/RISCV.cpp @@ -75,6 +75,10 @@ // A floating-point register. Info.setAllowsRegister(); return true; + case 'A': + // An address that is held in a general-purpose register. + Info.setAllowsMemory(); + return true; } } Index: cfe/trunk/test/CodeGen/riscv-inline-asm.c =================================================================== --- cfe/trunk/test/CodeGen/riscv-inline-asm.c +++ cfe/trunk/test/CodeGen/riscv-inline-asm.c @@ -38,3 +38,9 @@ // CHECK: call void asm sideeffect "", "f"(double [[FLT_ARG]]) asm volatile ("" :: "f"(d)); } + +void test_A(int *p) { +// CHECK-LABEL: define void @test_A(i32* %p) +// CHECK: call void asm sideeffect "", "*A"(i32* %p) + asm volatile("" :: "A"(*p)); +}