diff --git a/lib/CodeGen/CGCall.cpp b/lib/CodeGen/CGCall.cpp
index 1802fe7..33b0475 100644
--- a/lib/CodeGen/CGCall.cpp
+++ b/lib/CodeGen/CGCall.cpp
@@ -23,7 +23,6 @@
 #include "clang/AST/DeclObjC.h"
 #include "clang/Basic/TargetInfo.h"
 #include "clang/Frontend/CodeGenOptions.h"
-#include "llvm/ADT/StringExtras.h"
 #include "llvm/IR/Attributes.h"
 #include "llvm/IR/DataLayout.h"
 #include "llvm/IR/InlineAsm.h"
@@ -1024,66 +1023,9 @@
       FuncAttrs.addAttribute(llvm::Attribute::NoBuiltin);
   } else {
     // Attributes that should go on the function, but not the call site.
-    if (!CodeGenOpts.CodeModel.empty())
-      FuncAttrs.addAttribute("code-model", CodeGenOpts.CodeModel);
-    if (!CodeGenOpts.RelocationModel.empty())
-      FuncAttrs.addAttribute("relocation-model", CodeGenOpts.RelocationModel);
-
-    if (CodeGenOpts.FloatABI == "soft" || CodeGenOpts.FloatABI == "softfp")
-      FuncAttrs.addAttribute("float-abi", "soft");
-    else if (CodeGenOpts.FloatABI == "hard")
-      FuncAttrs.addAttribute("float-abi", "hard");
-
-    if (!CodeGenOpts.DisableFPElim) {
-      /* ignore */ ;
-    } else if (CodeGenOpts.OmitLeafFramePointer) {
-      FuncAttrs.addAttribute("no-frame-pointer-elim-non-leaf");
-    } else {
-      FuncAttrs.addAttribute("no-frame-pointer-elim");
-      FuncAttrs.addAttribute("no-frame-pointer-elim-non-leaf");
-    }
-
-    switch (CodeGenOpts.getFPContractMode()) {
-    case CodeGenOptions::FPC_Off:
-      FuncAttrs.addAttribute("fp-contract-model", "strict");
-      break;
-    case CodeGenOptions::FPC_On:
-      FuncAttrs.addAttribute("fp-contract-model", "standard");
-      break;
-    case CodeGenOptions::FPC_Fast:
-      FuncAttrs.addAttribute("fp-contract-model", "fast");
-      break;
-    }
-
-    if (CodeGenOpts.LessPreciseFPMAD)
-      FuncAttrs.addAttribute("less-precise-fpmad");
-    if (CodeGenOpts.NoInfsFPMath)
-      FuncAttrs.addAttribute("no-infs-fp-math");
-    if (CodeGenOpts.NoNaNsFPMath)
-      FuncAttrs.addAttribute("no-nans-fp-math");
-    if (CodeGenOpts.NoZeroInitializedInBSS)
-      FuncAttrs.addAttribute("no-zero-init-in-bss");
-    if (CodeGenOpts.UnsafeFPMath)
-      FuncAttrs.addAttribute("unsafe-fp-math");
-    if (CodeGenOpts.SoftFloat)
-      FuncAttrs.addAttribute("use-soft-float");
-    if (CodeGenOpts.StackAlignment)
-      FuncAttrs.addAttribute("stack-align-override",
-                             llvm::utostr(CodeGenOpts.StackAlignment));
-    if (CodeGenOpts.StackRealignment)
-      FuncAttrs.addAttribute("realign-stack");
-    if (CodeGenOpts.DisableTailCalls)
-      FuncAttrs.addAttribute("disable-tail-calls");
-    if (!CodeGenOpts.TrapFuncName.empty())
-      FuncAttrs.addAttribute("trap-func-name", CodeGenOpts.TrapFuncName);
-    if (LangOpts.PIELevel != 0)
-      FuncAttrs.addAttribute("pie");
-    if (CodeGenOpts.SSPBufferSize)
-      FuncAttrs.addAttribute("ssp-buffers-size",
-                             llvm::utostr(CodeGenOpts.SSPBufferSize));
-
     if (!TargetOpts.CPU.empty())
       FuncAttrs.addAttribute("target-cpu", TargetOpts.CPU);
+
     if (TargetOpts.Features.size()) {
       llvm::SubtargetFeatures Features;
       for (std::vector<std::string>::const_iterator
diff --git a/test/CodeGen/2008-04-08-NoExceptions.c b/test/CodeGen/2008-04-08-NoExceptions.c
index 1213492..7d533b7 100644
--- a/test/CodeGen/2008-04-08-NoExceptions.c
+++ b/test/CodeGen/2008-04-08-NoExceptions.c
@@ -2,11 +2,12 @@
 
 void f(void);
 void g(void) {
-  // CHECK: define void @g() [[NUW:#[0-9]+]]
+  // CHECK: define void @g() #0
   // CHECK-NOT: call void @f() nounwind
   f();
 }
 
-// CHECK-NOT: declare void @f() [[NUW]]
+// CHECK-NOT: declare void @f() #0
 
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }
+// CHECK: attributes #0 = { nounwind {{.*}} }
+// CHECK: attributes #1 = { "target-features"={{.*}} }
diff --git a/test/CodeGen/address-space-field1.c b/test/CodeGen/address-space-field1.c
index c6b3181..9f23b24 100644
--- a/test/CodeGen/address-space-field1.c
+++ b/test/CodeGen/address-space-field1.c
@@ -1,6 +1,6 @@
 // RUN: %clang_cc1 -emit-llvm -triple x86_64-apple-darwin10 < %s -o - | FileCheck %s
 // CHECK:%struct.S = type { i32, i32 }
-// CHECK:define void @test_addrspace(%struct.S addrspace(1)* %p1, %struct.S addrspace(2)* %p2) [[NUW:#[0-9]+]]
+// CHECK:define void @test_addrspace(%struct.S addrspace(1)* %p1, %struct.S addrspace(2)* %p2) #0
 // CHECK:  [[p1addr:%.*]] = alloca %struct.S addrspace(1)*
 // CHECK:  [[p2addr:%.*]] = alloca %struct.S addrspace(2)*
 // CHECK:  store %struct.S addrspace(1)* %p1, %struct.S addrspace(1)** [[p1addr]]
@@ -37,4 +37,4 @@
   p1->b = p2->a;
 }
 
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }
+// CHECK: attributes #0 = { nounwind "target-features"={{.*}} }
diff --git a/test/CodeGen/alias.c b/test/CodeGen/alias.c
index a8380a3..113b26d 100644
--- a/test/CodeGen/alias.c
+++ b/test/CodeGen/alias.c
@@ -14,7 +14,7 @@
 extern void f1(void);
 extern void f1(void) __attribute((alias("f0")));
 // CHECKBASIC: @f1 = alias void ()* @f0
-// CHECKBASIC: define void @f0() [[NUW:#[0-9]+]] {
+// CHECKBASIC: define void @f0() #0 {
 
 // Make sure that aliases cause referenced values to be emitted.
 // PR3200
@@ -34,17 +34,19 @@
 extern __typeof(inner) inner_a __attribute__((alias("inner")));
 static __typeof(inner_weak) inner_weak_a __attribute__((weakref, alias("inner_weak")));
 // CHECKCC: @inner_a = alias i32 (i32)* @inner
-// CHECKCC: define internal arm_aapcs_vfpcc i32 @inner(i32 %a) [[NUW:#[0-9]+]] {
+// CHECKCC: define internal arm_aapcs_vfpcc i32 @inner(i32 %a) #0 {
 
 int outer(int a) { return inner(a); }
-// CHECKCC: define arm_aapcs_vfpcc i32 @outer(i32 %a) [[NUW]] {
+// CHECKCC: define arm_aapcs_vfpcc i32 @outer(i32 %a) #0 {
 // CHECKCC: call arm_aapcs_vfpcc  i32 @inner(i32 %{{.*}})
 
 int outer_weak(int a) { return inner_weak_a(a); }
-// CHECKCC: define arm_aapcs_vfpcc i32 @outer_weak(i32 %a) [[NUW]] {
+// CHECKCC: define arm_aapcs_vfpcc i32 @outer_weak(i32 %a) #0 {
 // CHECKCC: call arm_aapcs_vfpcc  i32 @inner_weak(i32 %{{.*}})
-// CHECKCC: define internal arm_aapcs_vfpcc i32 @inner_weak(i32 %a) [[NUW]] {
+// CHECKCC: define internal arm_aapcs_vfpcc i32 @inner_weak(i32 %a) #0 {
 
-// CHECKBASIC: attributes [[NUW]] = { nounwind{{.*}} }
+// CHECKBASIC: attributes #0 = { nounwind "target-features"={{.*}} }
+// CHECKBASIC: attributes #1 = { inlinehint nounwind "target-features"={{.*}} }
 
-// CHECKCC: attributes [[NUW]] = { nounwind{{.*}} }
+// CHECKCC: attributes #0 = { nounwind }
+// CHECKCC: attributes #1 = { inlinehint nounwind }
diff --git a/test/CodeGen/attr-naked.c b/test/CodeGen/attr-naked.c
index c07dd8d..8490d46 100644
--- a/test/CodeGen/attr-naked.c
+++ b/test/CodeGen/attr-naked.c
@@ -4,15 +4,15 @@
 
 // Basic functionality check
 // (Note that naked needs to imply noinline to work properly.)
-// CHECK: define void @t1() [[NAKED:#[0-9]+]] {
+// CHECK: define void @t1() #0 {
 void t1()
 {
 }
 
 // Make sure this doesn't explode in the verifier.
 // (It doesn't really make sense, but it isn't invalid.)
-// CHECK: define void @t2() [[NAKED]] {
+// CHECK: define void @t2() #0 {
 __attribute((naked, always_inline)) void t2()  {
 }
 
-// CHECK: attributes [[NAKED]] = { naked noinline nounwind{{.*}} }
+// CHECK: attributes #0 = { naked noinline nounwind "target-features"={{.*}} }
diff --git a/test/CodeGen/attributes.c b/test/CodeGen/attributes.c
index 356a179..49746ba 100644
--- a/test/CodeGen/attributes.c
+++ b/test/CodeGen/attributes.c
@@ -36,39 +36,39 @@
   return t15() + t16;
 }
 
-// CHECK: define void @t1() [[NR:#[0-9]+]] {
+// CHECK: define void @t1() #2 {
 void t1() __attribute__((noreturn));
 void t1() { while (1) {} }
 
-// CHECK: define void @t2() [[NUW:#[0-9]+]] {
+// CHECK: define void @t2() #0 {
 void t2() __attribute__((nothrow));
 void t2() {}
 
-// CHECK: define weak void @t3() [[NUW]] {
+// CHECK: define weak void @t3() #0 {
 void t3() __attribute__((weak));
 void t3() {}
 
-// CHECK: define hidden void @t4() [[NUW]] {
+// CHECK: define hidden void @t4() #0 {
 void t4() __attribute__((visibility("hidden")));
 void t4() {}
 
-// CHECK: define void @t7() [[NR]] {
+// CHECK: define void @t7() #2 {
 void t7() __attribute__((noreturn, nothrow));
 void t7() { while (1) {} }
 
-// CHECK: define void @t10() [[NUW]] section "SECT" {
+// CHECK: define void @t10() #0 section "SECT" {
 void t10(void) __attribute__((section("SECT")));
 void t10(void) {}
-// CHECK: define void @t11() [[NUW]] section "SECT" {
+// CHECK: define void @t11() #0 section "SECT" {
 void __attribute__((section("SECT"))) t11(void) {}
 
-// CHECK: define i32 @t19() [[NUW]] {
+// CHECK: define i32 @t19() #0 {
 extern int t19(void) __attribute__((weak_import));
 int t19(void) {
   return 10;
 }
 
-// CHECK:define void @t20() [[NUW]] {
+// CHECK:define void @t20() #0 {
 // CHECK: call void @abort()
 // CHECK-NEXT: unreachable
 void t20(void) {
@@ -88,7 +88,8 @@
 void __attribute__((section(".foo"))) t22(void);
 void __attribute__((section(".bar"))) t22(void) {}
 
-// CHECK: define void @t22() [[NUW]] section ".bar"
+// CHECK: define void @t22() #0 section ".bar"
 
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }
-// CHECK: attributes [[NR]] = { noreturn nounwind{{.*}} }
+// CHECK: attributes #0 = { nounwind "target-features"={{.*}} }
+// CHECK: attributes #1 = { "target-features"={{.*}} }
+// CHECK: attributes #2 = { noreturn nounwind "target-features"={{.*}} }
diff --git a/test/CodeGen/builtin-attributes.c b/test/CodeGen/builtin-attributes.c
index c5c35c3..79026cb 100644
--- a/test/CodeGen/builtin-attributes.c
+++ b/test/CodeGen/builtin-attributes.c
@@ -58,4 +58,5 @@
   return e;
 }
 
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }
+// CHECK: attributes [[NUW]] = { nounwind }
+// CHECK: attributes #1 = { noreturn }
diff --git a/test/CodeGen/function-attributes.c b/test/CodeGen/function-attributes.c
index 25ca916..1398d34 100644
--- a/test/CodeGen/function-attributes.c
+++ b/test/CodeGen/function-attributes.c
@@ -1,12 +1,12 @@
 // RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm -Os -o - %s | FileCheck %s
-// CHECK: define signext i8 @f0(i32 %x) [[NUW:#[0-9]+]]
-// CHECK: define zeroext i8 @f1(i32 %x) [[NUW]]
-// CHECK: define void @f2(i8 signext %x) [[NUW]]
-// CHECK: define void @f3(i8 zeroext %x) [[NUW]]
-// CHECK: define signext i16 @f4(i32 %x) [[NUW]]
-// CHECK: define zeroext i16 @f5(i32 %x) [[NUW]]
-// CHECK: define void @f6(i16 signext %x) [[NUW]]
-// CHECK: define void @f7(i16 zeroext %x) [[NUW]]
+// CHECK: define signext i8 @f0(i32 %x) #0
+// CHECK: define zeroext i8 @f1(i32 %x) #0
+// CHECK: define void @f2(i8 signext %x) #0
+// CHECK: define void @f3(i8 zeroext %x) #0
+// CHECK: define signext i16 @f4(i32 %x) #0
+// CHECK: define zeroext i16 @f5(i32 %x) #0
+// CHECK: define void @f6(i16 signext %x) #0
+// CHECK: define void @f7(i16 zeroext %x) #0
 
 signed char f0(int x) { return x; }
 
