]> granicus.if.org Git - clang/commitdiff
Using SmallString and correct addr var
authorRenato Golin <renato.golin@linaro.org>
Mon, 19 May 2014 23:25:25 +0000 (23:25 +0000)
committerRenato Golin <renato.golin@linaro.org>
Mon, 19 May 2014 23:25:25 +0000 (23:25 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@209180 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGExpr.cpp
test/CodeGen/named_reg_global.c

index 2025f39355ec8cfdbec30b1a1ee06582e54dff1b..1a36c7914ed1d41ab2162e2359e5d94b2999582f 100644 (file)
@@ -1778,11 +1778,13 @@ static LValue EmitCapturedFieldLValue(CodeGenFunction &CGF, const FieldDecl *FD,
 static LValue EmitGlobalNamedRegister(const VarDecl *VD,
                                       CodeGenModule &CGM,
                                       CharUnits Alignment) {
+  SmallString<64> Name("llvm.named.register.");
   AsmLabelAttr *Asm = VD->getAttr<AsmLabelAttr>();
-  llvm::Twine Name("llvm.named.register."+Asm->getLabel());
-  SmallString<256> DummyVec;
+  assert(Asm->getLabel().size() < 64-Name.size() &&
+      "Register name too big");
+  Name.append(Asm->getLabel());
   llvm::NamedMDNode *M =
-    CGM.getModule().getOrInsertNamedMetadata(Name.toStringRef(DummyVec));
+    CGM.getModule().getOrInsertNamedMetadata(Name);
   if (M->getNumOperands() == 0) {
     llvm::MDString *Str = llvm::MDString::get(CGM.getLLVMContext(),
                                               Asm->getLabel());
index 38b1828fc5e7c245ebdcb9b0b73e9c85d4f83d54..a1ee40c6f737336a9166391bc5702db04c4a05a9 100644 (file)
@@ -13,8 +13,8 @@ unsigned long get_stack_pointer_addr() {
 }
 // CHECK: declare{{.*}} i[[bits]] @llvm.read_register.i[[bits]](metadata)
 
-// CHECK: define{{.*}} void @set_stack_pointer_addr(i[[bits]] %[[addr:[0-9a-z]+]]) #0 {
-// CHECK: [[sto:%[0-9]+]] = load i[[bits]]* %[[addr]]
+// CHECK: define{{.*}} void @set_stack_pointer_addr(i[[bits]] %addr) #0 {
+// CHECK: [[sto:%[0-9]+]] = load i[[bits]]* %
 // CHECK: call void @llvm.write_register.i[[bits]](metadata !0, i[[bits]] [[sto]])
 // CHECK: ret void
 void set_stack_pointer_addr(unsigned long addr) {