LoopIdiom: Give globals for memset_pattern16 private linkage.
authorBenjamin Kramer <benny.kra@googlemail.com>
Tue, 3 Mar 2015 00:17:09 +0000 (00:17 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Tue, 3 Mar 2015 00:17:09 +0000 (00:17 +0000)
There's really no reason to have them have entries in the symbol table
anymore. Old versions of ld64 had some bugs in this area but those have
been fixed long ago.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231041 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/LoopIdiomRecognize.cpp
test/Transforms/LoopIdiom/basic.ll

index 243c624fc4b5f1b51da37848909dc18f600737df..d1f46ddf1699aebfa2f0a3bb2429b46a05b30f9e 100644 (file)
@@ -1005,7 +1005,7 @@ processLoopStridedStore(Value *DestPtr, unsigned StoreSize,
     // Otherwise we should form a memset_pattern16.  PatternValue is known to be
     // an constant array of 16-bytes.  Plop the value into a mergable global.
     GlobalVariable *GV = new GlobalVariable(*M, PatternValue->getType(), true,
-                                            GlobalValue::InternalLinkage,
+                                            GlobalValue::PrivateLinkage,
                                             PatternValue, ".memset_pattern");
     GV->setUnnamedAddr(true); // Ok to merge these.
     GV->setAlignment(16);
index c0aafc208449287487c027a06318122e8f32c3f8..79aa26e9b1360c03756dec752f8b4b538c5def79 100644 (file)
@@ -1,5 +1,12 @@
 ; RUN: opt -basicaa -loop-idiom < %s -S | FileCheck %s
 target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+
+; For @test11_pattern
+; CHECK: @.memset_pattern = private unnamed_addr constant [4 x i32] [i32 1, i32 1, i32 1, i32 1]
+
+; For @test13_pattern
+; CHECK: @.memset_pattern1 = private unnamed_addr constant [2 x i32*] [i32* @G, i32* @G]
+
 target triple = "x86_64-apple-darwin10.0.0"
 
 define void @test1(i8* %Base, i64 %Size) nounwind ssp {