@@ -25,25 +25,25 @@
 void f7(unsigned short x) { }
 
 // CHECK: define void @f8()
-// CHECK: [[AI:#[0-9]+]]
+// CHECK: #1
 // CHECK: {
 void __attribute__((always_inline)) f8(void) { }
 
 // CHECK: call void @f9_t()
-// CHECK: [[NR:#[0-9]+]]
+// CHECK: [[F9:#[0-9]+]]
 // CHECK: }
 void __attribute__((noreturn)) f9_t(void);
 void f9(void) { f9_t(); }
 
 // CHECK: call void @f9a()
-// CHECK: [[NR]]
+// CHECK: [[F9]]
 // CHECK: }
 _Noreturn void f9a(void);
 void f9b(void) { f9a(); }
 
 // FIXME: We should be setting nounwind on calls.
 // CHECK: call i32 @f10_t()
-// CHECK: [[NUW_RN:#[0-9]+]]
+// CHECK: [[F10_T:#[0-9]+]]
 // CHECK: {
 int __attribute__((const)) f10_t(void);
 int f10(void) { return f10_t(); }
@@ -55,7 +55,7 @@
   return arg ? 0 : f10_t();
 }
 
-// CHECK: define void @f13() [[NUW]]
+// CHECK: define void @f13() #0
 void f13(void) __attribute__((pure)) __attribute__((const));
 void f13(void){}
 
@@ -82,24 +82,24 @@
 
 // <rdar://problem/7102668> [irgen] clang isn't setting the optsize bit on functions
 // CHECK: define void @f15
-// CHECK: [[NUW]]
+// CHECK: #0
 // CHECK: {
 void f15(void) {
 }
 
 // PR5254
 // CHECK: define void @f16
-// CHECK: [[ALIGN:#[0-9]+]]
+// CHECK: #6
 // CHECK: {
 void __attribute__((force_align_arg_pointer)) f16(void) {
 }
 
 // PR11038
 // CHECK: define void @f18()
-// CHECK: [[RT:#[0-9]+]]
+// CHECK: #7
 // CHECK: {
 // CHECK: call void @f17()
-// CHECK: [[RT_CALL:#[0-9]+]]
+// CHECK: [[F17:#[0-9]+]]
 // CHECK: ret void
 __attribute__ ((returns_twice)) void f17(void);
 __attribute__ ((returns_twice)) void f18(void) {
@@ -109,7 +109,7 @@
 // CHECK: define void @f19()
 // CHECK: {
 // CHECK: call i32 @setjmp(i32* null)
-// CHECK: [[RT_CALL]]
+// CHECK: [[F17]]
 // CHECK: ret void
 typedef int jmp_buf[((9 * 2) + 3 + 16)];
 int setjmp(jmp_buf);
@@ -117,10 +117,15 @@
   setjmp(0);
 }
 
-// CHECK: attributes [[NUW]] = { nounwind optsize readnone{{.*}} }
-// CHECK: attributes [[AI]] = { alwaysinline nounwind optsize readnone{{.*}} }
-// CHECK: attributes [[ALIGN]] = { nounwind optsize readnone alignstack=16{{.*}} }
-// CHECK: attributes [[RT]] = { nounwind optsize returns_twice{{.*}} }
-// CHECK: attributes [[NR]] = { noreturn nounwind optsize }
-// CHECK: attributes [[NUW_RN]] = { nounwind optsize readnone }
-// CHECK: attributes [[RT_CALL]] = { nounwind optsize returns_twice }
+// CHECK: attributes #0 = { nounwind optsize readnone "target-features"={{.*}} }
+// CHECK: attributes #1 = { alwaysinline nounwind optsize readnone "target-features"={{.*}} }
+// CHECK: attributes #2 = { noreturn nounwind optsize "target-features"={{.*}} }
+// CHECK: attributes #3 = { noreturn optsize "target-features"={{.*}} }
+// CHECK: attributes #4 = { nounwind optsize "target-features"={{.*}} }
+// CHECK: attributes #5 = { optsize "target-features"={{.*}} }
+// CHECK: attributes #6 = { nounwind optsize readnone alignstack=16 "target-features"={{.*}} }
+// CHECK: attributes #7 = { nounwind optsize returns_twice "target-features"={{.*}} }
+// CHECK: attributes #8 = { optsize returns_twice "target-features"={{.*}}
+// CHECK: attributes [[F9]] = { noreturn nounwind optsize }
+// CHECK: attributes [[F10_T]] = { nounwind optsize readnone }
+// CHECK: attributes [[F17]] = { nounwind optsize returns_twice }
diff --git a/test/CodeGen/incomplete-function-type-2.c b/test/CodeGen/incomplete-function-type-2.c
index 41dd5fe..b696f77 100644
--- a/test/CodeGen/incomplete-function-type-2.c
+++ b/test/CodeGen/incomplete-function-type-2.c
@@ -2,7 +2,7 @@
 
 // PR14355: don't crash
 // Keep this test in its own file because CodeGenTypes has global state.
-// CHECK: define void @test10_foo({}* %p1.coerce) [[NUW:#[0-9]+]] {
+// CHECK: define void @test10_foo({}* %p1.coerce) #0 {
 struct test10_B;
 typedef struct test10_B test10_F3(double);
 void test10_foo(test10_F3 p1);
@@ -16,4 +16,4 @@
   p1(0.0);
 }
 
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }
+// CHECK: attributes #0 = { nounwind "target-features"={{.*}} }
diff --git a/test/CodeGen/libcall-declarations.c b/test/CodeGen/libcall-declarations.c
index d07590f..c24839a 100644
--- a/test/CodeGen/libcall-declarations.c
+++ b/test/CodeGen/libcall-declarations.c
@@ -86,110 +86,111 @@
   sqrtf, tan, tanl, tanf, trunc, truncl, truncf
 };
 
-// CHECK-NOERRNO: declare double @acos(double) [[NUW:#[0-9]+]]
-// CHECK-NOERRNO: declare x86_fp80 @acosl(x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @acosf(float) [[NUW]]
-// CHECK-NOERRNO: declare double @asin(double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @asinl(x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @asinf(float) [[NUW]]
-// CHECK-NOERRNO: declare double @atan(double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @atanl(x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @atanf(float) [[NUW]]
-// CHECK-NOERRNO: declare double @atan2(double, double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @atan2l(x86_fp80, x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @atan2f(float, float) [[NUW]]
-// CHECK-NOERRNO: declare double @ceil(double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @ceill(x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @ceilf(float) [[NUW]]
-// CHECK-NOERRNO: declare double @copysign(double, double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @copysignl(x86_fp80, x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @copysignf(float, float) [[NUW]]
-// CHECK-NOERRNO: declare double @cos(double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @cosl(x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @cosf(float) [[NUW]]
-// CHECK-NOERRNO: declare double @exp(double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @expl(x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @expf(float) [[NUW]]
-// CHECK-NOERRNO: declare double @exp2(double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @exp2l(x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @exp2f(float) [[NUW]]
-// CHECK-NOERRNO: declare double @fabs(double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @fabsl(x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @fabsf(float) [[NUW]]
-// CHECK-NOERRNO: declare double @floor(double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @floorl(x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @floorf(float) [[NUW]]
-// CHECK-NOERRNO: declare double @fma(double, double, double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @fmal(x86_fp80, x86_fp80, x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @fmaf(float, float, float) [[NUW]]
-// CHECK-NOERRNO: declare double @fmax(double, double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @fmaxl(x86_fp80, x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @fmaxf(float, float) [[NUW]]
-// CHECK-NOERRNO: declare double @fmin(double, double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @fminl(x86_fp80, x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @fminf(float, float) [[NUW]]
-// CHECK-NOERRNO: declare double @log(double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @logl(x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @logf(float) [[NUW]]
-// CHECK-NOERRNO: declare double @log2(double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @log2l(x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @log2f(float) [[NUW]]
-// CHECK-NOERRNO: declare double @nearbyint(double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @nearbyintl(x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @nearbyintf(float) [[NUW]]
-// CHECK-NOERRNO: declare double @pow(double, double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @powl(x86_fp80, x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @powf(float, float) [[NUW]]
-// CHECK-NOERRNO: declare double @rint(double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @rintl(x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @rintf(float) [[NUW]]
-// CHECK-NOERRNO: declare double @round(double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @roundl(x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @roundf(float) [[NUW]]
-// CHECK-NOERRNO: declare double @sin(double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @sinl(x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @sinf(float) [[NUW]]
-// CHECK-NOERRNO: declare double @sqrt(double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @sqrtl(x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @sqrtf(float) [[NUW]]
-// CHECK-NOERRNO: declare double @tan(double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @tanl(x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @tanf(float) [[NUW]]
-// CHECK-NOERRNO: declare double @trunc(double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @truncl(x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @truncf(float) [[NUW]]
+// CHECK-NOERRNO: declare double @acos(double) #0
+// CHECK-NOERRNO: declare x86_fp80 @acosl(x86_fp80) #0
+// CHECK-NOERRNO: declare float @acosf(float) #0
+// CHECK-NOERRNO: declare double @asin(double) #0
+// CHECK-NOERRNO: declare x86_fp80 @asinl(x86_fp80) #0
+// CHECK-NOERRNO: declare float @asinf(float) #0
+// CHECK-NOERRNO: declare double @atan(double) #0
+// CHECK-NOERRNO: declare x86_fp80 @atanl(x86_fp80) #0
+// CHECK-NOERRNO: declare float @atanf(float) #0
+// CHECK-NOERRNO: declare double @atan2(double, double) #0
+// CHECK-NOERRNO: declare x86_fp80 @atan2l(x86_fp80, x86_fp80) #0
+// CHECK-NOERRNO: declare float @atan2f(float, float) #0
+// CHECK-NOERRNO: declare double @ceil(double) #0
+// CHECK-NOERRNO: declare x86_fp80 @ceill(x86_fp80) #0
+// CHECK-NOERRNO: declare float @ceilf(float) #0
+// CHECK-NOERRNO: declare double @copysign(double, double) #0
+// CHECK-NOERRNO: declare x86_fp80 @copysignl(x86_fp80, x86_fp80) #0
+// CHECK-NOERRNO: declare float @copysignf(float, float) #0
+// CHECK-NOERRNO: declare double @cos(double) #0
+// CHECK-NOERRNO: declare x86_fp80 @cosl(x86_fp80) #0
+// CHECK-NOERRNO: declare float @cosf(float) #0
+// CHECK-NOERRNO: declare double @exp(double) #0
+// CHECK-NOERRNO: declare x86_fp80 @expl(x86_fp80) #0
+// CHECK-NOERRNO: declare float @expf(float) #0
+// CHECK-NOERRNO: declare double @exp2(double) #0
+// CHECK-NOERRNO: declare x86_fp80 @exp2l(x86_fp80) #0
+// CHECK-NOERRNO: declare float @exp2f(float) #0
+// CHECK-NOERRNO: declare double @fabs(double) #0
+// CHECK-NOERRNO: declare x86_fp80 @fabsl(x86_fp80) #0
+// CHECK-NOERRNO: declare float @fabsf(float) #0
+// CHECK-NOERRNO: declare double @floor(double) #0
+// CHECK-NOERRNO: declare x86_fp80 @floorl(x86_fp80) #0
+// CHECK-NOERRNO: declare float @floorf(float) #0
+// CHECK-NOERRNO: declare double @fma(double, double, double) #0
+// CHECK-NOERRNO: declare x86_fp80 @fmal(x86_fp80, x86_fp80, x86_fp80) #0
+// CHECK-NOERRNO: declare float @fmaf(float, float, float) #0
+// CHECK-NOERRNO: declare double @fmax(double, double) #0
+// CHECK-NOERRNO: declare x86_fp80 @fmaxl(x86_fp80, x86_fp80) #0
+// CHECK-NOERRNO: declare float @fmaxf(float, float) #0
+// CHECK-NOERRNO: declare double @fmin(double, double) #0
+// CHECK-NOERRNO: declare x86_fp80 @fminl(x86_fp80, x86_fp80) #0
+// CHECK-NOERRNO: declare float @fminf(float, float) #0
+// CHECK-NOERRNO: declare double @log(double) #0
+// CHECK-NOERRNO: declare x86_fp80 @logl(x86_fp80) #0
+// CHECK-NOERRNO: declare float @logf(float) #0
+// CHECK-NOERRNO: declare double @log2(double) #0
+// CHECK-NOERRNO: declare x86_fp80 @log2l(x86_fp80) #0
+// CHECK-NOERRNO: declare float @log2f(float) #0
+// CHECK-NOERRNO: declare double @nearbyint(double) #0
+// CHECK-NOERRNO: declare x86_fp80 @nearbyintl(x86_fp80) #0
+// CHECK-NOERRNO: declare float @nearbyintf(float) #0
+// CHECK-NOERRNO: declare double @pow(double, double) #0
+// CHECK-NOERRNO: declare x86_fp80 @powl(x86_fp80, x86_fp80) #0
+// CHECK-NOERRNO: declare float @powf(float, float) #0
+// CHECK-NOERRNO: declare double @rint(double) #0
+// CHECK-NOERRNO: declare x86_fp80 @rintl(x86_fp80) #0
+// CHECK-NOERRNO: declare float @rintf(float) #0
+// CHECK-NOERRNO: declare double @round(double) #0
+// CHECK-NOERRNO: declare x86_fp80 @roundl(x86_fp80) #0
+// CHECK-NOERRNO: declare float @roundf(float) #0
+// CHECK-NOERRNO: declare double @sin(double) #0
+// CHECK-NOERRNO: declare x86_fp80 @sinl(x86_fp80) #0
+// CHECK-NOERRNO: declare float @sinf(float) #0
+// CHECK-NOERRNO: declare double @sqrt(double) #0
+// CHECK-NOERRNO: declare x86_fp80 @sqrtl(x86_fp80) #0
+// CHECK-NOERRNO: declare float @sqrtf(float) #0
+// CHECK-NOERRNO: declare double @tan(double) #0
+// CHECK-NOERRNO: declare x86_fp80 @tanl(x86_fp80) #0
+// CHECK-NOERRNO: declare float @tanf(float) #0
+// CHECK-NOERRNO: declare double @trunc(double) #0
+// CHECK-NOERRNO: declare x86_fp80 @truncl(x86_fp80) #0
+// CHECK-NOERRNO: declare float @truncf(float) #0
 
-// CHECK-ERRNO: declare double @ceil(double) [[NUW:#[0-9]+]]
-// CHECK-ERRNO: declare x86_fp80 @ceill(x86_fp80) [[NUW]]
-// CHECK-ERRNO: declare float @ceilf(float) [[NUW]]
-// CHECK-ERRNO: declare double @copysign(double, double) [[NUW]]
-// CHECK-ERRNO: declare x86_fp80 @copysignl(x86_fp80, x86_fp80) [[NUW]]
-// CHECK-ERRNO: declare float @copysignf(float, float) [[NUW]]
-// CHECK-ERRNO: declare double @fabs(double) [[NUW]]
-// CHECK-ERRNO: declare x86_fp80 @fabsl(x86_fp80) [[NUW]]
-// CHECK-ERRNO: declare float @fabsf(float) [[NUW]]
-// CHECK-ERRNO: declare double @floor(double) [[NUW]]
-// CHECK-ERRNO: declare x86_fp80 @floorl(x86_fp80) [[NUW]]
-// CHECK-ERRNO: declare float @floorf(float) [[NUW]]
-// CHECK-ERRNO: declare double @fmax(double, double) [[NUW]]
-// CHECK-ERRNO: declare x86_fp80 @fmaxl(x86_fp80, x86_fp80) [[NUW]]
-// CHECK-ERRNO: declare float @fmaxf(float, float) [[NUW]]
-// CHECK-ERRNO: declare double @fmin(double, double) [[NUW]]
-// CHECK-ERRNO: declare x86_fp80 @fminl(x86_fp80, x86_fp80) [[NUW]]
-// CHECK-ERRNO: declare float @fminf(float, float) [[NUW]]
-// CHECK-ERRNO: declare double @nearbyint(double) [[NUW]]
-// CHECK-ERRNO: declare x86_fp80 @nearbyintl(x86_fp80) [[NUW]]
-// CHECK-ERRNO: declare float @nearbyintf(float) [[NUW]]
-// CHECK-ERRNO: declare double @rint(double) [[NUW]]
-// CHECK-ERRNO: declare x86_fp80 @rintl(x86_fp80) [[NUW]]
-// CHECK-ERRNO: declare float @rintf(float) [[NUW]]
-// CHECK-ERRNO: declare double @round(double) [[NUW]]
-// CHECK-ERRNO: declare x86_fp80 @roundl(x86_fp80) [[NUW]]
-// CHECK-ERRNO: declare float @roundf(float) [[NUW]]
-// CHECK-ERRNO: declare double @trunc(double) [[NUW]]
-// CHECK-ERRNO: declare x86_fp80 @truncl(x86_fp80) [[NUW]]
-// CHECK-ERRNO: declare float @truncf(float) [[NUW]]
+// CHECK-ERRNO: declare double @ceil(double) #1
+// CHECK-ERRNO: declare x86_fp80 @ceill(x86_fp80) #1
+// CHECK-ERRNO: declare float @ceilf(float) #1
+// CHECK-ERRNO: declare double @copysign(double, double) #1
+// CHECK-ERRNO: declare x86_fp80 @copysignl(x86_fp80, x86_fp80) #1
+// CHECK-ERRNO: declare float @copysignf(float, float) #1
+// CHECK-ERRNO: declare double @fabs(double) #1
+// CHECK-ERRNO: declare x86_fp80 @fabsl(x86_fp80) #1
+// CHECK-ERRNO: declare float @fabsf(float) #1
+// CHECK-ERRNO: declare double @floor(double) #1
+// CHECK-ERRNO: declare x86_fp80 @floorl(x86_fp80) #1
+// CHECK-ERRNO: declare float @floorf(float) #1
+// CHECK-ERRNO: declare double @fmax(double, double) #1
+// CHECK-ERRNO: declare x86_fp80 @fmaxl(x86_fp80, x86_fp80) #1
+// CHECK-ERRNO: declare float @fmaxf(float, float) #1
+// CHECK-ERRNO: declare double @fmin(double, double) #1
+// CHECK-ERRNO: declare x86_fp80 @fminl(x86_fp80, x86_fp80) #1
+// CHECK-ERRNO: declare float @fminf(float, float) #1
+// CHECK-ERRNO: declare double @nearbyint(double) #1
+// CHECK-ERRNO: declare x86_fp80 @nearbyintl(x86_fp80) #1
+// CHECK-ERRNO: declare float @nearbyintf(float) #1
+// CHECK-ERRNO: declare double @rint(double) #1
+// CHECK-ERRNO: declare x86_fp80 @rintl(x86_fp80) #1
+// CHECK-ERRNO: declare float @rintf(float) #1
+// CHECK-ERRNO: declare double @round(double) #1
+// CHECK-ERRNO: declare x86_fp80 @roundl(x86_fp80) #1
+// CHECK-ERRNO: declare float @roundf(float) #1
+// CHECK-ERRNO: declare double @trunc(double) #1
+// CHECK-ERRNO: declare x86_fp80 @truncl(x86_fp80) #1
+// CHECK-ERRNO: declare float @truncf(float) #1
 
-// CHECK-NOERRNO: attributes [[NUW]] = { nounwind readnone{{.*}} }
+// CHECK-NOERRNO: attributes #0 = { nounwind readnone "target-features"={{.*}} }
 
-// CHECK-ERRNO: attributes [[NUW]] = { nounwind readnone{{.*}} }
+// CHECK-ERRNO: attributes #0 = { "target-features"={{.*}} }
+// CHECK-ERRNO: attributes #1 = { nounwind readnone "target-features"={{.*}} }
diff --git a/test/CodeGen/libcalls.c b/test/CodeGen/libcalls.c
index d882b0e..eb233ba 100644
--- a/test/CodeGen/libcalls.c
+++ b/test/CodeGen/libcalls.c
@@ -24,9 +24,9 @@
 // CHECK-YES: declare float @sqrtf(float)
 // CHECK-YES: declare double @sqrt(double)
 // CHECK-YES: declare x86_fp80 @sqrtl(x86_fp80)
-// CHECK-NO: declare float @sqrtf(float) [[NUW_RN1:#[0-9]+]]
-// CHECK-NO: declare double @sqrt(double) [[NUW_RN1]]
-// CHECK-NO: declare x86_fp80 @sqrtl(x86_fp80) [[NUW_RN1]]
+// CHECK-NO: declare float @sqrtf(float) #1
+// CHECK-NO: declare double @sqrt(double) #1
+// CHECK-NO: declare x86_fp80 @sqrtl(x86_fp80) #1
 
 // CHECK-YES: define void @test_pow
 // CHECK-NO: define void @test_pow
@@ -47,9 +47,9 @@
 // CHECK-YES: declare float @powf(float, float)
 // CHECK-YES: declare double @pow(double, double)
 // CHECK-YES: declare x86_fp80 @powl(x86_fp80, x86_fp80)
-// CHECK-NO: declare float @llvm.pow.f32(float, float) [[NUW_RO:#[0-9]+]]
-// CHECK-NO: declare double @llvm.pow.f64(double, double) [[NUW_RO]]
-// CHECK-NO: declare x86_fp80 @llvm.pow.f80(x86_fp80, x86_fp80) [[NUW_RO]]
+// CHECK-NO: declare float @llvm.pow.f32(float, float) #2
+// CHECK-NO: declare double @llvm.pow.f64(double, double) #2
+// CHECK-NO: declare x86_fp80 @llvm.pow.f80(x86_fp80, x86_fp80) #2
 
 // CHECK-YES: define void @test_fma
 // CHECK-NO: define void @test_fma
@@ -67,12 +67,12 @@
     long double l2 = fmal(a2, a2, a2);
 }
 
-// CHECK-YES: declare float @llvm.fma.f32(float, float, float) [[NUW_RN:#[0-9]+]]
-// CHECK-YES: declare double @llvm.fma.f64(double, double, double) [[NUW_RN]]
-// CHECK-YES: declare x86_fp80 @llvm.fma.f80(x86_fp80, x86_fp80, x86_fp80) [[NUW_RN]]
-// CHECK-NO: declare float @llvm.fma.f32(float, float, float) [[NUW_RN2:#[0-9]+]]
-// CHECK-NO: declare double @llvm.fma.f64(double, double, double) [[NUW_RN2]]
-// CHECK-NO: declare x86_fp80 @llvm.fma.f80(x86_fp80, x86_fp80, x86_fp80) [[NUW_RN2]]
+// CHECK-YES: declare float @llvm.fma.f32(float, float, float) #2
+// CHECK-YES: declare double @llvm.fma.f64(double, double, double) #2
+// CHECK-YES: declare x86_fp80 @llvm.fma.f80(x86_fp80, x86_fp80, x86_fp80) #2
+// CHECK-NO: declare float @llvm.fma.f32(float, float, float) #3
+// CHECK-NO: declare double @llvm.fma.f64(double, double, double) #3
+// CHECK-NO: declare x86_fp80 @llvm.fma.f80(x86_fp80, x86_fp80, x86_fp80) #3
 
 // Just checking to make sure these library functions are marked readnone
 void test_builtins(double d, float f, long double ld) {
@@ -81,46 +81,49 @@
   double atan_ = atan(d);
   long double atanl_ = atanl(ld);
   float atanf_ = atanf(f);
-// CHECK-NO: declare double @atan(double) [[NUW_RN1]]
-// CHECK-NO: declare x86_fp80 @atanl(x86_fp80) [[NUW_RN1]]
-// CHECK-NO: declare float @atanf(float) [[NUW_RN1]]
-// CHECK-YES-NOT: declare double @atan(double) [[NUW_RN]]
-// CHECK-YES-NOT: declare x86_fp80 @atanl(x86_fp80) [[NUW_RN]]
-// CHECK-YES-NOT: declare float @atanf(float) [[NUW_RN]]
+// CHECK-NO: declare double @atan(double) #1
+// CHECK-NO: declare x86_fp80 @atanl(x86_fp80) #1
+// CHECK-NO: declare float @atanf(float) #1
+// CHECK-YES-NOT: declare double @atan(double) #2
+// CHECK-YES-NOT: declare x86_fp80 @atanl(x86_fp80) #2
+// CHECK-YES-NOT: declare float @atanf(float) #2
 
   double atan2_ = atan2(d, 2);
   long double atan2l_ = atan2l(ld, ld);
   float atan2f_ = atan2f(f, f);
-// CHECK-NO: declare double @atan2(double, double) [[NUW_RN1]]
-// CHECK-NO: declare x86_fp80 @atan2l(x86_fp80, x86_fp80) [[NUW_RN1]]
-// CHECK-NO: declare float @atan2f(float, float) [[NUW_RN1]]
-// CHECK-YES-NOT: declare double @atan2(double, double) [[NUW_RN]]
-// CHECK-YES-NOT: declare x86_fp80 @atan2l(x86_fp80, x86_fp80) [[NUW_RN]]
-// CHECK-YES-NOT: declare float @atan2f(float, float) [[NUW_RN]]
+// CHECK-NO: declare double @atan2(double, double) #1
+// CHECK-NO: declare x86_fp80 @atan2l(x86_fp80, x86_fp80) #1
+// CHECK-NO: declare float @atan2f(float, float) #1
+// CHECK-YES-NOT: declare double @atan2(double, double) #2
+// CHECK-YES-NOT: declare x86_fp80 @atan2l(x86_fp80, x86_fp80) #2
+// CHECK-YES-NOT: declare float @atan2f(float, float) #2
 
   double exp_ = exp(d);
   long double expl_ = expl(ld);
   float expf_ = expf(f);
-// CHECK-NO: declare double @exp(double) [[NUW_RN1]]
-// CHECK-NO: declare x86_fp80 @expl(x86_fp80) [[NUW_RN1]]
-// CHECK-NO: declare float @expf(float) [[NUW_RN1]]
-// CHECK-YES-NOT: declare double @exp(double) [[NUW_RN]]
-// CHECK-YES-NOT: declare x86_fp80 @expl(x86_fp80) [[NUW_RN]]
-// CHECK-YES-NOT: declare float @expf(float) [[NUW_RN]]
+// CHECK-NO: declare double @exp(double) #1
+// CHECK-NO: declare x86_fp80 @expl(x86_fp80) #1
+// CHECK-NO: declare float @expf(float) #1
+// CHECK-YES-NOT: declare double @exp(double) #2
+// CHECK-YES-NOT: declare x86_fp80 @expl(x86_fp80) #2
+// CHECK-YES-NOT: declare float @expf(float) #2
 
   double log_ = log(d);
   long double logl_ = logl(ld);
   float logf_ = logf(f);
-// CHECK-NO: declare double @log(double) [[NUW_RN1]]
-// CHECK-NO: declare x86_fp80 @logl(x86_fp80) [[NUW_RN1]]
-// CHECK-NO: declare float @logf(float) [[NUW_RN1]]
-// CHECK-YES-NOT: declare double @log(double) [[NUW_RN]]
-// CHECK-YES-NOT: declare x86_fp80 @logl(x86_fp80) [[NUW_RN]]
-// CHECK-YES-NOT: declare float @logf(float) [[NUW_RN]]
+// CHECK-NO: declare double @log(double) #1
+// CHECK-NO: declare x86_fp80 @logl(x86_fp80) #1
+// CHECK-NO: declare float @logf(float) #1
+// CHECK-YES-NOT: declare double @log(double) #2
+// CHECK-YES-NOT: declare x86_fp80 @logl(x86_fp80) #2
+// CHECK-YES-NOT: declare float @logf(float) #2
 }
 
-// CHECK-YES: attributes [[NUW_RN]] = { nounwind readnone }
+// CHECK-YES: attributes #0 = { nounwind "target-features"={{.*}} }
+// CHECK-YES: attributes #1 = { "target-features"={{.*}} }
+// CHECK-YES: attributes #2 = { nounwind readnone }
 
-// CHECK-NO: attributes [[NUW_RN1]] = { nounwind readnone{{.*}} }
-// CHECK-NO: attributes [[NUW_RO]] = { nounwind readonly }
-// CHECK-NO: attributes [[NUW_RN2]] = { nounwind readnone }
+// CHECK-NO: attributes #0 = { nounwind "target-features"={{.*}} }
+// CHECK-NO: attributes #1 = { nounwind readnone "target-features"={{.*}} }
+// CHECK-NO: attributes #2 = { nounwind readonly }
+// CHECK-NO: attributes #3 = { nounwind readnone }
diff --git a/test/CodeGen/mips-vector-arg.c b/test/CodeGen/mips-vector-arg.c
index 3202ebd..9b2b35c 100644
--- a/test/CodeGen/mips-vector-arg.c
+++ b/test/CodeGen/mips-vector-arg.c
@@ -8,26 +8,26 @@
 typedef float  v4sf __attribute__ ((__vector_size__ (16)));
 typedef int v4i32 __attribute__ ((__vector_size__ (16)));
 
-// O32: define void @test_v4sf(i32 %a1.coerce0, i32 %a1.coerce1, i32 %a1.coerce2, i32 %a1.coerce3, i32 %a2, i32, i32 %a3.coerce0, i32 %a3.coerce1, i32 %a3.coerce2, i32 %a3.coerce3) [[NUW1:#[0-9]+]]
+// O32: define void @test_v4sf(i32 %a1.coerce0, i32 %a1.coerce1, i32 %a1.coerce2, i32 %a1.coerce3, i32 %a2, i32, i32 %a3.coerce0, i32 %a3.coerce1, i32 %a3.coerce2, i32 %a3.coerce3) #0
 // O32: declare i32 @test_v4sf_2(i32, i32, i32, i32, i32, i32, i32, i32, i32, i32)
-// N64: define void @test_v4sf(i64 %a1.coerce0, i64 %a1.coerce1, i32 %a2, i64, i64 %a3.coerce0, i64 %a3.coerce1) [[NUW1:#[0-9]+]]
+// N64: define void @test_v4sf(i64 %a1.coerce0, i64 %a1.coerce1, i32 %a2, i64, i64 %a3.coerce0, i64 %a3.coerce1) #0
 // N64: declare i32 @test_v4sf_2(i64, i64, i32, i64, i64, i64)
 extern test_v4sf_2(v4sf, int, v4sf);
 void test_v4sf(v4sf a1, int a2, v4sf a3) {
   test_v4sf_2(a3, a2, a1);
 }
 
-// O32: define void @test_v4i32(i32 %a1.coerce0, i32 %a1.coerce1, i32 %a1.coerce2, i32 %a1.coerce3, i32 %a2, i32, i32 %a3.coerce0, i32 %a3.coerce1, i32 %a3.coerce2, i32 %a3.coerce3) [[NUW2:#[0-9]+]]
+// O32: define void @test_v4i32(i32 %a1.coerce0, i32 %a1.coerce1, i32 %a1.coerce2, i32 %a1.coerce3, i32 %a2, i32, i32 %a3.coerce0, i32 %a3.coerce1, i32 %a3.coerce2, i32 %a3.coerce3) #0
 // O32: declare i32 @test_v4i32_2(i32, i32, i32, i32, i32, i32, i32, i32, i32, i32)
-// N64: define void @test_v4i32(i64 %a1.coerce0, i64 %a1.coerce1, i32 %a2, i64, i64 %a3.coerce0, i64 %a3.coerce1) [[NUW2:#[0-9]+]]
+// N64: define void @test_v4i32(i64 %a1.coerce0, i64 %a1.coerce1, i32 %a2, i64, i64 %a3.coerce0, i64 %a3.coerce1) #0
 // N64: declare i32 @test_v4i32_2(i64, i64, i32, i64, i64, i64)
 extern test_v4i32_2(v4i32, int, v4i32);
 void test_v4i32(v4i32 a1, int a2, v4i32 a3) {
   test_v4i32_2(a3, a2, a1);
 }
 
-// O32: attributes [[NUW1]] = { nounwind{{.*}} }
-// O32: attributes [[NUW2]] = { nounwind{{.*}} }
+// O32: attributes #0 = { nounwind "target-cpu"={{.*}} "target-features"={{.*}} }
+// O32: attributes #1 = { "target-cpu"={{.*}} "target-features"={{.*}} }
 
-// N64: attributes [[NUW1]] = { nounwind{{.*}} }
-// N64: attributes [[NUW2]] = { nounwind{{.*}} }
+// N64: attributes #0 = { nounwind "target-cpu"={{.*}} "target-features"={{.*}} }
+// N64: attributes #1 = { "target-cpu"={{.*}} "target-features"={{.*}} }
diff --git a/test/CodeGen/mrtd.c b/test/CodeGen/mrtd.c
index a40a59a..743a9d5 100644
--- a/test/CodeGen/mrtd.c
+++ b/test/CodeGen/mrtd.c
@@ -2,7 +2,7 @@
 
 void baz(int arg);
 
-// CHECK: define x86_stdcallcc void @foo(i32 %arg) [[NUW:#[0-9]+]]
+// CHECK: define x86_stdcallcc void @foo(i32 %arg) #0
 void foo(int arg) {
 // CHECK: call x86_stdcallcc i32 bitcast (i32 (...)* @bar to i32 (i32)*)(
   bar(arg);
@@ -14,4 +14,5 @@
 
 // CHECK: declare x86_stdcallcc void @baz(i32)
 
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }
+// CHECK: attributes #0 = { nounwind "target-features"={{.*}} }
+// CHECK: attributes #1 = { "target-features"={{.*}} }
diff --git a/test/CodeGen/ms-declspecs.c b/test/CodeGen/ms-declspecs.c
index 26bdc58..c116fbe 100644
--- a/test/CodeGen/ms-declspecs.c
+++ b/test/CodeGen/ms-declspecs.c
@@ -8,21 +8,21 @@
 // CHECK: @u = {{.*}}zeroinitializer, align 16
 
 
-// CHECK: define void @t3() [[NAKED:#[0-9]+]] {
+// CHECK: define void @t3() #0 {
 __declspec(naked) void t3() {}
 
-// CHECK: define void @t22() [[NUW:#[0-9]+]]
+// CHECK: define void @t22() #1
 void __declspec(nothrow) t22();
 void t22() {}
 
-// CHECK: define void @t2() [[NI:#[0-9]+]] {
+// CHECK: define void @t2() #2 {
 __declspec(noinline) void t2() {}
 
 // CHECK: call void @f20_t() [[NR:#[0-9]+]]
 __declspec(noreturn) void f20_t(void);
 void f20(void) { f20_t(); }
 
-// CHECK: attributes [[NAKED]] = { naked noinline nounwind{{.*}} }
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }
-// CHECK: attributes [[NI]] = { noinline nounwind{{.*}} }
+// CHECK: attributes #0 = { naked noinline nounwind "target-features"={{.*}} }
+// CHECK: attributes #1 = { nounwind "target-features"={{.*}} }
+// CHECK: attributes #2 = { noinline nounwind "target-features"={{.*}} }
 // CHECK: attributes [[NR]] = { noreturn }
diff --git a/test/CodeGen/ppc64-complex-parms.c b/test/CodeGen/ppc64-complex-parms.c
index 92a6fa5..4c7b980 100644
--- a/test/CodeGen/ppc64-complex-parms.c
+++ b/test/CodeGen/ppc64-complex-parms.c
@@ -9,55 +9,55 @@
   return crealf(x);
 }
 
-// CHECK: define float @foo_float(float {{[%A-Za-z0-9.]+}}, float {{[%A-Za-z0-9.]+}}) [[NUW:#[0-9]+]] {
+// CHECK: define float @foo_float(float {{[%A-Za-z0-9.]+}}, float {{[%A-Za-z0-9.]+}}) #0 {
 
 double foo_double(_Complex double x) {
   return creal(x);
 }
 
-// CHECK: define double @foo_double(double {{[%A-Za-z0-9.]+}}, double {{[%A-Za-z0-9.]+}}) [[NUW]] {
+// CHECK: define double @foo_double(double {{[%A-Za-z0-9.]+}}, double {{[%A-Za-z0-9.]+}}) #0 {
 
 long double foo_long_double(_Complex long double x) {
   return creall(x);
 }
 
-// CHECK: define ppc_fp128 @foo_long_double(ppc_fp128 {{[%A-Za-z0-9.]+}}, ppc_fp128 {{[%A-Za-z0-9.]+}}) [[NUW]] {
+// CHECK: define ppc_fp128 @foo_long_double(ppc_fp128 {{[%A-Za-z0-9.]+}}, ppc_fp128 {{[%A-Za-z0-9.]+}}) #0 {
 
 int foo_int(_Complex int x) {
   return __real__ x;
 }
 
-// CHECK: define signext i32 @foo_int(i32 {{[%A-Za-z0-9.]+}}, i32 {{[%A-Za-z0-9.]+}}) [[NUW]] {
+// CHECK: define signext i32 @foo_int(i32 {{[%A-Za-z0-9.]+}}, i32 {{[%A-Za-z0-9.]+}}) #0 {
 
 short foo_short(_Complex short x) {
   return __real__ x;
 }
 
-// CHECK: define signext i16 @foo_short(i16 {{[%A-Za-z0-9.]+}}, i16 {{[%A-Za-z0-9.]+}}) [[NUW]] {
+// CHECK: define signext i16 @foo_short(i16 {{[%A-Za-z0-9.]+}}, i16 {{[%A-Za-z0-9.]+}}) #0 {
 
 signed char foo_char(_Complex signed char x) {
   return __real__ x;
 }
 
-// CHECK: define signext i8 @foo_char(i8 {{[%A-Za-z0-9.]+}}, i8 {{[%A-Za-z0-9.]+}}) [[NUW]] {
+// CHECK: define signext i8 @foo_char(i8 {{[%A-Za-z0-9.]+}}, i8 {{[%A-Za-z0-9.]+}}) #0 {
 
 long foo_long(_Complex long x) {
   return __real__ x;
 }
 
-// CHECK: define i64 @foo_long(i64 {{[%A-Za-z0-9.]+}}, i64 {{[%A-Za-z0-9.]+}}) [[NUW]] {
+// CHECK: define i64 @foo_long(i64 {{[%A-Za-z0-9.]+}}, i64 {{[%A-Za-z0-9.]+}}) #0 {
 
 long long foo_long_long(_Complex long long x) {
   return __real__ x;
 }
 
-// CHECK: define i64 @foo_long_long(i64 {{[%A-Za-z0-9.]+}}, i64 {{[%A-Za-z0-9.]+}}) [[NUW]] {
+// CHECK: define i64 @foo_long_long(i64 {{[%A-Za-z0-9.]+}}, i64 {{[%A-Za-z0-9.]+}}) #0 {
 
 void bar_float(void) {
   foo_float(2.0f - 2.5fi);
 }
 
-// CHECK: define void @bar_float() [[NUW]] {
+// CHECK: define void @bar_float() #0 {
 // CHECK: %[[VAR1:[A-Za-z0-9.]+]] = alloca { float, float }, align 4
 // CHECK: %[[VAR2:[A-Za-z0-9.]+]] = getelementptr inbounds { float, float }* %[[VAR1]], i32 0, i32 0
 // CHECK: %[[VAR3:[A-Za-z0-9.]+]] = getelementptr inbounds { float, float }* %[[VAR1]], i32 0, i32 1
@@ -73,7 +73,7 @@
   foo_double(2.0 - 2.5i);
 }
 
-// CHECK: define void @bar_double() [[NUW]] {
+// CHECK: define void @bar_double() #0 {
 // CHECK: %[[VAR11:[A-Za-z0-9.]+]] = alloca { double, double }, align 8
 // CHECK: %[[VAR12:[A-Za-z0-9.]+]] = getelementptr inbounds { double, double }* %[[VAR11]], i32 0, i32 0
 // CHECK: %[[VAR13:[A-Za-z0-9.]+]] = getelementptr inbounds { double, double }* %[[VAR11]], i32 0, i32 1
@@ -89,7 +89,7 @@
   foo_long_double(2.0L - 2.5Li);
 }
 
-// CHECK: define void @bar_long_double() [[NUW]] {
+// CHECK: define void @bar_long_double() #0 {
 // CHECK: %[[VAR21:[A-Za-z0-9.]+]] = alloca { ppc_fp128, ppc_fp128 }, align 16
 // CHECK: %[[VAR22:[A-Za-z0-9.]+]] = getelementptr inbounds { ppc_fp128, ppc_fp128 }* %[[VAR21]], i32 0, i32 0
 // CHECK: %[[VAR23:[A-Za-z0-9.]+]] = getelementptr inbounds { ppc_fp128, ppc_fp128 }* %[[VAR21]], i32 0, i32 1
@@ -105,7 +105,7 @@
   foo_int(2 - 3i);
 }
 
-// CHECK: define void @bar_int() [[NUW]] {
+// CHECK: define void @bar_int() #0 {
 // CHECK: %[[VAR31:[A-Za-z0-9.]+]] = alloca { i32, i32 }, align 4
 // CHECK: %[[VAR32:[A-Za-z0-9.]+]] = getelementptr inbounds { i32, i32 }* %[[VAR31]], i32 0, i32 0
 // CHECK: %[[VAR33:[A-Za-z0-9.]+]] = getelementptr inbounds { i32, i32 }* %[[VAR31]], i32 0, i32 1
@@ -121,7 +121,7 @@
   foo_short(2 - 3i);
 }
 
-// CHECK: define void @bar_short() [[NUW]] {
+// CHECK: define void @bar_short() #0 {
 // CHECK: %[[VAR41:[A-Za-z0-9.]+]] = alloca { i16, i16 }, align 2
 // CHECK: %[[VAR42:[A-Za-z0-9.]+]] = getelementptr inbounds { i16, i16 }* %[[VAR41]], i32 0, i32 0
 // CHECK: %[[VAR43:[A-Za-z0-9.]+]] = getelementptr inbounds { i16, i16 }* %[[VAR41]], i32 0, i32 1
@@ -137,7 +137,7 @@
   foo_char(2 - 3i);
 }
 
-// CHECK: define void @bar_char() [[NUW]] {
+// CHECK: define void @bar_char() #0 {
 // CHECK: %[[VAR51:[A-Za-z0-9.]+]] = alloca { i8, i8 }, align 1
 // CHECK: %[[VAR52:[A-Za-z0-9.]+]] = getelementptr inbounds { i8, i8 }* %[[VAR51]], i32 0, i32 0
 // CHECK: %[[VAR53:[A-Za-z0-9.]+]] = getelementptr inbounds { i8, i8 }* %[[VAR51]], i32 0, i32 1
@@ -153,7 +153,7 @@
   foo_long(2L - 3Li);
 }
 
-// CHECK: define void @bar_long() [[NUW]] {
+// CHECK: define void @bar_long() #0 {
 // CHECK: %[[VAR61:[A-Za-z0-9.]+]] = alloca { i64, i64 }, align 8
 // CHECK: %[[VAR62:[A-Za-z0-9.]+]] = getelementptr inbounds { i64, i64 }* %[[VAR61]], i32 0, i32 0
 // CHECK: %[[VAR63:[A-Za-z0-9.]+]] = getelementptr inbounds { i64, i64 }* %[[VAR61]], i32 0, i32 1
@@ -169,7 +169,7 @@
   foo_long_long(2LL - 3LLi);
 }
 
-// CHECK: define void @bar_long_long() [[NUW]] {
+// CHECK: define void @bar_long_long() #0 {
 // CHECK: %[[VAR71:[A-Za-z0-9.]+]] = alloca { i64, i64 }, align 8
 // CHECK: %[[VAR72:[A-Za-z0-9.]+]] = getelementptr inbounds { i64, i64 }* %[[VAR71]], i32 0, i32 0
 // CHECK: %[[VAR73:[A-Za-z0-9.]+]] = getelementptr inbounds { i64, i64 }* %[[VAR71]], i32 0, i32 1
@@ -181,4 +181,4 @@
 // CHECK: %[[VAR77:[A-Za-z0-9.]+]] = load i64* %[[VAR76]], align 1
 // CHECK: %{{[A-Za-z0-9.]+}} = call i64 @foo_long_long(i64 %[[VAR75]], i64 %[[VAR77]])
 
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }
+// CHECK: attributes #0 = { nounwind "target-features"={{.*}} }
diff --git a/test/CodeGen/ppc64-complex-return.c b/test/CodeGen/ppc64-complex-return.c
index b3fd549..d530d50 100644
--- a/test/CodeGen/ppc64-complex-return.c
+++ b/test/CodeGen/ppc64-complex-return.c
@@ -9,55 +9,55 @@
   return x;
 }
 
-// CHECK: define { float, float } @foo_float(float {{[%A-Za-z0-9.]+}}, float {{[%A-Za-z0-9.]+}}) [[NUW:#[0-9]+]] {
+// CHECK: define { float, float } @foo_float(float {{[%A-Za-z0-9.]+}}, float {{[%A-Za-z0-9.]+}}) #0 {
 
 _Complex double foo_double(_Complex double x) {
   return x;
 }
 
-// CHECK: define { double, double } @foo_double(double {{[%A-Za-z0-9.]+}}, double {{[%A-Za-z0-9.]+}}) [[NUW]] {
+// CHECK: define { double, double } @foo_double(double {{[%A-Za-z0-9.]+}}, double {{[%A-Za-z0-9.]+}}) #0 {
 
 _Complex long double foo_long_double(_Complex long double x) {
   return x;
 }
 
-// CHECK: define { ppc_fp128, ppc_fp128 } @foo_long_double(ppc_fp128 {{[%A-Za-z0-9.]+}}, ppc_fp128 {{[%A-Za-z0-9.]+}}) [[NUW]] {
+// CHECK: define { ppc_fp128, ppc_fp128 } @foo_long_double(ppc_fp128 {{[%A-Za-z0-9.]+}}, ppc_fp128 {{[%A-Za-z0-9.]+}}) #0 {
 
 _Complex int foo_int(_Complex int x) {
   return x;
 }
 
-// CHECK: define { i32, i32 } @foo_int(i32 {{[%A-Za-z0-9.]+}}, i32 {{[%A-Za-z0-9.]+}}) [[NUW]] {
+// CHECK: define { i32, i32 } @foo_int(i32 {{[%A-Za-z0-9.]+}}, i32 {{[%A-Za-z0-9.]+}}) #0 {
 
 _Complex short foo_short(_Complex short x) {
   return x;
 }
 
-// CHECK: define { i16, i16 } @foo_short(i16 {{[%A-Za-z0-9.]+}}, i16 {{[%A-Za-z0-9.]+}}) [[NUW]] {
+// CHECK: define { i16, i16 } @foo_short(i16 {{[%A-Za-z0-9.]+}}, i16 {{[%A-Za-z0-9.]+}}) #0 {
 
 _Complex signed char foo_char(_Complex signed char x) {
   return x;
 }
 
-// CHECK: define { i8, i8 } @foo_char(i8 {{[%A-Za-z0-9.]+}}, i8 {{[%A-Za-z0-9.]+}}) [[NUW]] {
+// CHECK: define { i8, i8 } @foo_char(i8 {{[%A-Za-z0-9.]+}}, i8 {{[%A-Za-z0-9.]+}}) #0 {
 
 _Complex long foo_long(_Complex long x) {
   return x;
 }
 
-// CHECK: define { i64, i64 } @foo_long(i64 {{[%A-Za-z0-9.]+}}, i64 {{[%A-Za-z0-9.]+}}) [[NUW]] {
+// CHECK: define { i64, i64 } @foo_long(i64 {{[%A-Za-z0-9.]+}}, i64 {{[%A-Za-z0-9.]+}}) #0 {
 
 _Complex long long foo_long_long(_Complex long long x) {
   return x;
 }
 
-// CHECK: define { i64, i64 } @foo_long_long(i64 {{[%A-Za-z0-9.]+}}, i64 {{[%A-Za-z0-9.]+}}) [[NUW]] {
+// CHECK: define { i64, i64 } @foo_long_long(i64 {{[%A-Za-z0-9.]+}}, i64 {{[%A-Za-z0-9.]+}}) #0 {
 
 float bar_float(void) {
   return crealf(foo_float(2.0f - 2.5fi));
 }
 
-// CHECK: define float @bar_float() [[NUW]] {
+// CHECK: define float @bar_float() #0 {
 // CHECK: [[VAR1:[%A-Za-z0-9.]+]] = call { float, float } @foo_float
 // CHECK: extractvalue { float, float } [[VAR1]], 0
 // CHECK: extractvalue { float, float } [[VAR1]], 1
@@ -66,7 +66,7 @@
   return creal(foo_double(2.0 - 2.5i));
 }
 
-// CHECK: define double @bar_double() [[NUW]] {
+// CHECK: define double @bar_double() #0 {
 // CHECK: [[VAR2:[%A-Za-z0-9.]+]] = call { double, double } @foo_double
 // CHECK: extractvalue { double, double } [[VAR2]], 0
 // CHECK: extractvalue { double, double } [[VAR2]], 1
@@ -75,7 +75,7 @@
   return creall(foo_long_double(2.0L - 2.5Li));
 }
 
-// CHECK: define ppc_fp128 @bar_long_double() [[NUW]] {
+// CHECK: define ppc_fp128 @bar_long_double() #0 {
 // CHECK: [[VAR3:[%A-Za-z0-9.]+]] = call { ppc_fp128, ppc_fp128 } @foo_long_double
 // CHECK: extractvalue { ppc_fp128, ppc_fp128 } [[VAR3]], 0
 // CHECK: extractvalue { ppc_fp128, ppc_fp128 } [[VAR3]], 1
@@ -84,7 +84,7 @@
   return __real__(foo_int(2 - 3i));
 }
 
-// CHECK: define signext i32 @bar_int() [[NUW]] {
+// CHECK: define signext i32 @bar_int() #0 {
 // CHECK: [[VAR4:[%A-Za-z0-9.]+]] = call { i32, i32 } @foo_int
 // CHECK: extractvalue { i32, i32 } [[VAR4]], 0
 // CHECK: extractvalue { i32, i32 } [[VAR4]], 1
@@ -93,7 +93,7 @@
   return __real__(foo_short(2 - 3i));
 }
 
-// CHECK: define signext i16 @bar_short() [[NUW]] {
+// CHECK: define signext i16 @bar_short() #0 {
 // CHECK: [[VAR5:[%A-Za-z0-9.]+]] = call { i16, i16 } @foo_short
 // CHECK: extractvalue { i16, i16 } [[VAR5]], 0
 // CHECK: extractvalue { i16, i16 } [[VAR5]], 1
@@ -102,7 +102,7 @@
   return __real__(foo_char(2 - 3i));
 }
 
-// CHECK: define signext i8 @bar_char() [[NUW]] {
+// CHECK: define signext i8 @bar_char() #0 {
 // CHECK: [[VAR6:[%A-Za-z0-9.]+]] = call { i8, i8 } @foo_char
 // CHECK: extractvalue { i8, i8 } [[VAR6]], 0
 // CHECK: extractvalue { i8, i8 } [[VAR6]], 1
@@ -111,7 +111,7 @@
   return __real__(foo_long(2L - 3Li));
 }
 
-// CHECK: define i64 @bar_long() [[NUW]] {
+// CHECK: define i64 @bar_long() #0 {
 // CHECK: [[VAR7:[%A-Za-z0-9.]+]] = call { i64, i64 } @foo_long
 // CHECK: extractvalue { i64, i64 } [[VAR7]], 0
 // CHECK: extractvalue { i64, i64 } [[VAR7]], 1
@@ -120,10 +120,10 @@
   return __real__(foo_long_long(2LL - 3LLi));
 }
 
-// CHECK: define i64 @bar_long_long() [[NUW]] {
+// CHECK: define i64 @bar_long_long() #0 {
 // CHECK: [[VAR8:[%A-Za-z0-9.]+]] = call { i64, i64 } @foo_long_long
 // CHECK: extractvalue { i64, i64 } [[VAR8]], 0
 // CHECK: extractvalue { i64, i64 } [[VAR8]], 1
 
 
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }
+// CHECK: attributes #0 = { nounwind "target-features"={{.*}} }
diff --git a/test/CodeGen/ppc64-extend.c b/test/CodeGen/ppc64-extend.c
index 68d28c7..17a8aee 100644
--- a/test/CodeGen/ppc64-extend.c
+++ b/test/CodeGen/ppc64-extend.c
@@ -2,15 +2,15 @@
 // RUN: %clang_cc1 -O0 -triple powerpc64-unknown-linux-gnu -emit-llvm -o - %s | FileCheck %s
 
 void f1(int x) { return; }
-// CHECK: define void @f1(i32 signext %x) [[NUW:#[0-9]+]]
+// CHECK: define void @f1(i32 signext %x) #0
 
 void f2(unsigned int x) { return; }
-// CHECK: define void @f2(i32 zeroext %x) [[NUW]]
+// CHECK: define void @f2(i32 zeroext %x) #0
 
 int f3(void) { return 0; }
-// CHECK: define signext i32 @f3() [[NUW]]
+// CHECK: define signext i32 @f3() #0
 
 unsigned int f4(void) { return 0; }
-// CHECK: define zeroext i32 @f4() [[NUW]]
+// CHECK: define zeroext i32 @f4() #0
 
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }
+// CHECK: attributes #0 = { nounwind "target-features"={{.*}} }
diff --git a/test/CodeGen/pragma-weak.c b/test/CodeGen/pragma-weak.c
index d4b1b9f..4319bf2 100644
--- a/test/CodeGen/pragma-weak.c
+++ b/test/CodeGen/pragma-weak.c
@@ -136,7 +136,7 @@
 void __a1(void) __attribute((noinline));
 #pragma weak a1 = __a1
 void __a1(void) {}
-// CHECK: define void @__a1() [[NI:#[0-9]+]]
+// CHECK: define void @__a1() #1
 
 // attributes introduced BEFORE a combination of #pragma weak and alias()
 // hold...
@@ -144,11 +144,11 @@
 #pragma weak a3 = __a3
 void a3(void) __attribute((alias("__a3")));
 void __a3(void) {}
-// CHECK: define void @__a3() [[NI]]
+// CHECK: define void @__a3() #1
 
 #pragma weak xxx = __xxx
 __attribute((pure,noinline,const,fastcall)) void __xxx(void) { }
-// CHECK: void @__xxx() [[RN:#[0-9]+]]
+// CHECK: void @__xxx() #2
 
 ///////////// PR10878: Make sure we can call a weak alias
 void SHA512Pad(void *context) {}
@@ -180,5 +180,7 @@
 
 int correct_linkage;
 
-// CHECK: attributes [[NI]] = { noinline nounwind{{.*}} }
-// CHECK: attributes [[RN]] = { noinline nounwind readnone{{.*}} }
+// CHECK: attributes #0 = { nounwind "target-features"={{.*}} }
+// CHECK: attributes #1 = { noinline nounwind "target-features"={{.*}} }
+// CHECK: attributes #2 = { noinline nounwind readnone "target-features"={{.*}} }
+// CHECK: attributes #3 = { "target-features"={{.*}} }
diff --git a/test/CodeGen/struct-passing.c b/test/CodeGen/struct-passing.c
index d28fee2..487f061 100644
--- a/test/CodeGen/struct-passing.c
+++ b/test/CodeGen/struct-passing.c
@@ -16,12 +16,13 @@
 
 void *ps[] = { f0, f1, f2, f3, f4, f5 };
 
-// CHECK: declare i32 @f0() [[RN:#[0-9]+]]
-// CHECK: declare i32 @f1() [[RO:#[0-9]+]]
+// CHECK: declare i32 @f0() #0
+// CHECK: declare i32 @f1() #1
 // CHECK: declare void @f2({{.*}} sret)
 // CHECK: declare void @f3({{.*}} sret)
 // CHECK: declare void @f4({{.*}} byval align 4)
 // CHECK: declare void @f5({{.*}} byval align 4)
 
-// CHECK: attributes [[RN]] = { nounwind readnone{{.*}} }
-// CHECK: attributes [[RO]] = { nounwind readonly{{.*}} }
+// CHECK: attributes #0 = { nounwind readnone "target-features"={{.*}} }
+// CHECK: attributes #1 = { nounwind readonly "target-features"={{.*}} }
+// CHECK: attributes #2 = { nounwind "target-features"={{.*}} }
diff --git a/test/CodeGen/unwind-attr.c b/test/CodeGen/unwind-attr.c
index 2ffb5a8..3a11ce6 100644
--- a/test/CodeGen/unwind-attr.c
+++ b/test/CodeGen/unwind-attr.c
@@ -3,27 +3,28 @@
 
 int opaque();
 
-// CHECK:       define [[INT:i.*]] @test0() [[NONE:#[0-9]+]] {
-// CHECK-NOEXC: define [[INT:i.*]] @test0() [[NUW:#[0-9]+]] {
+// CHECK:       define [[INT:i.*]] @test0() #0 {
+// CHECK-NOEXC: define [[INT:i.*]] @test0() #0 {
 int test0(void) {
   return opaque();
 }
 
 // <rdar://problem/8087431>: locally infer nounwind at -O0
-// CHECK:       define [[INT:i.*]] @test1() [[NUW:#[0-9]+]] {
-// CHECK-NOEXC: define [[INT:i.*]] @test1() [[NUW]] {
+// CHECK:       define [[INT:i.*]] @test1() #1 {
+// CHECK-NOEXC: define [[INT:i.*]] @test1() #0 {
 int test1(void) {
   return 0;
 }
 
 // <rdar://problem/8283071>: not for weak functions
-// CHECK:       define weak [[INT:i.*]] @test2() [[NONE]] {
-// CHECK-NOEXC: define weak [[INT:i.*]] @test2() [[NUW]] {
+// CHECK:       define weak [[INT:i.*]] @test2() #0 {
+// CHECK-NOEXC: define weak [[INT:i.*]] @test2() #0 {
 __attribute__((weak)) int test2(void) {
   return 0;
 }
 
-// CHECK: attributes [[NONE]] = { {{.*}} }
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }
+// CHECK: attributes #0 = { "target-features"={{.*}} }
+// CHECK: attributes #1 = { nounwind "target-features"={{.*}} }
 
-// CHECK-NOEXC: attributes [[NUW]] = { nounwind{{.*}} }
+// CHECK-NOEXC: attributes #0 = { nounwind "target-features"={{.*}} }
+// CHECK-NOEXC: attributes #1 = { "target-features"={{.*}} }
diff --git a/test/CodeGenCXX/2009-05-04-PureConstNounwind.cpp b/test/CodeGenCXX/2009-05-04-PureConstNounwind.cpp
index e75d57f..fc0d3f6 100644
--- a/test/CodeGenCXX/2009-05-04-PureConstNounwind.cpp
+++ b/test/CodeGenCXX/2009-05-04-PureConstNounwind.cpp
@@ -5,17 +5,17 @@
 
 // CHECK: define i32 @_Z1fv() {{.*}} {
 int f(void) {
-  // CHECK: call i32 @_Z1cv() [[NUW_RN1:#[0-9]+]]
-  // CHECK: call i32 @_Z1pv() [[NUW_RO1:#[0-9]+]]
+  // CHECK: call i32 @_Z1cv() [[NUW_RN:#[0-9]+]]
+  // CHECK: call i32 @_Z1pv() [[NUW_RO:#[0-9]+]]
   return c() + p() + t();
 }
 
-// CHECK: declare i32 @_Z1cv() [[NUW_RN2:#[0-9]+]]
-// CHECK: declare i32 @_Z1pv() [[NUW_RO2:#[0-9]+]]
-// CHECK: declare i32 @_Z1tv() [[NONE:#[0-9]+]]
+// CHECK: declare i32 @_Z1cv() #1
+// CHECK: declare i32 @_Z1pv() #2
+// CHECK: declare i32 @_Z1tv() #0
 
-// CHECK: attributes [[NONE]] = { {{.*}} }
-// CHECK: attributes [[NUW_RN2]] = { nounwind readnone{{.*}} }
-// CHECK: attributes [[NUW_RO2]] = { nounwind readonly{{.*}} }
-// CHECK: attributes [[NUW_RN1]] = { nounwind readnone }
-// CHECK: attributes [[NUW_RO1]] = { nounwind readonly }
+// CHECK: attributes #0 = { "target-features"={{.*}} }
+// CHECK: attributes #1 = { nounwind readnone "target-features"={{.*}} }
+// CHECK: attributes #2 = { nounwind readonly "target-features"={{.*}} }
+// CHECK: attributes [[NUW_RN]] = { nounwind readnone }
+// CHECK: attributes [[NUW_RO]] = { nounwind readonly }
diff --git a/test/CodeGenCXX/attr.cpp b/test/CodeGenCXX/attr.cpp
index 4748cda..238019c 100644
--- a/test/CodeGenCXX/attr.cpp
+++ b/test/CodeGenCXX/attr.cpp
@@ -2,7 +2,7 @@
 
 // CHECK: @test2 = alias i32 ()* @_Z5test1v
 
-// CHECK: define i32 @_Z3foov() [[NUW:#[0-9]+]] align 1024
+// CHECK: define i32 @_Z3foov() #0 align 1024
 int foo() __attribute__((aligned(1024)));
 int foo() { }
 
@@ -13,16 +13,16 @@
   void bar4() __attribute__((aligned(1024)));
 } c;
 
-// CHECK: define void @_ZN1C4bar1Ev(%class.C* %this) unnamed_addr [[NUW]] align 2
+// CHECK: define void @_ZN1C4bar1Ev(%class.C* %this) unnamed_addr #0 align 2
 void C::bar1() { }
 
-// CHECK: define void @_ZN1C4bar2Ev(%class.C* %this) unnamed_addr [[NUW]] align 2
+// CHECK: define void @_ZN1C4bar2Ev(%class.C* %this) unnamed_addr #0 align 2
 void C::bar2() { }
 
-// CHECK: define void @_ZN1C4bar3Ev(%class.C* %this) unnamed_addr [[NUW]] align 1024
+// CHECK: define void @_ZN1C4bar3Ev(%class.C* %this) unnamed_addr #0 align 1024
 void C::bar3() { }
 
-// CHECK: define void @_ZN1C4bar4Ev(%class.C* %this) [[NUW]] align 1024
+// CHECK: define void @_ZN1C4bar4Ev(%class.C* %this) #0 align 1024
 void C::bar4() { }
 
 // PR6635
@@ -31,4 +31,7 @@
 // CHECK at top of file
 extern "C" int test2() __attribute__((alias("_Z5test1v")));
 
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }
+// CHECK: attributes #0 = { nounwind "target-features"={{.*}} }
+// CHECK: attributes #1 = { noreturn nounwind }
+// CHECK: attributes #2 = { nounwind }
+// CHECK: attributes #3 = { inlinehint nounwind "target-features"={{.*}} }
diff --git a/test/CodeGenCXX/cxx11-exception-spec.cpp b/test/CodeGenCXX/cxx11-exception-spec.cpp
index 49ca861..3942ab7 100644
--- a/test/CodeGenCXX/cxx11-exception-spec.cpp
+++ b/test/CodeGenCXX/cxx11-exception-spec.cpp
@@ -10,99 +10,99 @@
   static void g() noexcept(sizeof(T) == 4);
 };
 
-// CHECK: define {{.*}} @_Z1fIsEvv() [[NONE:#[0-9]+]] {
+// CHECK: define {{.*}} @_Z1fIsEvv() #0 {
 template<> void f<short>() { h(); }
-// CHECK: define {{.*}} @_Z1fIA2_sEvv() [[NUW:#[0-9]+]] {
+// CHECK: define {{.*}} @_Z1fIA2_sEvv() #1 {
 template<> void f<short[2]>() noexcept { h(); }
 
 // CHECK: define {{.*}} @_ZN1SIsE1fEv()
-// CHECK-NOT: [[NUW]]
+// CHECK-NOT: #1
 template<> void S<short>::f() { h(); }
-// CHECK: define {{.*}} @_ZN1SIA2_sE1fEv() [[NUW]]
+// CHECK: define {{.*}} @_ZN1SIA2_sE1fEv() #1
 template<> void S<short[2]>::f() noexcept { h(); }
 
-// CHECK: define {{.*}} @_Z1fIDsEvv() [[NONE]] {
+// CHECK: define {{.*}} @_Z1fIDsEvv() #0 {
 template void f<char16_t>();
-// CHECK: define {{.*}} @_Z1fIA2_DsEvv() [[NUW]]  {
+// CHECK: define {{.*}} @_Z1fIA2_DsEvv() #1  {
 template void f<char16_t[2]>();
 
 // CHECK: define {{.*}} @_ZN1SIDsE1fEv()
-// CHECK-NOT: [[NUW]]
+// CHECK-NOT: #1
 template void S<char16_t>::f();
-// CHECK: define {{.*}} @_ZN1SIA2_DsE1fEv() [[NUW]]
+// CHECK: define {{.*}} @_ZN1SIA2_DsE1fEv() #1
 template void S<char16_t[2]>::f();
 
 void h() {
-  // CHECK: define {{.*}} @_Z1fIiEvv() [[NUW]] {
+  // CHECK: define {{.*}} @_Z1fIiEvv() #1 {
   f<int>();
-  // CHECK: define {{.*}} @_Z1fIA2_iEvv() [[NONE]] {
+  // CHECK: define {{.*}} @_Z1fIA2_iEvv() #0 {
   f<int[2]>();
 
-  // CHECK: define {{.*}} @_ZN1SIiE1fEv() [[NUW]]
+  // CHECK: define {{.*}} @_ZN1SIiE1fEv() #1
   S<int>::f();
   // CHECK: define {{.*}} @_ZN1SIA2_iE1fEv()
-  // CHECK-NOT: [[NUW]]
+  // CHECK-NOT: #1
   S<int[2]>::f();
 
-  // CHECK: define {{.*}} @_Z1fIfEvv() [[NUW]] {
+  // CHECK: define {{.*}} @_Z1fIfEvv() #1 {
   void (*f1)() = &f<float>;
-  // CHECK: define {{.*}} @_Z1fIdEvv() [[NONE]] {
+  // CHECK: define {{.*}} @_Z1fIdEvv() #0 {
   void (*f2)() = &f<double>;
 
-  // CHECK: define {{.*}} @_ZN1SIfE1fEv() [[NUW]]
+  // CHECK: define {{.*}} @_ZN1SIfE1fEv() #1
   void (*f3)() = &S<float>::f;
   // CHECK: define {{.*}} @_ZN1SIdE1fEv()
-  // CHECK-NOT: [[NUW]]
+  // CHECK-NOT: #1
   void (*f4)() = &S<double>::f;
 
-  // CHECK: define {{.*}} @_Z1fIA4_cEvv() [[NUW]] {
+  // CHECK: define {{.*}} @_Z1fIA4_cEvv() #1 {
   (void)&f<char[4]>;
-  // CHECK: define {{.*}} @_Z1fIcEvv() [[NONE]] {
+  // CHECK: define {{.*}} @_Z1fIcEvv() #0 {
   (void)&f<char>;
 
-  // CHECK: define {{.*}} @_ZN1SIA4_cE1fEv() [[NUW]]
+  // CHECK: define {{.*}} @_ZN1SIA4_cE1fEv() #1
   (void)&S<char[4]>::f;
   // CHECK: define {{.*}} @_ZN1SIcE1fEv()
-  // CHECK-NOT: [[NUW]]
+  // CHECK-NOT: #1
   (void)&S<char>::f;
 }
 
 // CHECK: define {{.*}} @_Z1iv
 void i() {
-  // CHECK: declare {{.*}} @_Z1gIiEvv() [[NUW]]
+  // CHECK: declare {{.*}} @_Z1gIiEvv() #1
   g<int>();
   // CHECK: declare {{.*}} @_Z1gIA2_iEvv()
-  // CHECK-NOT: [[NUW]]
+  // CHECK-NOT: #1
   g<int[2]>();
 
-  // CHECK: declare {{.*}} @_ZN1SIiE1gEv() [[NUW]]
+  // CHECK: declare {{.*}} @_ZN1SIiE1gEv() #1
   S<int>::g();
   // CHECK: declare {{.*}} @_ZN1SIA2_iE1gEv()
-  // CHECK-NOT: [[NUW]]
+  // CHECK-NOT: #1
   S<int[2]>::g();
 
-  // CHECK: declare {{.*}} @_Z1gIfEvv() [[NUW]]
+  // CHECK: declare {{.*}} @_Z1gIfEvv() #1
   void (*g1)() = &g<float>;
   // CHECK: declare {{.*}} @_Z1gIdEvv()
-  // CHECK-NOT: [[NUW]]
+  // CHECK-NOT: #1
   void (*g2)() = &g<double>;
 
-  // CHECK: declare {{.*}} @_ZN1SIfE1gEv() [[NUW]]
+  // CHECK: declare {{.*}} @_ZN1SIfE1gEv() #1
   void (*g3)() = &S<float>::g;
   // CHECK: declare {{.*}} @_ZN1SIdE1gEv()
-  // CHECK-NOT: [[NUW]]
+  // CHECK-NOT: #1
   void (*g4)() = &S<double>::g;
 
-  // CHECK: declare {{.*}} @_Z1gIA4_cEvv() [[NUW]]
+  // CHECK: declare {{.*}} @_Z1gIA4_cEvv() #1
   (void)&g<char[4]>;
   // CHECK: declare {{.*}} @_Z1gIcEvv()
-  // CHECK-NOT: [[NUW]]
+  // CHECK-NOT: #1
   (void)&g<char>;
 
-  // CHECK: declare {{.*}} @_ZN1SIA4_cE1gEv() [[NUW]]
+  // CHECK: declare {{.*}} @_ZN1SIA4_cE1gEv() #1
   (void)&S<char[4]>::g;
   // CHECK: declare {{.*}} @_ZN1SIcE1gEv()
-  // CHECK-NOT: [[NUW]]
+  // CHECK-NOT: #1
   (void)&S<char>::g;
 }
 
@@ -113,11 +113,12 @@
 // CHECK: define {{.*}} @_Z1jv
 void j() {
   // CHECK: declare {{.*}} @_ZN6NestedIiE1fILb1EcEEvv(
-  // CHECK-NOT: [[NUW]]
+  // CHECK-NOT: #1
   Nested<int>().f<true, char>();
-  // CHECK: declare {{.*}} @_ZN6NestedIlE1fILb0ElEEvv({{.*}}) [[NUW]]
+  // CHECK: declare {{.*}} @_ZN6NestedIlE1fILb0ElEEvv({{.*}}) #1
   Nested<long>().f<false, long>();
 }
 
-// CHECK: attributes [[NONE]] = { {{.*}} }
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }
+// CHECK: attributes #0 = { "target-features"={{.*}} }
+// CHECK: attributes #1 = { nounwind "target-features"={{.*}} }
+// CHECK: attributes #2 = { noinline noreturn nounwind }
diff --git a/test/CodeGenCXX/default-destructor-synthesis.cpp b/test/CodeGenCXX/default-destructor-synthesis.cpp
index af78004..d5f5721 100644
--- a/test/CodeGenCXX/default-destructor-synthesis.cpp
+++ b/test/CodeGenCXX/default-destructor-synthesis.cpp
@@ -24,7 +24,7 @@
   Q q_arr[2][3];
 };
   
-// CHECK: define i32 @_Z1fv() [[NUW:#[0-9]+]]
+// CHECK: define i32 @_Z1fv() #0
 int f() {
   {
     count = 1;
@@ -35,4 +35,4 @@
   return count;
 }
 
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }
+// CHECK: attributes #0 = { nounwind "target-features"={{.*}} }
diff --git a/test/CodeGenCXX/derived-to-base.cpp b/test/CodeGenCXX/derived-to-base.cpp
index c69b456..1c9cdbc 100644
--- a/test/CodeGenCXX/derived-to-base.cpp
+++ b/test/CodeGenCXX/derived-to-base.cpp
@@ -15,7 +15,7 @@
   b.f();
 }
 
-// CHECK: define %struct.B* @_Z1fP1A(%struct.A* %a) [[NUW:#[0-9]+]]
+// CHECK: define %struct.B* @_Z1fP1A(%struct.A* %a) #0
 B *f(A *a) {
   // CHECK-NOT: br label
   // CHECK: ret %struct.B*
@@ -25,7 +25,7 @@
 // PR5965
 namespace PR5965 {
 
-// CHECK: define %struct.A* @_ZN6PR59651fEP1B(%struct.B* %b) [[NUW]]
+// CHECK: define %struct.A* @_ZN6PR59651fEP1B(%struct.B* %b) #0
 A *f(B* b) {
   // CHECK-NOT: br label
   // CHECK: ret %struct.A*
@@ -46,4 +46,5 @@
   }
 }
 
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }
+// CHECK: attributes #0 = { nounwind "target-features"={{.*}} }
+// CHECK: attributes #1 = { "target-features"={{.*}} }
diff --git a/test/CodeGenCXX/exceptions.cpp b/test/CodeGenCXX/exceptions.cpp
index 0565db4..ac52d70 100644
--- a/test/CodeGenCXX/exceptions.cpp
+++ b/test/CodeGenCXX/exceptions.cpp
@@ -71,7 +71,7 @@
 
   //   rdar://11904428
   //   Terminate landing pads should call __cxa_begin_catch first.
-  // CHECK:      define linkonce_odr hidden void @__clang_call_terminate(i8*) [[NI_NR_NUW:#[0-9]+]]
+  // CHECK:      define linkonce_odr hidden void @__clang_call_terminate(i8*) #2
   // CHECK-NEXT:   [[T0:%.*]] = call i8* @__cxa_begin_catch(i8* %0) [[NUW:#[0-9]+]]
   // CHECK-NEXT:   call void @_ZSt9terminatev() [[NR_NUW:#[0-9]+]]
   // CHECK-NEXT:   unreachable
@@ -526,7 +526,10 @@
   //   (After this is a terminate landingpad.)
 }
 
-// CHECK: attributes [[NI_NR_NUW]] = { noinline noreturn nounwind }
+// CHECK: attributes #0 = { "target-features"={{.*}} }
+// CHECK: attributes #1 = { nounwind "target-features"={{.*}} }
+// CHECK: attributes #2 = { noinline noreturn nounwind }
+// CHECK: attributes #3 = { nounwind readnone }
 
 // CHECK: attributes [[NUW]] = { nounwind }
 // CHECK: attributes [[NR_NUW]] = { noreturn nounwind }
diff --git a/test/CodeGenCXX/global-dtor-no-atexit.cpp b/test/CodeGenCXX/global-dtor-no-atexit.cpp
index 7c4b6aa..40be07a 100644
--- a/test/CodeGenCXX/global-dtor-no-atexit.cpp
+++ b/test/CodeGenCXX/global-dtor-no-atexit.cpp
@@ -5,12 +5,12 @@
 
 // CHECK:      call void @_ZN1AC1Ev([[A:%.*]]* @a)
 // CHECK-NEXT: call i32 @atexit(void ()* @__dtor_a)
-// CHECK:      define internal void @__dtor_a() [[NUW:#[0-9]+]]
+// CHECK:      define internal void @__dtor_a() #0
 // CHECK:      call void @_ZN1AD1Ev([[A]]* @a)
 
 // CHECK:      call void @_ZN1AC1Ev([[A]]* @b)
 // CHECK-NEXT: call i32 @atexit(void ()* @__dtor_b)
-// CHECK:      define internal void @__dtor_b() [[NUW]]
+// CHECK:      define internal void @__dtor_b() #0
 // CHECK:      call void @_ZN1AD1Ev([[A]]* @b)
 
 class A {
@@ -33,14 +33,16 @@
 // CHECK-NEXT: call i32 @atexit(void ()* @__dtor__ZZ4funcvE2a2)
 // CHECK-NEXT: call void @__cxa_guard_release(i64* @_ZGVZ4funcvE2a2)
 
-// CHECK:      define internal void @__dtor__ZZ4funcvE2a1() [[NUW]]
+// CHECK:      define internal void @__dtor__ZZ4funcvE2a1() #0
 // CHECK:      call void @_ZN1AD1Ev([[A]]* @_ZZ4funcvE2a1)
 
-// CHECK:      define internal void @__dtor__ZZ4funcvE2a2() [[NUW]]
+// CHECK:      define internal void @__dtor__ZZ4funcvE2a2() #0
 // CHECK:      call void @_ZN1AD1Ev([[A]]* @_ZZ4funcvE2a2)
 
 void func() {
   static A a1, a2;
 }
 
-// CHECK: attributes [[NUW]] = { nounwind }
+// CHECK: attributes #0 = { nounwind }
+// CHECK: attributes #1 = { "target-features"={{.*}} }
+// CHECK: attributes #2 = { nounwind "target-features"={{.*}} }
diff --git a/test/CodeGenCXX/global-init.cpp b/test/CodeGenCXX/global-init.cpp
index 426cf9c..ddad2d2 100644
--- a/test/CodeGenCXX/global-init.cpp
+++ b/test/CodeGenCXX/global-init.cpp
@@ -200,6 +200,15 @@
 // CHECK:   call void [[TEST1_Z_INIT]]
 
 // rdar://problem/8090834: this should be nounwind
-// CHECK-NOEXC: define internal void @_GLOBAL__I_a() [[NUW:#[0-9]+]] section "__TEXT,__StaticInit,regular,pure_instructions" {
+// CHECK-NOEXC: define internal void @_GLOBAL__I_a() #0 section "__TEXT,__StaticInit,regular,pure_instructions" {
 
-// CHECK-NOEXC: attributes [[NUW]] = { nounwind }
+// CHECK: attributes #0 = { "target-features"={{.*}} }
+// CHECK: attributes #1 = { nounwind }
+// CHECK: attributes #2 = { nounwind "target-features"={{.*}} }
+// CHECK: attributes #3 = { noinline noreturn nounwind }
+// CHECK: attributes #4 = { nounwind readonly }
+
+// CHECK-NOEXC: attributes #0 = { nounwind }
+// CHECK-NOEXC: attributes #1 = { "target-features"={{.*}} }
+// CHECK-NOEXC: attributes #2 = { nounwind "target-features"={{.*}} }
+// CHECK-NOEXC: attributes #3 = { nounwind readonly }
diff --git a/test/CodeGenCXX/member-initializers.cpp b/test/CodeGenCXX/member-initializers.cpp
index c22b99d..9a5a79f 100644
--- a/test/CodeGenCXX/member-initializers.cpp
+++ b/test/CodeGenCXX/member-initializers.cpp
@@ -21,7 +21,7 @@
 }
 
 // Test that we don't try to fold the default value of j when initializing i.
-// CHECK: define i32 @_Z9test_foldv() [[NUW_RN:#[0-9]+]]
+// CHECK: define i32 @_Z9test_foldv() #0
 int test_fold() {
   struct A {
     A(const int j = 1) : i(j) { } 
@@ -32,4 +32,4 @@
   return A(2).i;
 }
 
-// CHECK: attributes [[NUW_RN]] = { nounwind readnone{{.*}} }
+// CHECK: attributes #0 = { nounwind readnone "target-features"={{.*}} }
diff --git a/test/CodeGenCXX/microsoft-abi-array-cookies.cpp b/test/CodeGenCXX/microsoft-abi-array-cookies.cpp
index 1ba1f6a..31533dd 100644
--- a/test/CodeGenCXX/microsoft-abi-array-cookies.cpp
+++ b/test/CodeGenCXX/microsoft-abi-array-cookies.cpp
@@ -5,7 +5,7 @@
 };
 
 void check_array_no_cookies() {
-// CHECK: define void @"\01?check_array_no_cookies@@YAXXZ"() [[NUW:#[0-9]+]]
+// CHECK: define void @"\01?check_array_no_cookies@@YAXXZ"() #0
 
 // CHECK: call noalias i8* @"\01??_U@YAPAXI@Z"(i32 42)
   ClassWithoutDtor *array = new ClassWithoutDtor[42];
@@ -58,4 +58,5 @@
 // CHECK: getelementptr inbounds i8* [[ARRAY_AS_CHAR]], i64 -8
 }
 
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }
+// CHECK: attributes #0 = { nounwind "target-features"={{.*}} }
+// CHECK: attributes #1 = { "target-features"={{.*}} }
diff --git a/test/CodeGenCXX/microsoft-abi-static-initializers.cpp b/test/CodeGenCXX/microsoft-abi-static-initializers.cpp
index 35e343b..112228a 100644
--- a/test/CodeGenCXX/microsoft-abi-static-initializers.cpp
+++ b/test/CodeGenCXX/microsoft-abi-static-initializers.cpp
@@ -5,12 +5,12 @@
   ~S() {}
 } s;
 
-// CHECK: define internal void [[INIT_s:@.*global_var.*]] [[NUW:#[0-9]+]]
+// CHECK: define internal void [[INIT_s:@.*global_var.*]] #0
 // CHECK: %{{[.0-9A-Z_a-z]+}} = call x86_thiscallcc %struct.S* @"\01??0S@@QAE@XZ"
 // CHECK: call i32 @atexit(void ()* @"__dtor_\01?s@@3US@@A")
 // CHECK: ret void
 
-// CHECK: define internal void @"__dtor_\01?s@@3US@@A"() [[NUW]] {
+// CHECK: define internal void @"__dtor_\01?s@@3US@@A"() #0 {
 // CHECK: call x86_thiscallcc void @"\01??1S@@QAE@XZ"
 // CHECK: ret void
 
@@ -33,7 +33,7 @@
   (void)B<int>::foo;  // (void) - force usage
 }
 
-// CHECK: define internal void [[INIT_foo:@.*global_var.*]] [[NUW]]
+// CHECK: define internal void [[INIT_foo:@.*global_var.*]] #0
 // CHECK: %{{[.0-9A-Z_a-z]+}} = call x86_thiscallcc %class.A* @"\01??0A@@QAE@XZ"
 // CHECK: call i32 @atexit(void ()* [[FOO_DTOR:@"__dtor_.*foo@.*]])
 // CHECK: ret void
@@ -46,9 +46,10 @@
 // CHECK: call x86_thiscallcc void @"\01??1A@@QAE@XZ"{{.*}}foo
 // CHECK: ret void
 
-// CHECK: define internal void @_GLOBAL__I_a() [[NUW]] {
+// CHECK: define internal void @_GLOBAL__I_a() #0 {
 // CHECK: call void [[INIT_s]]
 // CHECK: call void [[INIT_foo]]
 // CHECK: ret void
 
-// CHECK: attributes [[NUW]] = { nounwind }
+// CHECK: attributes #0 = { nounwind }
+// CHECK: attributes #1 = { nounwind "target-features"={{.*}} }
diff --git a/test/CodeGenCXX/no-exceptions.cpp b/test/CodeGenCXX/no-exceptions.cpp
index ceb3b8e..4264953 100644
--- a/test/CodeGenCXX/no-exceptions.cpp
+++ b/test/CodeGenCXX/no-exceptions.cpp
@@ -2,7 +2,7 @@
 
 void g();
 
-// CHECK: define void @_Z1fv() [[NUW:#[0-9]+]]
+// CHECK: define void @_Z1fv() #0
 void f() throw (int) { 
 
   // CHECK-NOT: invoke void @_Z1gv
@@ -11,4 +11,5 @@
   // CHECK: ret void
 }
 
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }
+// CHECK: attributes #0 = { nounwind "target-features"={{.*}} }
+// CHECK: attributes #1 = { "target-features"={{.*}} }
diff --git a/test/CodeGenCXX/pointers-to-data-members.cpp b/test/CodeGenCXX/pointers-to-data-members.cpp
index 7335c97..a69093f 100644
--- a/test/CodeGenCXX/pointers-to-data-members.cpp
+++ b/test/CodeGenCXX/pointers-to-data-members.cpp
@@ -151,13 +151,13 @@
   A() : a() {}
 };
 
-// CHECK-O3: define zeroext i1 @_ZN6PR71395checkEv() [[NUW:#[0-9]+]]
+// CHECK-O3: define zeroext i1 @_ZN6PR71395checkEv() #0
 bool check() {
   // CHECK-O3: ret i1 true
   return A().a.data == 0;
 }
 
-// CHECK-O3: define zeroext i1 @_ZN6PR71396check2Ev() [[NUW]]
+// CHECK-O3: define zeroext i1 @_ZN6PR71396check2Ev() #0
 bool check2() {
   // CHECK-O3: ret i1 true
   return ptr_to_member_type() == 0;
@@ -255,4 +255,7 @@
   // CHECK: call void @_ZN7PR130971XC1ERKS0_
 }
 
-// CHECK-O3: attributes [[NUW]] = { nounwind readnone{{.*}} }
+// CHECK-O3: attributes #0 = { nounwind readnone "target-features"={{.*}} }
+// CHECK-O3: attributes #1 = { nounwind "target-features"={{.*}} }
+// CHECK-O3: attributes #2 = { "target-features"={{.*}} }
+// CHECK-O3: attributes #3 = { nounwind }
diff --git a/test/CodeGenCXX/reference-cast.cpp b/test/CodeGenCXX/reference-cast.cpp
index f157ae9..ec4fdaf 100644
--- a/test/CodeGenCXX/reference-cast.cpp
+++ b/test/CodeGenCXX/reference-cast.cpp
@@ -3,7 +3,7 @@
 // PR6024
 extern int i;
 
-// CHECK: define i32* @_Z16lvalue_noop_castv() [[NUW:#[0-9]+]]
+// CHECK: define i32* @_Z16lvalue_noop_castv() #0
 const int &lvalue_noop_cast() {
   if (i == 0)
     // CHECK: store i32 17, i32*
@@ -193,4 +193,5 @@
   // CHECK: store i64
 }
 
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }
+// CHECK: attributes #0 = { nounwind "target-features"={{.*}} }
+// CHECK: attributes #1 = { "target-features"={{.*}} }
diff --git a/test/CodeGenCXX/threadsafe-statics.cpp b/test/CodeGenCXX/threadsafe-statics.cpp
index 9aecc2d..a28d0fc 100644
--- a/test/CodeGenCXX/threadsafe-statics.cpp
+++ b/test/CodeGenCXX/threadsafe-statics.cpp
@@ -6,7 +6,7 @@
 // WITH-TSS: @_ZZ1gvE1a = internal global i32 0, align 4
 // WITH-TSS: @_ZGVZ1gvE1a = internal global i64 0
 
-// WITH-TSS: define void @_Z1gv() [[NUW:#[0-9]+]]
+// WITH-TSS: define void @_Z1gv() #0
 // WITH-TSS: call i32 @__cxa_guard_acquire
 // WITH-TSS: call void @__cxa_guard_release
 // WITH-TSS: ret void
@@ -17,11 +17,14 @@
 // NO-TSS: @_ZZ1gvE1a = internal global i32 0, align 4
 // NO-TSS: @_ZGVZ1gvE1a = internal global i8 0
 
-// NO-TSS: define void @_Z1gv() [[NUW:#[0-9]+]]
+// NO-TSS: define void @_Z1gv() #0
 // NO-TSS-NOT: call i32 @__cxa_guard_acquire
 // NO-TSS-NOT: call void @__cxa_guard_release
 // NO-TSS: ret void
 
-// WITH-TSS: attributes [[NUW]] = { nounwind{{.*}} }
+// WITH-TSS: attributes #0 = { nounwind "target-features"={{.*}} }
+// WITH-TSS: attributes #1 = { nounwind }
+// WITH-TSS: attributes #2 = { "target-features"={{.*}} }
 
-// NO-TSS: attributes [[NUW]] = { nounwind{{.*}} }
+// NO-TSS: attributes #0 = { nounwind "target-features"={{.*}} }
+// NO-TSS: attributes #1 = { "target-features"={{.*}} }
diff --git a/test/CodeGenCXX/thunks.cpp b/test/CodeGenCXX/thunks.cpp
index 6e58830..7060708 100644
--- a/test/CodeGenCXX/thunks.cpp
+++ b/test/CodeGenCXX/thunks.cpp
@@ -339,7 +339,7 @@
   };
   void C::f() {
   }
-  // CHECK: define void @_ZThn8_N6Test141C1fEv({{.*}}) unnamed_addr [[NUW:#[0-9]+]]
+  // CHECK: define void @_ZThn8_N6Test141C1fEv({{.*}}) unnamed_addr #0
 }
 
 /**** The following has to go at the end of the file ****/
@@ -348,4 +348,7 @@
 // CHECK: define linkonce_odr void @_ZTv0_n24_N5Test51B1fEv
 // CHECK: define internal void @_ZThn8_N6Test4B12_GLOBAL__N_11C1fEv(
 
-// CHECK: attributes [[NUW]] = { nounwind uwtable{{.*}} }
+// CHECK: attributes #0 = { nounwind uwtable "target-features"={{.*}} }
+// CHECK: attributes #1 = { inlinehint nounwind uwtable "target-features"={{.*}} }
+// CHECK: attributes #2 = { "target-features"={{.*}} }
+// CHECK: attributes #3 = { nounwind "target-features"={{.*}} }
diff --git a/test/CodeGenCXX/virtual-base-cast.cpp b/test/CodeGenCXX/virtual-base-cast.cpp
index f469636..5cf3b87 100644
--- a/test/CodeGenCXX/virtual-base-cast.cpp
+++ b/test/CodeGenCXX/virtual-base-cast.cpp
@@ -11,25 +11,25 @@
 D* x;
 
 A* a() { return x; }
-// CHECK: @_Z1av() [[NUW:#[0-9]+]]
+// CHECK: @_Z1av() #0
 // CHECK: [[VBASEOFFSETPTRA:%[a-zA-Z0-9\.]+]] = getelementptr i8* {{.*}}, i64 -16
 // CHECK: [[CASTVBASEOFFSETPTRA:%[a-zA-Z0-9\.]+]] = bitcast i8* [[VBASEOFFSETPTRA]] to i32*
 // CHECK: load i32* [[CASTVBASEOFFSETPTRA]]
 // CHECK: }
 
 B* b() { return x; }
-// CHECK: @_Z1bv() [[NUW]]
+// CHECK: @_Z1bv() #0
 // CHECK: [[VBASEOFFSETPTRA:%[a-zA-Z0-9\.]+]] = getelementptr i8* {{.*}}, i64 -20
 // CHECK: [[CASTVBASEOFFSETPTRA:%[a-zA-Z0-9\.]+]] = bitcast i8* [[VBASEOFFSETPTRA]] to i32*
 // CHECK: load i32* [[CASTVBASEOFFSETPTRA]]
 // CHECK: }
 
 BB* c() { return x; }
-// CHECK: @_Z1cv() [[NUW]]
+// CHECK: @_Z1cv() #0
 // CHECK: [[VBASEOFFSETPTRC:%[a-zA-Z0-9\.]+]] = getelementptr i8* {{.*}}, i64 -24
 // CHECK: [[CASTVBASEOFFSETPTRC:%[a-zA-Z0-9\.]+]] = bitcast i8* [[VBASEOFFSETPTRC]] to i32*
 // CHECK: [[VBASEOFFSETC:%[a-zA-Z0-9\.]+]] = load i32* [[CASTVBASEOFFSETPTRC]]
 // CHECK: add i32 [[VBASEOFFSETC]], 8
 // CHECK: }
 
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }
+// CHECK: attributes #0 = { nounwind "target-features"={{.*}} }
diff --git a/test/CodeGenObjC/arc.m b/test/CodeGenObjC/arc.m
index 48f012a..6ae352b 100644
--- a/test/CodeGenObjC/arc.m
+++ b/test/CodeGenObjC/arc.m
@@ -9,7 +9,7 @@
 // ARC-ALIEN: declare extern_weak void @objc_storeStrong(i8**, i8*)
 // ARC-ALIEN: declare extern_weak i8* @objc_retain(i8*)
 // ARC-ALIEN: declare extern_weak i8* @objc_autoreleaseReturnValue(i8*)
-// ARC-ALIEN: declare i8* @objc_msgSend(i8*, i8*, ...) [[NLB:#[0-9]+]]
+// ARC-ALIEN: declare i8* @objc_msgSend(i8*, i8*, ...) #1
 // ARC-ALIEN: declare extern_weak void @objc_release(i8*)
 // ARC-ALIEN: declare extern_weak i8* @objc_retainAutoreleasedReturnValue(i8*)
 // ARC-ALIEN: declare extern_weak i8* @objc_initWeak(i8**, i8*)
@@ -20,10 +20,10 @@
 // ARC-ALIEN: declare extern_weak i8* @objc_retainAutorelease(i8*)
 
 // ARC-NATIVE: declare void @objc_storeStrong(i8**, i8*)
-// ARC-NATIVE: declare i8* @objc_retain(i8*) [[NLB:#[0-9]+]]
+// ARC-NATIVE: declare i8* @objc_retain(i8*) #1
 // ARC-NATIVE: declare i8* @objc_autoreleaseReturnValue(i8*)
-// ARC-NATIVE: declare i8* @objc_msgSend(i8*, i8*, ...) [[NLB]]
-// ARC-NATIVE: declare void @objc_release(i8*) [[NLB]]
+// ARC-NATIVE: declare i8* @objc_msgSend(i8*, i8*, ...) #1
+// ARC-NATIVE: declare void @objc_release(i8*) #1
 // ARC-NATIVE: declare i8* @objc_retainAutoreleasedReturnValue(i8*)
 // ARC-NATIVE: declare i8* @objc_initWeak(i8**, i8*)
 // ARC-NATIVE: declare i8* @objc_storeWeak(i8**, i8*)
@@ -1484,6 +1484,7 @@
   };
 }
 
-// ARC-ALIEN: attributes [[NLB]] = { nonlazybind }
-// ARC-NATIVE: attributes [[NLB]] = { nonlazybind }
+// CHECK: attributes #0 = { nounwind "target-features"={{.*}} }
+// CHECK: attributes #1 = { nonlazybind }
+// CHECK: attributes #2 = { "target-features"={{.*}} }
 // CHECK: attributes [[NUW]] = { nounwind }
diff --git a/test/CodeGenObjC/gnu-exceptions.m b/test/CodeGenObjC/gnu-exceptions.m
index 7aa9709..3df92ef 100644
--- a/test/CodeGenObjC/gnu-exceptions.m
+++ b/test/CodeGenObjC/gnu-exceptions.m
@@ -6,7 +6,7 @@
 
 @class C;
 
-// CHECK: define void @test0() [[TF:#[0-9]+]] {
+// CHECK: define void @test0() #0 {
 void test0() {
   @try {
     // CHECK: invoke void @opaque()
@@ -31,4 +31,5 @@
   log(1);
 }
 
-// CHECK: attributes [[TF]] = { "{{.*}} }
+// CHECK: attributes #0 = { "target-features"={{.*}} }
+// CHECK: attributes #1 = { nounwind readnone }
diff --git a/test/CodeGenObjC/nonlazy-msgSend.m b/test/CodeGenObjC/nonlazy-msgSend.m
index 0ae9f11..157292e 100644
--- a/test/CodeGenObjC/nonlazy-msgSend.m
+++ b/test/CodeGenObjC/nonlazy-msgSend.m
@@ -1,8 +1,9 @@
 // RUN: %clang_cc1 -triple x86_64-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm %s -o - | FileCheck %s
 
-// CHECK: declare i8* @objc_msgSend(i8*, i8*, ...) [[NLB:#[0-9]+]]
+// CHECK: declare i8* @objc_msgSend(i8*, i8*, ...) #1
 void f0(id x) {
   [x foo];
 }
 
-// CHECK: attributes [[NLB]] = { nonlazybind }
+// CHECK: attributes #0 = { nounwind "target-features"={{.*}} }
+// CHECK: attributes #1 = { nonlazybind }
diff --git a/test/CodeGenObjC/objc-literal-debugger-test.m b/test/CodeGenObjC/objc-literal-debugger-test.m
index d4043aa..437c99b 100644
--- a/test/CodeGenObjC/objc-literal-debugger-test.m
+++ b/test/CodeGenObjC/objc-literal-debugger-test.m
@@ -50,6 +50,7 @@
 #endif
 }
 
-// CHECK: declare i8* @objc_msgSend(i8*, i8*, ...) [[NLB:#[0-9]+]]
+// CHECK: declare i8* @objc_msgSend(i8*, i8*, ...) #1
 
-// CHECK: attributes [[NLB]] = { nonlazybind }
+// CHECK: attributes #0 = { nounwind "target-features"={{.*}} }
+// CHECK: attributes #1 = { nonlazybind }
diff --git a/test/CodeGenObjC/objc-literal-tests.m b/test/CodeGenObjC/objc-literal-tests.m
index c53ee64..d991b96 100644
--- a/test/CodeGenObjC/objc-literal-tests.m
+++ b/test/CodeGenObjC/objc-literal-tests.m
@@ -53,7 +53,7 @@
 
 id NSUserName();
 
-// CHECK: define i32 @main() [[NUW:#[0-9]+]]
+// CHECK: define i32 @main() #0
 int main() {
   // CHECK: call{{.*}}@objc_msgSend{{.*}}i8 signext 97
   NSNumber *aNumber = @'a';
@@ -94,4 +94,6 @@
   bar(^(void) { return YES; });
 }
 
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }
+// CHECK: attributes #0 = { nounwind "target-features"={{.*}} }
+// CHECK: attributes #1 = { nonlazybind }
+// CHECK: attributes #2 = { "target-features"={{.*}} }
diff --git a/test/CodeGenObjCXX/lambda-expressions.mm b/test/CodeGenObjCXX/lambda-expressions.mm
index 7c1e2e4..ddc24a3 100644
--- a/test/CodeGenObjCXX/lambda-expressions.mm
+++ b/test/CodeGenObjCXX/lambda-expressions.mm
@@ -25,19 +25,24 @@
 fp global;
 void f2() { global = []{ return 3; }; }
 
-// MRC: define void @_Z2f2v() [[NUW:#[0-9]+]] {
+// MRC: define void @_Z2f2v() #1 {
 // MRC: store i8* bitcast (i32 (i8*)* @___Z2f2v_block_invoke to i8*),
 // MRC-NOT: call
 // MRC: ret void
 // ("global" contains a dangling pointer after this function runs.)
 
-// ARC: define void @_Z2f2v() [[NUW:#[0-9]+]] {
+// ARC: define void @_Z2f2v() #1 {
 // ARC: store i8* bitcast (i32 (i8*)* @___Z2f2v_block_invoke to i8*),
 // ARC: call i8* @objc_retainBlock
 // ARC: call void @objc_release
 // ARC: define internal i32 @___Z2f2v_block_invoke
 // ARC: call i32 @"_ZZ2f2vENK3$_1clEv
 
-// ARC: attributes [[NUW]] = { nounwind{{.*}} }
+// ARC: attributes #0 = { "target-features"={{.*}} }
+// ARC: attributes #1 = { nounwind "target-features"={{.*}} }
+// ARC: attributes #2 = { inlinehint nounwind "target-features"={{.*}} }
 
-// MRC: attributes [[NUW]] = { nounwind{{.*}} }
+// MRC: attributes #0 = { "target-features"={{.*}} }
+// MRC: attributes #1 = { nounwind "target-features"={{.*}} }
+// MRC: attributes #2 = { inlinehint nounwind "target-features"={{.*}} }
+// MRC: attributes #3 = { nonlazybind }
diff --git a/test/Driver/darwin-iphone-defaults.m b/test/Driver/darwin-iphone-defaults.m
index 3e2a912..bb324c6 100644
--- a/test/Driver/darwin-iphone-defaults.m
+++ b/test/Driver/darwin-iphone-defaults.m
@@ -1,6 +1,6 @@
 // RUN: %clang -target i386-apple-darwin9 -miphoneos-version-min=3.0 -arch armv7 -flto -S -o - %s | FileCheck %s
 
-// CHECK: @f0() [[F0:#[0-9]+]]
+// CHECK: @f0() #0
 // CHECK: @__f0_block_invoke
 // CHECK: void @f1
 // CHECK-NOT: msgSend_fixup_alloc
@@ -26,4 +26,5 @@
   [I1 alloc];
 }
 
-// CHECK: attributes [[F0]] = { ssp{{.*}} }
+// CHECK: attributes #0 = { ssp "target-cpu"="cortex-a8" "target-features"="+neon" }
+// CHECK: attributes #1 = { nonlazybind }
