<div dir="ltr">Done<div><a href="https://github.com/google/fuzzer-test-suite/blob/master/libssh-2017-1272/build.sh" class="cremed">https://github.com/google/fuzzer-test-suite/blob/master/libssh-2017-1272/build.sh</a><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, 9 Mar 2020 at 13:57, Sjoerd Meijer <<a href="mailto:Sjoerd.Meijer@arm.com">Sjoerd.Meijer@arm.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">




<div dir="ltr">
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
With this change this bot starting failing:</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<a href="http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fuzzer" id="gmail-m_-9037313427242323404LPlnk405774" target="_blank">http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fuzzer</a></div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
with this error trying to build libssh:<br>
</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<span>/usr/bin/ld: error: CMakeFiles/ssh_shared.dir/external/ge25519.c.o: multiple definition of 'crypto_sign_ed25519_ref_ge25519_base'<br>
</span><span>/usr/bin/ld: CMakeFiles/ssh_shared.dir/external/ed25519.c.o: previous definition here</span></div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<span><br>
</span></div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<span>This is the usual error when apps need porting changing from -fcommon to -fno-common.<br>
</span></div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<span><br>
</span></div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<span>@Vitaly Buka: as buildbot maintainer, can you please add -fcommon to the CFLAGS for libssh?
<br>
</span></div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<span><br>
</span></div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<span>Thanks,</span></div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<span>Sjoerd.<br>
</span></div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<br>
</div>
<div id="gmail-m_-9037313427242323404appendonsend"></div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<br>
</div>
<hr style="display:inline-block;width:98%">
<div id="gmail-m_-9037313427242323404divRplyFwdMsg" dir="ltr"><font style="font-size:11pt" face="Calibri, sans-serif" color="#000000"><b>From:</b> llvm-commits <<a href="mailto:llvm-commits-bounces@lists.llvm.org" target="_blank">llvm-commits-bounces@lists.llvm.org</a>> on behalf of Sjoerd Meijer via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>><br>
<b>Sent:</b> 09 March 2020 19:57<br>
<b>To:</b> <a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a> <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>><br>
<b>Subject:</b> [compiler-rt] 3d9a044 - Recommit #2 "[Driver] Default to -fno-common for all targets"</font>
<div> </div>
</div>
<div><font size="2"><span style="font-size:11pt">
<div><br>
Author: Sjoerd Meijer<br>
Date: 2020-03-09T19:57:03Z<br>
New Revision: 3d9a0445cce368b55dc3a573bc91fe902bbb977f<br>
<br>
URL: <a href="https://github.com/llvm/llvm-project/commit/3d9a0445cce368b55dc3a573bc91fe902bbb977f" target="_blank">
https://github.com/llvm/llvm-project/commit/3d9a0445cce368b55dc3a573bc91fe902bbb977f</a><br>
DIFF: <a href="https://github.com/llvm/llvm-project/commit/3d9a0445cce368b55dc3a573bc91fe902bbb977f.diff" target="_blank">
https://github.com/llvm/llvm-project/commit/3d9a0445cce368b55dc3a573bc91fe902bbb977f.diff</a><br>
<br>
LOG: Recommit #2 "[Driver] Default to -fno-common for all targets"<br>
<br>
After a first attempt to fix the test-suite failures, my first recommit<br>
caused the same failures again. I had updated CMakeList.txt files of<br>
tests that needed -fcommon, but it turns out that there are also<br>
Makefiles which are used by some bots, so I've updated these Makefiles<br>
now too.<br>
<br>
See the original commit message for more details on this change:<br>
0a9fc9233e172601e26381810d093e02ef410f65<br>
<br>
Added: <br>
    clang/test/Driver/no-common.c<br>
<br>
Modified: <br>
    clang/docs/ClangCommandLineReference.rst<br>
    clang/docs/ReleaseNotes.rst<br>
    clang/include/clang/Driver/Options.td<br>
    clang/lib/Driver/ToolChains/Clang.cpp<br>
    clang/lib/Frontend/CompilerInvocation.cpp<br>
    clang/test/CodeGen/2008-07-21-mixed-var-fn-decl.c<br>
    clang/test/CodeGen/2009-10-20-GlobalDebug.c<br>
    clang/test/CodeGen/aarch64-sve.c<br>
    clang/test/CodeGen/address-space.c<br>
    clang/test/CodeGen/alias.c<br>
    clang/test/CodeGen/align-systemz.c<br>
    clang/test/CodeGen/alignment.c<br>
    clang/test/CodeGen/asm-label.c<br>
    clang/test/CodeGen/attr-weak-import.c<br>
    clang/test/CodeGen/attr-weakref2.c<br>
    clang/test/CodeGen/attributes.c<br>
    clang/test/CodeGen/blocks-windows.c<br>
    clang/test/CodeGen/bool-convert.c<br>
    clang/test/CodeGen/c11atomics.c<br>
    clang/test/CodeGen/cfstring-elf-cfbuild-x86_64.c<br>
    clang/test/CodeGen/cfstring-windows.c<br>
    clang/test/CodeGen/default-address-space.c<br>
    clang/test/CodeGen/dllexport-1.c<br>
    clang/test/CodeGen/dllexport.c<br>
    clang/test/CodeGen/dllimport.c<br>
    clang/test/CodeGen/microsoft-no-common-align.c<br>
    clang/test/CodeGen/no-common.c<br>
    clang/test/CodeGen/pr25786.c<br>
    clang/test/CodeGen/pragma-pack-1.c<br>
    clang/test/CodeGen/pragma-weak.c<br>
    clang/test/CodeGen/private-extern-redef.c<br>
    clang/test/CodeGen/tentative-decls.c<br>
    clang/test/CodeGen/tls-model.c<br>
    clang/test/CodeGen/visibility.c<br>
    clang/test/CodeGen/vlt_to_pointer.c<br>
    clang/test/CodeGen/volatile-1.c<br>
    clang/test/CodeGen/windows-on-arm-dllimport-dllexport.c<br>
    clang/test/CodeGenCXX/clang-sections-tentative.c<br>
    clang/test/CodeGenObjC/constant-string-class.m<br>
    clang/test/CodeGenObjC/tentative-cfconstantstring.m<br>
    clang/test/CodeGenOpenCL/<a href="http://address-spaces.cl" target="_blank">address-spaces.cl</a><br>
    clang/test/CodeGenOpenCL/<a href="http://amdgcn-large-globals.cl" target="_blank">amdgcn-large-globals.cl</a><br>
    clang/test/CodeGenOpenCL/<a href="http://amdgpu-nullptr.cl" target="_blank">amdgpu-nullptr.cl</a><br>
    clang/test/Driver/apple-kext-mkernel.c<br>
    clang/test/Driver/clang_f_opts.c<br>
    clang/test/Driver/fuchsia.c<br>
    clang/test/Driver/xcore-opts.c<br>
    clang/test/Frontend/ast-codegen.c<br>
    clang/test/Headers/xmmintrin.c<br>
    clang/test/PCH/chain-external-defs.c<br>
    clang/test/PCH/external-defs.c<br>
    clang/test/PCH/tentative-defs.c<br>
    clang/test/Parser/pragma-visibility2.c<br>
    compiler-rt/test/asan/TestCases/Linux/odr_c_test.c<br>
    compiler-rt/test/asan/TestCases/set_shadow_test.c<br>
<br>
Removed: <br>
    clang/test/CodeGen/weak-global.c<br>
<br>
<br>
################################################################################<br>
diff  --git a/clang/docs/ClangCommandLineReference.rst b/clang/docs/ClangCommandLineReference.rst<br>
index 609e7fa66c00..5af9d64ae0fc 100644<br>
--- a/clang/docs/ClangCommandLineReference.rst<br>
+++ b/clang/docs/ClangCommandLineReference.rst<br>
@@ -1307,6 +1307,10 @@ Use colors in diagnostics<br>
 <br>
 .. option:: -fcommon, -fno-common<br>
 <br>
+Place definitions of variables with no storage class and no initializer<br>
+(tentative definitions) in a common block, instead of generating individual<br>
+zero-initialized definitions (default -fno-common).<br>
+<br>
 .. option:: -fcompile-resource=<arg>, --resource <arg>, --resource=<arg><br>
 <br>
 .. option:: -fconstant-cfstrings, -fno-constant-cfstrings<br>
<br>
diff  --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst<br>
index ce121ebe6055..664ae4e4167c 100644<br>
--- a/clang/docs/ReleaseNotes.rst<br>
+++ b/clang/docs/ReleaseNotes.rst<br>
@@ -84,6 +84,13 @@ future versions of Clang.<br>
 Modified Compiler Flags<br>
 -----------------------<br>
 <br>
+- -fno-common has been enabled as the default for all targets.  Therefore, C<br>
+  code that uses tentative definitions as definitions of a variable in multiple<br>
+  translation units will trigger multiple-definition linker errors.  Generally,<br>
+  this occurs when the use of the ``extern`` keyword is neglected in the declaration<br>
+  of a variable in a header file. In some cases, no specific translation unit<br>
+  provides a definition of the variable. The previous behavior can be restored by<br>
+  specifying ``-fcommon``.<br>
 <br>
 New Pragmas in Clang<br>
 --------------------<br>
<br>
diff  --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td<br>
index 0d5cba8d682a..bdcd771ff713 100644<br>
--- a/clang/include/clang/Driver/Options.td<br>
+++ b/clang/include/clang/Driver/Options.td<br>
@@ -848,7 +848,8 @@ def fno_record_command_line : Flag<["-"], "fno-record-command-line">,<br>
   Group<f_clang_Group>;<br>
 def : Flag<["-"], "frecord-gcc-switches">, Alias<frecord_command_line>;<br>
 def : Flag<["-"], "fno-record-gcc-switches">, Alias<fno_record_command_line>;<br>
-def fcommon : Flag<["-"], "fcommon">, Group<f_Group>;<br>
+def fcommon : Flag<["-"], "fcommon">, Group<f_Group>,<br>
+  Flags<[CoreOption, CC1Option]>, HelpText<"Place uninitialized global variables in a common block">;<br>
 def fcompile_resource_EQ : Joined<["-"], "fcompile-resource=">, Group<f_Group>;<br>
 def fcomplete_member_pointers : Flag<["-"], "fcomplete-member-pointers">, Group<f_clang_Group>,<br>
    Flags<[CoreOption, CC1Option]>,<br>
<br>
diff  --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp<br>
index 99faae396be3..5b85a5197f58 100644<br>
--- a/clang/lib/Driver/ToolChains/Clang.cpp<br>
+++ b/clang/lib/Driver/ToolChains/Clang.cpp<br>
@@ -1408,20 +1408,6 @@ static bool isSignedCharDefault(const llvm::Triple &Triple) {<br>
   }<br>
 }<br>
 <br>
-static bool isNoCommonDefault(const llvm::Triple &Triple) {<br>
-  switch (Triple.getArch()) {<br>
-  default:<br>
-    if (Triple.isOSFuchsia())<br>
-      return true;<br>
-    return false;<br>
-<br>
-  case llvm::Triple::xcore:<br>
-  case llvm::Triple::wasm32:<br>
-  case llvm::Triple::wasm64:<br>
-    return true;<br>
-  }<br>
-}<br>
-<br>
 static bool hasMultipleInvocations(const llvm::Triple &Triple,<br>
                                    const ArgList &Args) {<br>
   // Supported only on Darwin where we invoke the compiler multiple times<br>
@@ -5692,11 +5678,9 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,<br>
   if (!Args.hasFlag(options::OPT_Qy, options::OPT_Qn, true))<br>
     CmdArgs.push_back("-Qn");<br>
 <br>
-  // -fcommon is the default unless compiling kernel code or the target says so<br>
-  bool NoCommonDefault = KernelOrKext || isNoCommonDefault(RawTriple);<br>
-  if (!Args.hasFlag(options::OPT_fcommon, options::OPT_fno_common,<br>
-                    !NoCommonDefault))<br>
-    CmdArgs.push_back("-fno-common");<br>
+  // -fno-common is the default, set -fcommon only when that flag is set.<br>
+  if (Args.hasFlag(options::OPT_fcommon, options::OPT_fno_common, false))<br>
+    CmdArgs.push_back("-fcommon");<br>
 <br>
   // -fsigned-bitfields is default, and clang doesn't yet support<br>
   // -funsigned-bitfields.<br>
<br>
diff  --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp<br>
index cd8776e7976f..08a0b9831e0c 100644<br>
--- a/clang/lib/Frontend/CompilerInvocation.cpp<br>
+++ b/clang/lib/Frontend/CompilerInvocation.cpp<br>
@@ -811,7 +811,7 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK,<br>
   Opts.RecordCommandLine =<br>
       std::string(Args.getLastArgValue(OPT_record_command_line));<br>
   Opts.MergeAllConstants = Args.hasArg(OPT_fmerge_all_constants);<br>
-  Opts.NoCommon = Args.hasArg(OPT_fno_common);<br>
+  Opts.NoCommon = !Args.hasArg(OPT_fcommon);<br>
   Opts.NoInlineLineTables = Args.hasArg(OPT_gno_inline_line_tables);<br>
   Opts.NoImplicitFloat = Args.hasArg(OPT_no_implicit_float);<br>
   Opts.OptimizeSize = getOptimizationLevelSize(Args);<br>
<br>
diff  --git a/clang/test/CodeGen/2008-07-21-mixed-var-fn-decl.c b/clang/test/CodeGen/2008-07-21-mixed-var-fn-decl.c<br>
index 3c9591e2945e..89ec60282f88 100644<br>
--- a/clang/test/CodeGen/2008-07-21-mixed-var-fn-decl.c<br>
+++ b/clang/test/CodeGen/2008-07-21-mixed-var-fn-decl.c<br>
@@ -3,6 +3,6 @@<br>
 int g0, f0();<br>
 int f1(), g1;<br>
 <br>
-// CHECK: @g0 = common {{(dso_local )?}}global i32 0, align 4<br>
-// CHECK: @g1 = common {{(dso_local )?}}global i32 0, align 4<br>
+// CHECK: @g0 = {{(dso_local )?}}global i32 0, align 4<br>
+// CHECK: @g1 = {{(dso_local )?}}global i32 0, align 4<br>
 <br>
<br>
diff  --git a/clang/test/CodeGen/2009-10-20-GlobalDebug.c b/clang/test/CodeGen/2009-10-20-GlobalDebug.c<br>
index c8c247f6b041..14b832013630 100644<br>
--- a/clang/test/CodeGen/2009-10-20-GlobalDebug.c<br>
+++ b/clang/test/CodeGen/2009-10-20-GlobalDebug.c<br>
@@ -2,10 +2,10 @@<br>
 // RUN: %clang -target i386-apple-darwin10 -flto -S -g %s -o - | FileCheck %s<br>
 <br>
 // CHECK: @main.localstatic = internal global i32 0, align 4, !dbg [[L:![0-9]+]]<br>
-// CHECK: @global = common global i32 0, align 4, !dbg [[G:![0-9]+]]<br>
+// CHECK: @global = global i32 0, align 4, !dbg [[G:![0-9]+]]<br>
 <br>
 int global;<br>
-int main() { <br>
+int main() {<br>
   static int localstatic;<br>
   return 0;<br>
 }<br>
<br>
diff  --git a/clang/test/CodeGen/aarch64-sve.c b/clang/test/CodeGen/aarch64-sve.c<br>
index bb4512d5ed93..790b3a176182 100644<br>
--- a/clang/test/CodeGen/aarch64-sve.c<br>
+++ b/clang/test/CodeGen/aarch64-sve.c<br>
@@ -16,7 +16,7 @@<br>
 // CHECK-DEBUG: cannot yet generate debug info for SVE type '__SVFloat64_t'<br>
 // CHECK-DEBUG: cannot yet generate debug info for SVE type '__SVBool_t'<br>
 <br>
-// CHECK: @ptr = common global <vscale x 16 x i8>* null, align 8<br>
+// CHECK: @ptr = global <vscale x 16 x i8>* null, align 8<br>
 // CHECK: %s8 = alloca <vscale x 16 x i8>, align 16<br>
 // CHECK: %s16 = alloca <vscale x 8 x i16>, align 16<br>
 // CHECK: %s32 = alloca <vscale x 4 x i32>, align 16<br>
<br>
diff  --git a/clang/test/CodeGen/address-space.c b/clang/test/CodeGen/address-space.c<br>
index a76d2e743e6e..c66dfc87c0c0 100644<br>
--- a/clang/test/CodeGen/address-space.c<br>
+++ b/clang/test/CodeGen/address-space.c<br>
@@ -1,13 +1,13 @@<br>
 // RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm < %s | FileCheck -enable-var-scope -check-prefixes=CHECK,X86 %s<br>
 // RUN: %clang_cc1 -triple amdgcn -emit-llvm < %s | FileCheck -enable-var-scope -check-prefixes=CHECK,AMDGCN %s<br>
 <br>
-// CHECK: @foo = common addrspace(1) global<br>
+// CHECK: @foo = addrspace(1) global<br>
 int foo __attribute__((address_space(1)));<br>
 <br>
-// CHECK: @ban = common addrspace(1) global<br>
+// CHECK: @ban = addrspace(1) global<br>
 int ban[10] __attribute__((address_space(1)));<br>
 <br>
-// CHECK: @a = common global<br>
+// CHECK: @a = global<br>
 int a __attribute__((address_space(0)));<br>
 <br>
 // CHECK-LABEL: define i32 @test1()<br>
<br>
diff  --git a/clang/test/CodeGen/alias.c b/clang/test/CodeGen/alias.c<br>
index f5bdf3c0587e..21483cfb950b 100644<br>
--- a/clang/test/CodeGen/alias.c<br>
+++ b/clang/test/CodeGen/alias.c<br>
@@ -5,8 +5,13 @@<br>
 // RUN: %clang_cc1 -triple aarch64-linux-gnu -emit-llvm -o - %s | FileCheck -check-prefix=CHECKGLOBALS %s<br>
 <br>
 int g0;<br>
-// CHECKBASIC-DAG: @g0 = common global i32 0<br>
-// CHECKASM-DAG: .comm g0,4,4<br>
+// CHECKBASIC-DAG: @g0 = global i32 0<br>
+// CHECKASM-DAG:  .bss<br>
+// CHECKASM-DAG:  .globl  g0<br>
+// CHECKASM-DAG:  .p2align  2<br>
+// CHECKASM-DAG:  g0:<br>
+// CHECKASM-DAG:  .long 0<br>
+// CHECKASM-DAG:  .size g0, 4<br>
 __thread int TL_WITH_ALIAS;<br>
 // CHECKBASIC-DAG: @TL_WITH_ALIAS = thread_local global i32 0, align 4<br>
 // CHECKASM-DAG: .globl TL_WITH_ALIAS<br>
<br>
diff  --git a/clang/test/CodeGen/align-systemz.c b/clang/test/CodeGen/align-systemz.c<br>
index eaa1de64d344..9a6c22238327 100644<br>
--- a/clang/test/CodeGen/align-systemz.c<br>
+++ b/clang/test/CodeGen/align-systemz.c<br>
@@ -7,10 +7,10 @@ struct test {<br>
 };<br>
 <br>
 char c;<br>
-// CHECK-DAG: @c = common global i8 0, align 2<br>
+// CHECK-DAG: @c = global i8 0, align 2<br>
 <br>
 struct test s;<br>
-// CHECK-DAG: @s = common global %struct.test zeroinitializer, align 2<br>
+// CHECK-DAG: @s = global %struct.test zeroinitializer, align 2<br>
 <br>
 extern char ec;<br>
 // CHECK-DAG: @ec = external global i8, align 2<br>
<br>
diff  --git a/clang/test/CodeGen/alignment.c b/clang/test/CodeGen/alignment.c<br>
index c9f58136e38a..ce0c58bee4bb 100644<br>
--- a/clang/test/CodeGen/alignment.c<br>
+++ b/clang/test/CodeGen/alignment.c<br>
@@ -7,7 +7,7 @@ union {int a[4]; __attribute((aligned(16))) float b[4];} b;<br>
 // CHECK: @b = {{.*}}zeroinitializer, align 16<br>
 <br>
 long long int test5[1024];<br>
-// CHECK-DAG: @test5 = common global [1024 x i64] zeroinitializer, align 8<br>
+// CHECK-DAG: @test5 = global [1024 x i64] zeroinitializer, align 8<br>
 <br>
 // PR5279 - Reduced alignment on typedef.<br>
 typedef int myint __attribute__((aligned(1)));<br>
<br>
diff  --git a/clang/test/CodeGen/asm-label.c b/clang/test/CodeGen/asm-label.c<br>
index c06f11fd2d24..7c7383fa41fc 100644<br>
--- a/clang/test/CodeGen/asm-label.c<br>
+++ b/clang/test/CodeGen/asm-label.c<br>
@@ -11,9 +11,9 @@ int *test(void) {<br>
 }<br>
 <br>
 // LINUX: @bar = internal global i32 0<br>
-// LINUX: @foo = common global i32 0<br>
+// LINUX: @foo = global i32 0<br>
 // LINUX: declare i8* @alias(i32)<br>
 <br>
 // DARWIN: @"\01bar" = internal global i32 0<br>
-// DARWIN: @"\01foo" = common global i32 0<br>
+// DARWIN: @"\01foo" = global i32 0<br>
 // DARWIN: declare i8* @"\01alias"(i32)<br>
<br>
diff  --git a/clang/test/CodeGen/attr-weak-import.c b/clang/test/CodeGen/attr-weak-import.c<br>
index 0707f59a608b..f02d09e81509 100644<br>
--- a/clang/test/CodeGen/attr-weak-import.c<br>
+++ b/clang/test/CodeGen/attr-weak-import.c<br>
@@ -20,7 +20,7 @@ extern int E __attribute__((weak_import));<br>
 <br>
 // CHECK: @A = global i32<br>
 // CHECK-NOT: @B =<br>
-// CHECK: @C = common global i32<br>
+// CHECK: @C = global i32<br>
 // CHECK: @D = global i32<br>
 // CHECK: @E = global i32<br>
 <br>
<br>
diff  --git a/clang/test/CodeGen/attr-weakref2.c b/clang/test/CodeGen/attr-weakref2.c<br>
index 99760635581d..114f048a8518 100644<br>
--- a/clang/test/CodeGen/attr-weakref2.c<br>
+++ b/clang/test/CodeGen/attr-weakref2.c<br>
@@ -8,7 +8,7 @@ int test1_h(void) {<br>
   return test1_g;<br>
 }<br>
 <br>
-// CHECK: @test2_f = common global i32 0, align 4<br>
+// CHECK: @test2_f = global i32 0, align 4<br>
 int test2_f;<br>
 static int test2_g __attribute__((weakref("test2_f")));<br>
 int test2_h(void) {<br>
@@ -25,7 +25,7 @@ int test3_h(void) {<br>
   return test3_g;<br>
 }<br>
 <br>
-// CHECK: @test4_f = common global i32 0, align 4<br>
+// CHECK: @test4_f = global i32 0, align 4<br>
 extern int test4_f;<br>
 static int test4_g __attribute__((weakref("test4_f")));<br>
 int test4_h(void) {<br>
<br>
diff  --git a/clang/test/CodeGen/attributes.c b/clang/test/CodeGen/attributes.c<br>
index 4be38b6367dc..f6323e9be548 100644<br>
--- a/clang/test/CodeGen/attributes.c<br>
+++ b/clang/test/CodeGen/attributes.c<br>
@@ -20,7 +20,7 @@ int t18 = 1;<br>
 // CHECK: @t16 = extern_weak global i32<br>
 extern int t16 __attribute__((weak_import));<br>
 <br>
-// CHECK: @t6 = common protected global i32 0<br>
+// CHECK: @t6 = protected global i32 0<br>
 int t6 __attribute__((visibility("protected")));<br>
 <br>
 // CHECK: @t12 = global i32 0, section "SECT"<br>
<br>
diff  --git a/clang/test/CodeGen/blocks-windows.c b/clang/test/CodeGen/blocks-windows.c<br>
index 2dd97ffdd2f3..44e5f66525b2 100644<br>
--- a/clang/test/CodeGen/blocks-windows.c<br>
+++ b/clang/test/CodeGen/blocks-windows.c<br>
@@ -68,7 +68,7 @@ int (*g(void))(void) {<br>
 }<br>
 <br>
 // CHECK-BLOCKS-IN-BLOCKS-DECL: @_NSConcreteStackBlock = external dso_local dllexport global i8*<br>
-// CHECK-BLOCKS-IN-BLOCKS-DEFN: @_NSConcreteStackBlock = common dso_local dllexport global [5 x i32]<br>
+// CHECK-BLOCKS-IN-BLOCKS-DEFN: @_NSConcreteStackBlock = dso_local dllexport global [5 x i32]<br>
 // CHECK-BLOCKS-NOT-IN-BLOCKS: @_NSConcreteStackBlock = external dllimport global i8*<br>
 // CHECK-BLOCKS-NOT-IN-BLOCKS-EXTERN: @_NSConcreteStackBlock = external dllimport global i8*<br>
 // CHECK-BLOCKS-NOT-IN-BLOCKS-EXTERN-DLLIMPORT: @_NSConcreteStackBlock = external dllimport global i8*<br>
<br>
diff  --git a/clang/test/CodeGen/bool-convert.c b/clang/test/CodeGen/bool-convert.c<br>
index 344fb6bb994a..745971446e61 100644<br>
--- a/clang/test/CodeGen/bool-convert.c<br>
+++ b/clang/test/CodeGen/bool-convert.c<br>
@@ -2,16 +2,16 @@<br>
 // All of these should uses the memory representation of _Bool<br>
 <br>
 // CHECK-LABEL: %struct.teststruct1 = type { i8, i8 }<br>
-// CHECK-LABEL: @test1 = common global %struct.teststruct1<br>
+// CHECK-LABEL: @test1 = global %struct.teststruct1<br>
 struct teststruct1 {_Bool a, b;} test1;<br>
 <br>
-// CHECK-LABEL: @test2 = common global i8* null<br>
+// CHECK-LABEL: @test2 = global i8* null<br>
 _Bool* test2;<br>
 <br>
-// CHECK-LABEL: @test3 = common global [10 x i8]<br>
+// CHECK-LABEL: @test3 = global [10 x i8]<br>
 _Bool test3[10];<br>
 <br>
-// CHECK-LABEL: @test4 = common global [0 x i8]* null<br>
+// CHECK-LABEL: @test4 = global [0 x i8]* null<br>
 _Bool (*test4)[];<br>
 <br>
 // CHECK-LABEL: define void @f(i32 %x)<br>
<br>
diff  --git a/clang/test/CodeGen/c11atomics.c b/clang/test/CodeGen/c11atomics.c<br>
index cf251738be55..0a32ebcc724e 100644<br>
--- a/clang/test/CodeGen/c11atomics.c<br>
+++ b/clang/test/CodeGen/c11atomics.c<br>
@@ -25,7 +25,7 @@ struct elem {<br>
 // CHECK-DAG: %struct.elem = type { %struct.ptr }<br>
 <br>
 struct ptr object;<br>
-// CHECK-DAG: @object = common global %struct.ptr zeroinitializer<br>
+// CHECK-DAG: @object = global %struct.ptr zeroinitializer<br>
 <br>
 // CHECK-DAG: @testStructGlobal = global {{.*}} { i16 1, i16 2, i16 3, i16 4 }<br>
 // CHECK-DAG: @testPromotedStructGlobal = global {{.*}} { %{{.*}} { i16 1, i16 2, i16 3 }, [2 x i8] zeroinitializer }<br>
<br>
diff  --git a/clang/test/CodeGen/cfstring-elf-cfbuild-x86_64.c b/clang/test/CodeGen/cfstring-elf-cfbuild-x86_64.c<br>
index 8b90d7c0c1d8..e330624ead96 100644<br>
--- a/clang/test/CodeGen/cfstring-elf-cfbuild-x86_64.c<br>
+++ b/clang/test/CodeGen/cfstring-elf-cfbuild-x86_64.c<br>
@@ -30,7 +30,7 @@ const CFStringRef string = (CFStringRef)__builtin___CFStringMakeConstantString("<br>
 <br>
 <br>
 // CHECK-CF-IN-CF-DECL: @__CFConstantStringClassReference = external global [0 x i32]<br>
-// CHECK-CF-IN-CF-DEFN: @__CFConstantStringClassReference = common global [32 x i64] zeroinitializer, align 16<br>
-// CHECK-CF: @__CFConstantStringClassReference = common global [1 x i64] zeroinitializer, align 8<br>
+// CHECK-CF-IN-CF-DEFN: @__CFConstantStringClassReference = global [32 x i64] zeroinitializer, align 16<br>
+// CHECK-CF: @__CFConstantStringClassReference = global [1 x i64] zeroinitializer, align 8<br>
 // CHECK-CF-EXTERN: @__CFConstantStringClassReference = external global [0 x i32]<br>
 // CHECK-CF-EXTERN: @.str = private unnamed_addr constant [7 x i8] c"string\00", section ".rodata", align 1<br>
<br>
diff  --git a/clang/test/CodeGen/cfstring-windows.c b/clang/test/CodeGen/cfstring-windows.c<br>
index fe7511eae141..7c17f31d3dd4 100644<br>
--- a/clang/test/CodeGen/cfstring-windows.c<br>
+++ b/clang/test/CodeGen/cfstring-windows.c<br>
@@ -32,7 +32,7 @@ typedef struct __CFString *CFStringRef;<br>
 const CFStringRef string = (CFStringRef)__builtin___CFStringMakeConstantString("string");<br>
 <br>
 // CHECK-CF-IN-CF-DECL: @__CFConstantStringClassReference = external dso_local dllexport global [0 x i32]<br>
-// CHECK-CF-IN-CF-DEFN: @__CFConstantStringClassReference = common dso_local dllexport global [32 x i32]<br>
+// CHECK-CF-IN-CF-DEFN: @__CFConstantStringClassReference = dso_local dllexport global [32 x i32]<br>
 // CHECK-CF: @__CFConstantStringClassReference = external dllimport global [0 x i32]<br>
 // CHECK-CF-EXTERN: @__CFConstantStringClassReference = external dllimport global [0 x i32]<br>
 // CHECK-CF-EXTERN-DLLIMPORT: @__CFConstantStringClassReference = external dllimport global [0 x i32]<br>
<br>
diff  --git a/clang/test/CodeGen/default-address-space.c b/clang/test/CodeGen/default-address-space.c<br>
index 5450609e06bb..21ba2b3269c2 100644<br>
--- a/clang/test/CodeGen/default-address-space.c<br>
+++ b/clang/test/CodeGen/default-address-space.c<br>
@@ -1,13 +1,13 @@<br>
 // RUN: %clang_cc1 -triple amdgcn---amdgiz -emit-llvm < %s | FileCheck -check-prefixes=CHECK,COM %s<br>
 <br>
-// CHECK-DAG: @foo = common addrspace(1) global i32 0<br>
+// CHECK-DAG: @foo = addrspace(1) global i32 0<br>
 int foo;<br>
 <br>
-// CHECK-DAG: @ban = common addrspace(1) global [10 x i32] zeroinitializer<br>
+// CHECK-DAG: @ban = addrspace(1) global [10 x i32] zeroinitializer<br>
 int ban[10];<br>
 <br>
-// CHECK-DAG: @A = common addrspace(1) global i32* null<br>
-// CHECK-DAG: @B = common addrspace(1) global i32* null<br>
+// CHECK-DAG: @A = addrspace(1) global i32* null<br>
+// CHECK-DAG: @B = addrspace(1) global i32* null<br>
 int *A;<br>
 int *B;<br>
 <br>
<br>
diff  --git a/clang/test/CodeGen/dllexport-1.c b/clang/test/CodeGen/dllexport-1.c<br>
index 5860591c83c7..b24324b0a96e 100644<br>
--- a/clang/test/CodeGen/dllexport-1.c<br>
+++ b/clang/test/CodeGen/dllexport-1.c<br>
@@ -9,8 +9,8 @@<br>
 // CHECK-MSVC: @z = dso_local constant i32 4, align 4<br>
 // CHECK-LNX: @z = constant i32 4, align 4<br>
 <br>
-// CHECK-MSVC: @y = common dso_local dllexport global i32 0, align 4<br>
-// CHECK-LNX: @y = common global i32 0, align 4<br>
+// CHECK-MSVC: @y = dso_local dllexport constant i32 0, align 4<br>
+// CHECK-LNX: @y = constant i32 0, align 4<br>
 <br>
 __declspec(dllexport) int const x = 3;<br>
 __declspec(dllexport) const int y;<br>
<br>
diff  --git a/clang/test/CodeGen/dllexport.c b/clang/test/CodeGen/dllexport.c<br>
index f27012ec2355..4c1143cf5ca4 100644<br>
--- a/clang/test/CodeGen/dllexport.c<br>
+++ b/clang/test/CodeGen/dllexport.c<br>
@@ -14,7 +14,7 @@<br>
 __declspec(dllexport) extern int ExternGlobalDecl;<br>
 <br>
 // dllexport implies a definition.<br>
-// CHECK-DAG: @GlobalDef = common dso_local dllexport global i32 0, align 4<br>
+// CHECK-DAG: @GlobalDef = dso_local dllexport global i32 0, align 4<br>
 __declspec(dllexport) int GlobalDef;<br>
 <br>
 // Export definition.<br>
@@ -27,11 +27,11 @@ __declspec(dllexport) extern int GlobalDeclInit;<br>
 int GlobalDeclInit = 1;<br>
 <br>
 // Redeclarations<br>
-// CHECK-DAG: @GlobalRedecl1 = common dso_local dllexport global i32 0, align 4<br>
+// CHECK-DAG: @GlobalRedecl1 = dso_local dllexport global i32 0, align 4<br>
 __declspec(dllexport) extern int GlobalRedecl1;<br>
 __declspec(dllexport)        int GlobalRedecl1;<br>
 <br>
-// CHECK-DAG: @GlobalRedecl2 = common dso_local dllexport global i32 0, align 4<br>
+// CHECK-DAG: @GlobalRedecl2 = dso_local dllexport global i32 0, align 4<br>
 __declspec(dllexport) extern int GlobalRedecl2;<br>
                              int GlobalRedecl2;<br>
 <br>
@@ -70,13 +70,13 @@ __declspec(dllexport) void redecl2(void);<br>
 //===----------------------------------------------------------------------===//<br>
 <br>
 // dllexport takes precedence over the dllimport if both are specified.<br>
-// CHECK-DAG: @PrecedenceGlobal1A = common dso_local dllexport global i32 0, align 4<br>
-// CHECK-DAG: @PrecedenceGlobal1B = common dso_local dllexport global i32 0, align 4<br>
+// CHECK-DAG: @PrecedenceGlobal1A = dso_local dllexport global i32 0, align 4<br>
+// CHECK-DAG: @PrecedenceGlobal1B = dso_local dllexport global i32 0, align 4<br>
 __attribute__((dllimport, dllexport))       int PrecedenceGlobal1A;<br>
 __declspec(dllimport) __declspec(dllexport) int PrecedenceGlobal1B;<br>
 <br>
-// CHECK-DAG: @PrecedenceGlobal2A = common dso_local dllexport global i32 0, align 4<br>
-// CHECK-DAG: @PrecedenceGlobal2B = common dso_local dllexport global i32 0, align 4<br>
+// CHECK-DAG: @PrecedenceGlobal2A = dso_local dllexport global i32 0, align 4<br>
+// CHECK-DAG: @PrecedenceGlobal2B = dso_local dllexport global i32 0, align 4<br>
 __attribute__((dllexport, dllimport))       int PrecedenceGlobal2A;<br>
 __declspec(dllexport) __declspec(dllimport) int PrecedenceGlobal2B;<br>
 <br>
@@ -84,7 +84,7 @@ __declspec(dllexport) __declspec(dllimport) int PrecedenceGlobal2B;<br>
 __declspec(dllexport) extern int PrecedenceGlobalRedecl1;<br>
 __declspec(dllimport)        int PrecedenceGlobalRedecl1 = 0;<br>
 <br>
-// CHECK-DAG: @PrecedenceGlobalRedecl2 = common dso_local dllexport global i32 0, align 4<br>
+// CHECK-DAG: @PrecedenceGlobalRedecl2 = dso_local dllexport global i32 0, align 4<br>
 __declspec(dllimport) extern int PrecedenceGlobalRedecl2;<br>
 __declspec(dllexport)        int PrecedenceGlobalRedecl2;<br>
 <br>
@@ -92,7 +92,7 @@ __declspec(dllexport)        int PrecedenceGlobalRedecl2;<br>
 __attribute__((dllexport)) extern int PrecedenceGlobalMixed1;<br>
 __declspec(dllimport)             int PrecedenceGlobalMixed1 = 1;<br>
 <br>
-// CHECK-DAG: @PrecedenceGlobalMixed2 = common dso_local dllexport global i32 0, align 4<br>
+// CHECK-DAG: @PrecedenceGlobalMixed2 = dso_local dllexport global i32 0, align 4<br>
 __attribute__((dllimport)) extern int PrecedenceGlobalMixed2;<br>
 __declspec(dllexport)             int PrecedenceGlobalMixed2;<br>
 <br>
<br>
diff  --git a/clang/test/CodeGen/dllimport.c b/clang/test/CodeGen/dllimport.c<br>
index 319770232a28..8a67716fd9cf 100644<br>
--- a/clang/test/CodeGen/dllimport.c<br>
+++ b/clang/test/CodeGen/dllimport.c<br>
@@ -46,8 +46,8 @@ __declspec(dllimport) extern int GlobalRedecl3;<br>
 USEVAR(GlobalRedecl3)<br>
 <br>
 // Make sure this works even if the decl has been used before it's defined (PR20792).<br>
-// MS: @GlobalRedecl4 = common dso_local dllexport global i32<br>
-// GNU: @GlobalRedecl4 = common dso_local global i32<br>
+// MS: @GlobalRedecl4 = dso_local dllexport global i32<br>
+// GNU: @GlobalRedecl4 = dso_local global i32<br>
 __declspec(dllimport) extern int GlobalRedecl4;<br>
 USEVAR(GlobalRedecl4)<br>
                       int GlobalRedecl4; // dllimport ignored<br>
<br>
diff  --git a/clang/test/CodeGen/microsoft-no-common-align.c b/clang/test/CodeGen/microsoft-no-common-align.c<br>
index a7a27a062704..7b7d91037fe4 100644<br>
--- a/clang/test/CodeGen/microsoft-no-common-align.c<br>
+++ b/clang/test/CodeGen/microsoft-no-common-align.c<br>
@@ -1,4 +1,4 @@<br>
-// RUN: %clang_cc1 -triple x86_64-windows-msvc -emit-llvm -o - %s | FileCheck %s<br>
+// RUN: %clang_cc1 -triple x86_64-windows-msvc -fcommon -emit-llvm -o - %s | FileCheck %s<br>
 typedef float TooLargeAlignment __attribute__((__vector_size__(64)));<br>
 typedef float NormalAlignment __attribute__((__vector_size__(4)));<br>
 <br>
<br>
diff  --git a/clang/test/CodeGen/no-common.c b/clang/test/CodeGen/no-common.c<br>
index f3a6a334e6f5..11de0f23396e 100644<br>
--- a/clang/test/CodeGen/no-common.c<br>
+++ b/clang/test/CodeGen/no-common.c<br>
@@ -1,15 +1,16 @@<br>
 // RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s -check-prefix=CHECK-DEFAULT<br>
-// RUN: %clang_cc1 %s -fno-common -emit-llvm -o - | FileCheck %s -check-prefix=CHECK-NOCOMMON<br>
+// RUN: %clang_cc1 %s -fno-common -emit-llvm -o - | FileCheck %s -check-prefix=CHECK-DEFAULT<br>
+// RUN: %clang_cc1 %s -fcommon -emit-llvm -o - | FileCheck %s -check-prefix=CHECK-COMMON<br>
 <br>
-// CHECK-DEFAULT: @x = common {{(dso_local )?}}global<br>
-// CHECK-NOCOMMON: @x = {{(dso_local )?}}global<br>
+// CHECK-COMMON: @x = common {{(dso_local )?}}global<br>
+// CHECK-DEFAULT: @x = {{(dso_local )?}}global<br>
 int x;<br>
 <br>
+// CHECK-COMMON: @ABC = {{(dso_local )?}}global<br>
 // CHECK-DEFAULT: @ABC = {{(dso_local )?}}global<br>
-// CHECK-NOCOMMON: @ABC = {{(dso_local )?}}global<br>
 typedef void* (*fn_t)(long a, long b, char *f, int c);<br>
 fn_t ABC __attribute__ ((nocommon));<br>
 <br>
+// CHECK-COMMON: @y = common {{(dso_local )?}}global<br>
 // CHECK-DEFAULT: @y = common {{(dso_local )?}}global<br>
-// CHECK-NOCOMMON: @y = common {{(dso_local )?}}global<br>
 int y __attribute__((common));<br>
<br>
diff  --git a/clang/test/CodeGen/pr25786.c b/clang/test/CodeGen/pr25786.c<br>
index 612da7e8a369..d24ab1ba41eb 100644<br>
--- a/clang/test/CodeGen/pr25786.c<br>
+++ b/clang/test/CodeGen/pr25786.c<br>
@@ -4,8 +4,8 @@<br>
 void (__attribute__((regparm(3), stdcall)) *pf) ();<br>
 void (__attribute__((regparm(2), stdcall)) foo)(int a) {<br>
 }<br>
-// CHECK: @pf = common global void (...)* null<br>
+// CHECK: @pf = global void (...)* null<br>
 // CHECK: define void @foo(i32 %a)<br>
 <br>
-// CHECK-OK: @pf = common global void (...)* null<br>
+// CHECK-OK: @pf = global void (...)* null<br>
 // CHECK-OK: define x86_stdcallcc void @foo(i32 inreg %a)<br>
<br>
diff  --git a/clang/test/CodeGen/pragma-pack-1.c b/clang/test/CodeGen/pragma-pack-1.c<br>
index 773318c79f7c..3a9e391c4ef3 100644<br>
--- a/clang/test/CodeGen/pragma-pack-1.c<br>
+++ b/clang/test/CodeGen/pragma-pack-1.c<br>
@@ -64,5 +64,5 @@ struct S4<br>
 // CHECK: %struct.S4 = type { [3 x i8], %struct.T4, i32 }<br>
 // CHECK: %struct.T4 = type <{ i8, i32 }><br>
 <br>
-// CHECK: @refs = common global [[struct_ref]]<br>
-// CHECK: @ss = common global [[struct_S]]<br>
+// CHECK: @refs = global [[struct_ref]]<br>
+// CHECK: @ss = global [[struct_S]]<br>
<br>
diff  --git a/clang/test/CodeGen/pragma-weak.c b/clang/test/CodeGen/pragma-weak.c<br>
index d1f7ab6c3ebe..28354dc031c6 100644<br>
--- a/clang/test/CodeGen/pragma-weak.c<br>
+++ b/clang/test/CodeGen/pragma-weak.c<br>
@@ -1,7 +1,7 @@<br>
 // RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -emit-llvm %s -o - -verify | FileCheck %s<br>
 <br>
 // CHECK: @weakvar = weak global<br>
-// CHECK: @__weakvar_alias = common global<br>
+// CHECK: @__weakvar_alias = global<br>
 // CHECK: @correct_linkage = weak global<br>
 <br>
 <br>
<br>
diff  --git a/clang/test/CodeGen/private-extern-redef.c b/clang/test/CodeGen/private-extern-redef.c<br>
index 580ce9bd4a08..e0d51b67e228 100644<br>
--- a/clang/test/CodeGen/private-extern-redef.c<br>
+++ b/clang/test/CodeGen/private-extern-redef.c<br>
@@ -34,6 +34,6 @@ void foo() {<br>
 // CHECK: @M = hidden global<br>
 // CHECK: @O = hidden global<br>
 // CHECK: @I = external hidden<br>
-// CHECK: @N = common hidden global<br>
+// CHECK: @N = hidden global<br>
 // CHECK-NOT: @P<br>
 <br>
<br>
diff  --git a/clang/test/CodeGen/tentative-decls.c b/clang/test/CodeGen/tentative-decls.c<br>
index 321778720587..e24c3fcee740 100644<br>
--- a/clang/test/CodeGen/tentative-decls.c<br>
+++ b/clang/test/CodeGen/tentative-decls.c<br>
@@ -1,16 +1,16 @@<br>
 // RUN: %clang_cc1 -emit-llvm -w -o - %s | FileCheck %s<br>
 <br>
-// CHECK-DAG: @r = common {{(dso_local )?}}global [1 x {{.*}}] zeroinitializer<br>
+// CHECK-DAG: @r = {{(dso_local )?}}global [1 x {{.*}}] zeroinitializer<br>
 <br>
 int r[];<br>
 int (*a)[] = &r;<br>
 <br>
 struct s0;<br>
 struct s0 x;<br>
-// CHECK-DAG: @x = common {{(dso_local )?}}global %struct.s0 zeroinitializer<br>
+// CHECK-DAG: @x = {{(dso_local )?}}global %struct.s0 zeroinitializer<br>
 <br>
 struct s0 y;<br>
-// CHECK-DAG: @y = common {{(dso_local )?}}global %struct.s0 zeroinitializer<br>
+// CHECK-DAG: @y = {{(dso_local )?}}global %struct.s0 zeroinitializer<br>
 struct s0 *f0() {<br>
   return &y;<br>
 }<br>
@@ -19,14 +19,14 @@ struct s0 {<br>
   int x;<br>
 };<br>
 <br>
-// CHECK-DAG: @b = common {{(dso_local )?}}global [1 x {{.*}}] zeroinitializer<br>
+// CHECK-DAG: @b = {{(dso_local )?}}global [1 x {{.*}}] zeroinitializer<br>
 int b[];<br>
 int *f1() {<br>
   return b;<br>
 }<br>
 <br>
 // Check that the most recent tentative definition wins.<br>
-// CHECK-DAG: @c = common {{(dso_local )?}}global [4 x {{.*}}] zeroinitializer<br>
+// CHECK-DAG: @c = {{(dso_local )?}}global [4 x {{.*}}] zeroinitializer<br>
 int c[];<br>
 int c[4];<br>
 <br>
<br>
diff  --git a/clang/test/CodeGen/tls-model.c b/clang/test/CodeGen/tls-model.c<br>
index 41c8de0b0e89..313c3b1dfd41 100644<br>
--- a/clang/test/CodeGen/tls-model.c<br>
+++ b/clang/test/CodeGen/tls-model.c<br>
@@ -21,24 +21,24 @@ int __thread __attribute__((tls_model("initial-exec"))) z;<br>
 <br>
 // CHECK-GD: @z1 = global i32 0<br>
 // CHECK-GD: @f.y = internal thread_local global i32 0<br>
-// CHECK-GD: @z2 = common global i32 0<br>
+// CHECK-GD: @z2 = global i32 0<br>
 // CHECK-GD: @x = thread_local global i32 0<br>
 // CHECK-GD: @z = thread_local(initialexec) global i32 0<br>
 <br>
 // CHECK-LD: @z1 = global i32 0<br>
 // CHECK-LD: @f.y = internal thread_local(localdynamic) global i32 0<br>
-// CHECK-LD: @z2 = common global i32 0<br>
+// CHECK-LD: @z2 = global i32 0<br>
 // CHECK-LD: @x = thread_local(localdynamic) global i32 0<br>
 // CHECK-LD: @z = thread_local(initialexec) global i32 0<br>
 <br>
 // CHECK-IE: @z1 = global i32 0<br>
 // CHECK-IE: @f.y = internal thread_local(initialexec) global i32 0<br>
-// CHECK-IE: @z2 = common global i32 0<br>
+// CHECK-IE: @z2 = global i32 0<br>
 // CHECK-IE: @x = thread_local(initialexec) global i32 0<br>
 // CHECK-IE: @z = thread_local(initialexec) global i32 0<br>
 <br>
 // CHECK-LE: @z1 = global i32 0<br>
 // CHECK-LE: @f.y = internal thread_local(localexec) global i32 0<br>
-// CHECK-LE: @z2 = common global i32 0<br>
+// CHECK-LE: @z2 = global i32 0<br>
 // CHECK-LE: @x = thread_local(localexec) global i32 0<br>
 // CHECK-LE: @z = thread_local(initialexec) global i32 0<br>
<br>
diff  --git a/clang/test/CodeGen/visibility.c b/clang/test/CodeGen/visibility.c<br>
index 8e153b893a3f..f5606a508a1e 100644<br>
--- a/clang/test/CodeGen/visibility.c<br>
+++ b/clang/test/CodeGen/visibility.c<br>
@@ -3,15 +3,15 @@<br>
 // RUN: %clang_cc1 %s -triple i386-unknown-unknown -fvisibility hidden -emit-llvm -o - | FileCheck %s -check-prefix=CHECK-HIDDEN<br>
 <br>
 // CHECK-DEFAULT: @g_def = global i32 0<br>
-// CHECK-DEFAULT: @g_com = common global i32 0<br>
+// CHECK-DEFAULT: @g_com = global i32 0<br>
 // CHECK-DEFAULT: @g_ext = external global i32<br>
 // CHECK-DEFAULT: @g_deferred = internal global<br>
 // CHECK-PROTECTED: @g_def = protected global i32 0<br>
-// CHECK-PROTECTED: @g_com = common protected global i32 0<br>
+// CHECK-PROTECTED: @g_com = protected global i32 0<br>
 // CHECK-PROTECTED: @g_ext = external global i32<br>
 // CHECK-PROTECTED: @g_deferred = internal global<br>
 // CHECK-HIDDEN: @g_def = hidden global i32 0<br>
-// CHECK-HIDDEN: @g_com = common hidden global i32 0<br>
+// CHECK-HIDDEN: @g_com = hidden global i32 0<br>
 // CHECK-HIDDEN: @g_ext = external global i32<br>
 // CHECK-HIDDEN: @g_deferred = internal global<br>
 int g_com;<br>
<br>
diff  --git a/clang/test/CodeGen/vlt_to_pointer.c b/clang/test/CodeGen/vlt_to_pointer.c<br>
index 22c620aa6429..12aaaa9a1df3 100644<br>
--- a/clang/test/CodeGen/vlt_to_pointer.c<br>
+++ b/clang/test/CodeGen/vlt_to_pointer.c<br>
@@ -1,7 +1,7 @@<br>
 // RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s<br>
 <br>
 int c[1][3*2];<br>
-// CHECK: @{{.+}} = {{.*}} global [1 x [6 x {{i[0-9]+}}]] zeroinitializer<br>
+// CHECK: @{{.+}} = global [1 x [6 x {{i[0-9]+}}]] zeroinitializer<br>
 <br>
 // CHECK-LABEL: @f<br>
 int f(int * const m, int (**v)[*m * 2])<br>
<br>
diff  --git a/clang/test/CodeGen/volatile-1.c b/clang/test/CodeGen/volatile-1.c<br>
index c62a8fd4cd3d..a0c7093363d7 100644<br>
--- a/clang/test/CodeGen/volatile-1.c<br>
+++ b/clang/test/CodeGen/volatile-1.c<br>
@@ -1,10 +1,10 @@<br>
 // RUN: %clang_cc1 -Wno-return-type -Wno-unused-value -emit-llvm %s -w -o - | FileCheck %s<br>
 <br>
-// CHECK: @i = common {{(dso_local )?}}global [[INT:i[0-9]+]] 0<br>
+// CHECK: @i = {{(dso_local )?}}global [[INT:i[0-9]+]] 0<br>
 volatile int i, j, k;<br>
 volatile int ar[5];<br>
 volatile char c;<br>
-// CHECK: @ci = common {{(dso_local )?}}global [[CINT:.*]] zeroinitializer<br>
+// CHECK: @ci = {{(dso_local )?}}global [[CINT:.*]] zeroinitializer<br>
 volatile _Complex int ci;<br>
 volatile struct S {<br>
 #ifdef __cplusplus<br>
<br>
diff  --git a/clang/test/CodeGen/weak-global.c b/clang/test/CodeGen/weak-global.c<br>
deleted file mode 100644<br>
index f972cea91200..000000000000<br>
--- a/clang/test/CodeGen/weak-global.c<br>
+++ /dev/null<br>
@@ -1,3 +0,0 @@<br>
-// RUN: %clang_cc1 -emit-llvm < %s | grep common<br>
-<br>
-int i;<br>
<br>
diff  --git a/clang/test/CodeGen/windows-on-arm-dllimport-dllexport.c b/clang/test/CodeGen/windows-on-arm-dllimport-dllexport.c<br>
index a2ebbf195f79..f2c5ff94ffae 100644<br>
--- a/clang/test/CodeGen/windows-on-arm-dllimport-dllexport.c<br>
+++ b/clang/test/CodeGen/windows-on-arm-dllimport-dllexport.c<br>
@@ -17,7 +17,7 @@ void call_imported_function() {<br>
 }<br>
 <br>
 // CHECK: @import_int = external dllimport global i32<br>
-// CHECK: @export_int = common dso_local dllexport global i32 0, align 4<br>
+// CHECK: @export_int = dso_local dllexport global i32 0, align 4<br>
 <br>
 // CHECK: define dso_local dllexport arm_aapcs_vfpcc void @export_implemented_function()<br>
 <br>
<br>
diff  --git a/clang/test/CodeGenCXX/clang-sections-tentative.c b/clang/test/CodeGenCXX/clang-sections-tentative.c<br>
index e663079b9aa4..2e3d3410bd36 100644<br>
--- a/clang/test/CodeGenCXX/clang-sections-tentative.c<br>
+++ b/clang/test/CodeGenCXX/clang-sections-tentative.c<br>
@@ -30,7 +30,7 @@ const int cy; // .rodata.2<br>
 <br>
 // CHECK: @x = global i32 0, align 4 #0<br>
 // CHECK: @y = global i32 0, align 4 #1<br>
-// CHECK: @z = common global i32 0, align 4<br>
+// CHECK: @z = global i32 0, align 4<br>
 // CHECK: @cx = constant i32 0, align 4 #2<br>
 // CHECK: @cy = constant i32 0, align 4 #3<br>
 // CHECK: @cz = constant i32 0, align 4 #1<br>
<br>
diff  --git a/clang/test/CodeGenObjC/constant-string-class.m b/clang/test/CodeGenObjC/constant-string-class.m<br>
index adad6b012623..47184050056b 100644<br>
--- a/clang/test/CodeGenObjC/constant-string-class.m<br>
+++ b/clang/test/CodeGenObjC/constant-string-class.m<br>
@@ -30,6 +30,6 @@ int main () {<br>
   return 0;<br>
 }<br>
 <br>
-// CHECK-FRAGILE: @_FooClassReference = common global<br>
+// CHECK-FRAGILE: @_FooClassReference = global<br>
 // CHECK-NONFRAGILE: @"OBJC_CLASS_$_Object" = external global<br>
 // CHECK-NONFRAGILE: "OBJC_CLASS_$_Foo" = global<br>
<br>
diff  --git a/clang/test/CodeGenObjC/tentative-cfconstantstring.m b/clang/test/CodeGenObjC/tentative-cfconstantstring.m<br>
index bb76b033cf5f..978bcba6122b 100644<br>
--- a/clang/test/CodeGenObjC/tentative-cfconstantstring.m<br>
+++ b/clang/test/CodeGenObjC/tentative-cfconstantstring.m<br>
@@ -31,7 +31,7 @@ -(void)someMethod {<br>
 }<br>
 @end<br>
 <br>
-// CHECK: @__CFConstantStringClassReference = common global [24 x i32] zeroinitializer, align 16<br>
+// CHECK: @__CFConstantStringClassReference = global [24 x i32] zeroinitializer, align 16<br>
 // CHECK: @_unnamed_cfstring_{{.*}} = private global %struct.__NSConstantString_tag { i32* getelementptr inbounds ([24 x i32], [24 x i32]* @__CFConstantStringClassReference, i32 0, i32 0)<br>
 <br>
 // CHECK-LABEL: define internal void @_inlineFunction()<br>
<br>
diff  --git a/clang/test/CodeGenOpenCL/<a href="http://address-spaces.cl" target="_blank">address-spaces.cl</a> b/clang/test/CodeGenOpenCL/<a href="http://address-spaces.cl" target="_blank">address-spaces.cl</a><br>
index 3c8fea2a80bc..144466a690b3 100644<br>
--- a/clang/test/CodeGenOpenCL/<a href="http://address-spaces.cl" target="_blank">address-spaces.cl</a><br>
+++ b/clang/test/CodeGenOpenCL/<a href="http://address-spaces.cl" target="_blank">address-spaces.cl</a><br>
@@ -53,10 +53,10 @@ void fc(constant int *arg) {}<br>
 <br>
 #ifdef CL20<br>
 int i;<br>
-// CL20-DAG: @i = common {{(dso_local )?}}addrspace(1) global i32 0<br>
+// CL20-DAG: @i = {{(dso_local )?}}addrspace(1) global i32 0<br>
 int *ptr;<br>
 // CL20SPIR-DAG: @ptr = {{(common )?}}{{(dso_local )?}}addrspace(1) global i32 addrspace(4)* null<br>
-// CL20AMDGCN-DAG: @ptr = common {{(dso_local )?}}addrspace(1) global i32* null<br>
+// CL20AMDGCN-DAG: @ptr = {{(dso_local )?}}addrspace(1) global i32* null<br>
 #endif<br>
 <br>
 // SPIR: i32* %arg<br>
<br>
diff  --git a/clang/test/CodeGenOpenCL/<a href="http://amdgcn-large-globals.cl" target="_blank">amdgcn-large-globals.cl</a> b/clang/test/CodeGenOpenCL/<a href="http://amdgcn-large-globals.cl" target="_blank">amdgcn-large-globals.cl</a><br>
index ea9ea618a488..cf7db165f46b 100644<br>
--- a/clang/test/CodeGenOpenCL/<a href="http://amdgcn-large-globals.cl" target="_blank">amdgcn-large-globals.cl</a><br>
+++ b/clang/test/CodeGenOpenCL/<a href="http://amdgcn-large-globals.cl" target="_blank">amdgcn-large-globals.cl</a><br>
@@ -1,11 +1,11 @@<br>
 // REQUIRES: amdgpu-registered-target<br>
 // RUN: %clang_cc1 -cl-std=CL2.0 -triple amdgcn-unknown-unknown -S -emit-llvm -o - %s | FileCheck %s<br>
 <br>
-// CHECK: @One = common local_unnamed_addr addrspace(1) global [6442450944 x i8] zeroinitializer, align 1<br>
+// CHECK: @One = local_unnamed_addr addrspace(1) global [6442450944 x i8] zeroinitializer, align 1<br>
 unsigned char One[6442450944];<br>
-// CHECK: @Two = common local_unnamed_addr addrspace(1) global [6442450944 x i32] zeroinitializer, align 4<br>
+// CHECK: @Two = local_unnamed_addr addrspace(1) global [6442450944 x i32] zeroinitializer, align 4<br>
 global unsigned int Two[6442450944];<br>
- <br>
+<br>
 kernel void large_globals(unsigned int id) {<br>
   One[id] = id;<br>
   Two[id + 1] = id + 1;<br>
<br>
diff  --git a/clang/test/CodeGenOpenCL/<a href="http://amdgpu-nullptr.cl" target="_blank">amdgpu-nullptr.cl</a> b/clang/test/CodeGenOpenCL/<a href="http://amdgpu-nullptr.cl" target="_blank">amdgpu-nullptr.cl</a><br>
index c7c77920b775..ba34d168bf79 100644<br>
--- a/clang/test/CodeGenOpenCL/<a href="http://amdgpu-nullptr.cl" target="_blank">amdgpu-nullptr.cl</a><br>
+++ b/clang/test/CodeGenOpenCL/<a href="http://amdgpu-nullptr.cl" target="_blank">amdgpu-nullptr.cl</a><br>
@@ -1,6 +1,7 @@<br>
 // RUN: %clang_cc1 %s -cl-std=CL2.0 -include opencl-c.h -triple amdgcn -emit-llvm -o - | FileCheck %s<br>
 // RUN: %clang_cc1 %s -O0 -cl-std=CL2.0 -include opencl-c.h -triple amdgcn -emit-llvm -o - | FileCheck --check-prefix=NOOPT %s<br>
 // RUN: %clang_cc1 %s -cl-std=CL2.0 -include opencl-c.h -triple amdgcn---opencl -emit-llvm -o - | FileCheck %s<br>
+// RUN: %clang_cc1 %s -cl-std=CL2.0 -include opencl-c.h -triple amdgcn -fcommon -emit-llvm -o - | FileCheck %s --check-prefix=COMMON<br>
 <br>
 typedef struct {<br>
   private char *p1;<br>
@@ -16,9 +17,6 @@ typedef struct {<br>
   generic char *p5;<br>
 } StructTy2;<br>
 <br>
-// LLVM requests global variable with common linkage to be initialized with zeroinitializer, therefore use -fno-common<br>
-// to suppress common linkage for tentative definition.<br>
-<br>
 // Test 0 as initializer.<br>
 <br>
 // CHECK: @private_p = local_unnamed_addr addrspace(1) global i8 addrspace(5)* null, align 4<br>
@@ -183,34 +181,39 @@ void test_func_scope_var_local(void) {<br>
 // cannot have common linkage since common linkage requires zero initialization<br>
 // and does not have explicit section.<br>
 <br>
-// CHECK: @p1 = common local_unnamed_addr addrspace(1) global i8 addrspace(5)* null, align 4<br>
+// CHECK: @p1 = local_unnamed_addr addrspace(1) global i8 addrspace(5)* null, align 4<br>
+// COMMON: @p1 = common local_unnamed_addr addrspace(1) global i8 addrspace(5)* null, align 4<br>
 private char *p1;<br>
 <br>
-// CHECK: @p2 = weak local_unnamed_addr addrspace(1) global i8 addrspace(3)* addrspacecast (i8* null to i8 addrspace(3)*), align 4<br>
+// CHECK: @p2 = local_unnamed_addr addrspace(1) global i8 addrspace(3)* addrspacecast (i8* null to i8 addrspace(3)*), align 4<br>
+// COMMON: @p2 = weak local_unnamed_addr addrspace(1) global i8 addrspace(3)* addrspacecast (i8* null to i8 addrspace(3)*), align 4<br>
 local char *p2;<br>
 <br>
-// CHECK: @p3 = common local_unnamed_addr addrspace(1) global i8 addrspace(4)* null, align 8<br>
+// CHECK: @p3 = local_unnamed_addr addrspace(1) global i8 addrspace(4)* null, align 8<br>
+// COMMON: @p3 = common local_unnamed_addr addrspace(1) global i8 addrspace(4)* null, align 8<br>
 constant char *p3;<br>
 <br>
-// CHECK: @p4 = common local_unnamed_addr addrspace(1) global i8 addrspace(1)* null, align 8<br>
+// CHECK: @p4 = local_unnamed_addr addrspace(1) global i8 addrspace(1)* null, align 8<br>
+// COMMON: @p4 = common local_unnamed_addr addrspace(1) global i8 addrspace(1)* null, align 8<br>
 global char *p4;<br>
 <br>
-// CHECK: @p5 = common local_unnamed_addr addrspace(1) global i8* null, align 8<br>
+// CHECK: @p5 = local_unnamed_addr addrspace(1) global i8* null, align 8<br>
+// COMMON: @p5 = common local_unnamed_addr addrspace(1) global i8* null, align 8<br>
 generic char *p5;<br>
 <br>
 // Test default initialization of structure.<br>
 <br>
-// CHECK: @S1 = weak local_unnamed_addr addrspace(1) global %struct.StructTy1 { i8 addrspace(5)* null, i8 addrspace(3)* addrspacecast (i8* null to i8 addrspace(3)*), i8 addrspace(4)* null, i8 addrspace(1)* null, i8* null }, align 8<br>
+// CHECK: @S1 = local_unnamed_addr addrspace(1) global %struct.StructTy1 { i8 addrspace(5)* null, i8 addrspace(3)* addrspacecast (i8* null to i8 addrspace(3)*), i8 addrspace(4)* null, i8 addrspace(1)* null, i8* null }, align 8<br>
 StructTy1 S1;<br>
 <br>
-// CHECK: @S2 = common local_unnamed_addr addrspace(1) global %struct.StructTy2 zeroinitializer, align 8<br>
+// CHECK: @S2 = local_unnamed_addr addrspace(1) global %struct.StructTy2 zeroinitializer, align 8<br>
 StructTy2 S2;<br>
 <br>
 // Test default initialization of array.<br>
-// CHECK: @A1 = weak local_unnamed_addr addrspace(1) global [2 x %struct.StructTy1] [%struct.StructTy1 { i8 addrspace(5)* null, i8 addrspace(3)* addrspacecast (i8* null to i8 addrspace(3)*), i8 addrspace(4)* null, i8 addrspace(1)* null, i8* null }, %struct.StructTy1
 { i8 addrspace(5)* null, i8 addrspace(3)* addrspacecast (i8* null to i8 addrspace(3)*), i8 addrspace(4)* null, i8 addrspace(1)* null, i8* null }], align 8<br>
+// CHECK: @A1 = local_unnamed_addr addrspace(1) global [2 x %struct.StructTy1] [%struct.StructTy1 { i8 addrspace(5)* null, i8 addrspace(3)* addrspacecast (i8* null to i8 addrspace(3)*), i8 addrspace(4)* null, i8 addrspace(1)* null, i8* null }, %struct.StructTy1
 { i8 addrspace(5)* null, i8 addrspace(3)* addrspacecast (i8* null to i8 addrspace(3)*), i8 addrspace(4)* null, i8 addrspace(1)* null, i8* null }], align 8<br>
 StructTy1 A1[2];<br>
 <br>
-// CHECK: @A2 = common local_unnamed_addr addrspace(1) global [2 x %struct.StructTy2] zeroinitializer, align 8<br>
+// CHECK: @A2 = local_unnamed_addr addrspace(1) global [2 x %struct.StructTy2] zeroinitializer, align 8<br>
 StructTy2 A2[2];<br>
 <br>
 // Test comparison with 0.<br>
<br>
diff  --git a/clang/test/Driver/apple-kext-mkernel.c b/clang/test/Driver/apple-kext-mkernel.c<br>
index 9c60c24e36c8..f056ec898d4d 100644<br>
--- a/clang/test/Driver/apple-kext-mkernel.c<br>
+++ b/clang/test/Driver/apple-kext-mkernel.c<br>
@@ -4,7 +4,7 @@<br>
 // CHECK-X86: "-disable-red-zone"<br>
 // CHECK-X86: "-fno-builtin"<br>
 // CHECK-X86: "-fno-rtti"<br>
-// CHECK-X86: "-fno-common"<br>
+// CHECK-X86-NOT: "-fcommon"<br>
 <br>
 // RUN: %clang -target x86_64-apple-darwin10 -mkernel -### -fsyntax-only -fbuiltin -fcommon %s 2>&1 | FileCheck --check-prefix=CHECK-X86-2 %s<br>
 <br>
@@ -21,7 +21,7 @@<br>
 // CHECK-ARM-NOT: "-target-feature" "+strict-align"<br>
 // CHECK-ARM: "-fno-builtin"<br>
 // CHECK-ARM: "-fno-rtti"<br>
-// CHECK-ARM: "-fno-common"<br>
+// CHECK-ARM-NOT: "-fcommon"<br>
 <br>
 // RUN: %clang -target x86_64-apple-darwin10 \<br>
 // RUN:   -Werror -fno-builtin -fno-exceptions -fno-common -fno-rtti \<br>
<br>
diff  --git a/clang/test/Driver/clang_f_opts.c b/clang/test/Driver/clang_f_opts.c<br>
index f628f5f40de3..bda026715c36 100644<br>
--- a/clang/test/Driver/clang_f_opts.c<br>
+++ b/clang/test/Driver/clang_f_opts.c<br>
@@ -12,7 +12,7 @@<br>
 // CHECK-OPTIONS2: -fno-gnu-keywords<br>
 // CHECK-OPTIONS2: -fno-builtin<br>
 // CHECK-OPTIONS2: -fshort-enums<br>
-// CHECK-OPTIONS2: -fno-common<br>
+// CHECK-OPTIONS2-NOT: -fcommon<br>
 // CHECK-OPTIONS2: -fno-show-source-location<br>
 <br>
 // RUN: %clang -### -S -Wwrite-strings %s 2>&1 | FileCheck -check-prefix=WRITE-STRINGS1 %s<br>
<br>
diff  --git a/clang/test/Driver/fuchsia.c b/clang/test/Driver/fuchsia.c<br>
index 185289defccd..5c1c00061d3a 100644<br>
--- a/clang/test/Driver/fuchsia.c<br>
+++ b/clang/test/Driver/fuchsia.c<br>
@@ -22,7 +22,7 @@<br>
 // CHECK-AARCH64: "-fsanitize=shadow-call-stack"<br>
 // CHECK-X86_64: "-fsanitize=safe-stack"<br>
 // CHECK: "-stack-protector" "2"<br>
-// CHECK: "-fno-common"<br>
+// CHECK-NOT: "-fcommon"<br>
 // CHECK: {{.*}}ld.lld{{.*}}" "-z" "now" "-z" "rodynamic" "-z" "separate-loadable-segments"<br>
 // CHECK: "--sysroot=[[SYSROOT]]"<br>
 // CHECK: "-pie"<br>
<br>
diff  --git a/clang/test/Driver/no-common.c b/clang/test/Driver/no-common.c<br>
new file mode 100644<br>
index 000000000000..675de4fee8dc<br>
--- /dev/null<br>
+++ b/clang/test/Driver/no-common.c<br>
@@ -0,0 +1,9 @@<br>
+// RUN: %clang -target %itanium_abi_triple -### -c %s 2>&1 | \<br>
+// RUN:   FileCheck %s --check-prefix=DEFAULT<br>
+// RUN: %clang -target %itanium_abi_triple -fno-common -### -c %s 2>&1 | \<br>
+// RUN:   FileCheck %s --check-prefix=DEFAULT<br>
+// RUN: %clang -target %itanium_abi_triple -fno-common -fcommon -### -c %s 2>&1 | \<br>
+// RUN:   FileCheck %s --check-prefix=COMMON<br>
+<br>
+// DEFAULT-NOT: "-fcommon"<br>
+// COMMON:      "-fcommon"<br>
<br>
diff  --git a/clang/test/Driver/xcore-opts.c b/clang/test/Driver/xcore-opts.c<br>
index 2bf57967092a..8885974ec84a 100644<br>
--- a/clang/test/Driver/xcore-opts.c<br>
+++ b/clang/test/Driver/xcore-opts.c<br>
@@ -9,7 +9,7 @@<br>
 // CHECK: "-fno-use-cxa-atexit"<br>
 // CHECK-NOT: "-fcxx-exceptions"<br>
 // CHECK-NOT: "-fexceptions"<br>
-// CHECK: "-fno-common"<br>
+// CHECK-NOT: "-fcommon"<br>
 // CHECK: xcc" "-o"<br>
 // CHECK-NOT: "-fexceptions"<br>
 // CHECK: "-c" "-v" "-g" "-fverbose-asm" "A1Arg" "A2Arg"<br>
@@ -21,7 +21,7 @@<br>
 // CHECK-EXCEP: "-fno-use-cxa-atexit"<br>
 // CHECK-EXCEP: "-fcxx-exceptions"<br>
 // CHECK-EXCEP: "-fexceptions"<br>
-// CHECK-EXCEP: "-fno-common"<br>
+// CHECK-EXCEP-NOT: "-fcommon"<br>
 // CHECK-EXCEP: xcc" "-o"<br>
 // CHECK-EXCEP-NOT: "-fexceptions"<br>
 // CHECK-EXCEP: xcc" "-o"<br>
<br>
diff  --git a/clang/test/Frontend/ast-codegen.c b/clang/test/Frontend/ast-codegen.c<br>
index e1140fdd8b27..b45377850a23 100644<br>
--- a/clang/test/Frontend/ast-codegen.c<br>
+++ b/clang/test/Frontend/ast-codegen.c<br>
@@ -5,7 +5,7 @@<br>
 // CHECK: module asm "foo"<br>
 __asm__("foo");<br>
 <br>
-// CHECK: @g0 = common dso_local global i32 0, align 4<br>
+// CHECK: @g0 = dso_local global i32 0, align 4<br>
 int g0;<br>
 <br>
 // CHECK: define dso_local i32 @f0()<br>
<br>
diff  --git a/clang/test/Headers/xmmintrin.c b/clang/test/Headers/xmmintrin.c<br>
index 9b8993e6bb67..f0f832f81511 100644<br>
--- a/clang/test/Headers/xmmintrin.c<br>
+++ b/clang/test/Headers/xmmintrin.c<br>
@@ -7,7 +7,7 @@<br>
 // REQUIRES: x86-registered-target<br>
 #include <xmmintrin.h><br>
 <br>
-// CHECK: @c = common global i8 0, align 16<br>
+// CHECK: @c = global i8 0, align 16<br>
 _MM_ALIGN16 char c;<br>
 <br>
 // Make sure the last step of _mm_cvtps_pi16 converts <4 x i32> to <4 x i16> by<br>
<br>
diff  --git a/clang/test/PCH/chain-external-defs.c b/clang/test/PCH/chain-external-defs.c<br>
index f7c723338996..a58c82c59c83 100644<br>
--- a/clang/test/PCH/chain-external-defs.c<br>
+++ b/clang/test/PCH/chain-external-defs.c<br>
@@ -16,11 +16,11 @@<br>
 <br>
 // Z-NOT: @z<br>
 <br>
-// XA: @x = common global i32 0<br>
-// XA-NOT: @x = common global i32 0<br>
+// XA: @x = global i32 0<br>
+// XA-NOT: @x = global i32 0<br>
 <br>
-// YA: @y = common global i32 0<br>
-// YA-NOT: @y = common global i32 0<br>
+// YA: @y = global i32 0<br>
+// YA-NOT: @y = global i32 0<br>
 <br>
 // XB: @x2 = global i32 19<br>
 // XB-NOT: @x2 = global i32 19<br>
@@ -29,17 +29,17 @@ int x2 = 19;<br>
 // YB-NOT: @y2 = global i32 18<br>
 int y2 = 18;<br>
 <br>
-// AA: @incomplete_array = common global [1 x i32]<br>
-// AA-NOT: @incomplete_array = common global [1 x i32]<br>
-// AB: @incomplete_array2 = common global [17 x i32]<br>
-// AB-NOT: @incomplete_array2 = common global [17 x i32]<br>
+// AA: @incomplete_array = global [1 x i32]<br>
+// AA-NOT: @incomplete_array = global [1 x i32]<br>
+// AB: @incomplete_array2 = global [17 x i32]<br>
+// AB-NOT: @incomplete_array2 = global [17 x i32]<br>
 int incomplete_array2[17];<br>
-// AC: @incomplete_array3 = common global [1 x i32]<br>
-// AC-NOT: @incomplete_array3 = common global [1 x i32]<br>
+// AC: @incomplete_array3 = global [1 x i32]<br>
+// AC-NOT: @incomplete_array3 = global [1 x i32]<br>
 int incomplete_array3[];<br>
 <br>
-// S: @s = common global %struct.S<br>
-// S-NOT: @s = common global %struct.S<br>
+// S: @s = global %struct.S<br>
+// S-NOT: @s = global %struct.S<br>
 struct S {<br>
   int x, y;<br>
 };<br>
<br>
diff  --git a/clang/test/PCH/external-defs.c b/clang/test/PCH/external-defs.c<br>
index 5e906b246bc7..e78125d61fdc 100644<br>
--- a/clang/test/PCH/external-defs.c<br>
+++ b/clang/test/PCH/external-defs.c<br>
@@ -3,16 +3,16 @@<br>
 // RUN: %clang_cc1 -triple x86_64-apple-darwin9 -emit-pch -o %t.pch %S/external-defs.h<br>
 // RUN: %clang_cc1 -triple x86_64-apple-darwin9 -include-pch %t.pch -emit-llvm -o %t %s<br>
 <br>
-// RUN: grep "@x = common global i32 0" %t | count 1<br>
+// RUN: grep "@x = global i32 0" %t | count 1<br>
 // RUN: not grep "@z" %t<br>
 <br>
 // RUN: grep "@x2 = global i32 19" %t | count 1<br>
 int x2 = 19;<br>
 <br>
-// RUN: grep "@incomplete_array = common global .*1 x i32" %t | count 1<br>
-// RUN: grep "@incomplete_array2 = common global .*17 x i32" %t | count 1<br>
+// RUN: grep "@incomplete_array = global .*1 x i32" %t | count 1<br>
+// RUN: grep "@incomplete_array2 = global .*17 x i32" %t | count 1<br>
 int incomplete_array2[17];<br>
-// RUN: grep "@incomplete_array3 = common global .*1 x i32" %t | count 1<br>
+// RUN: grep "@incomplete_array3 = global .*1 x i32" %t | count 1<br>
 int incomplete_array3[];<br>
 <br>
 struct S {<br>
<br>
diff  --git a/clang/test/PCH/tentative-defs.c b/clang/test/PCH/tentative-defs.c<br>
index 7163316a93de..f9fee0ca932e 100644<br>
--- a/clang/test/PCH/tentative-defs.c<br>
+++ b/clang/test/PCH/tentative-defs.c<br>
@@ -1,6 +1,6 @@<br>
 // Test with pch.<br>
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -emit-pch -o %t.pch %S/tentative-defs.h<br>
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -include-pch %t.pch -verify -emit-llvm -o %t %s<br>
+// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -fcommon -emit-pch -o %t.pch %S/tentative-defs.h<br>
+// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -fcommon -include-pch %t.pch -verify -emit-llvm -o %t %s<br>
 // REQUIRES: x86-registered-target<br>
 <br>
 // RUN: grep "@variable = common global i32 0" %t | count 1<br>
<br>
diff  --git a/clang/test/Parser/pragma-visibility2.c b/clang/test/Parser/pragma-visibility2.c<br>
index bcef09ff2b99..272294ca16ef 100644<br>
--- a/clang/test/Parser/pragma-visibility2.c<br>
+++ b/clang/test/Parser/pragma-visibility2.c<br>
@@ -6,14 +6,14 @@<br>
 #pragma GCC visibility push(hidden)<br>
 <br>
 int v1;<br>
-// CHECK: @v1 = common hidden global i32 0, align 4<br>
+// CHECK: @v1 = hidden global i32 0, align 4<br>
 <br>
 #pragma GCC visibility pop<br>
 <br>
 int v2;<br>
-// CHECK: @v2 = common global i32 0, align 4<br>
+// CHECK: @v2 = global i32 0, align 4<br>
 <br>
 _Pragma("GCC visibility push(hidden)");<br>
 <br>
 int v3;<br>
-// CHECK: @v3 = common hidden global i32 0, align 4<br>
+// CHECK: @v3 = hidden global i32 0, align 4<br>
<br>
diff  --git a/compiler-rt/test/asan/TestCases/Linux/odr_c_test.c b/compiler-rt/test/asan/TestCases/Linux/odr_c_test.c<br>
index c1423ed30b1b..b9273e49f4c3 100644<br>
--- a/compiler-rt/test/asan/TestCases/Linux/odr_c_test.c<br>
+++ b/compiler-rt/test/asan/TestCases/Linux/odr_c_test.c<br>
@@ -1,9 +1,9 @@<br>
 // Test that we can properly report an ODR violation<br>
 // between an instrumented global and a non-instrumented global.<br>
 <br>
-// RUN: %clang_asan %s -fPIC -shared -o %dynamiclib1  -DFILE1<br>
-// RUN: %clang_asan %s -fPIC -shared -o %dynamiclib2  -DFILE2<br>
-// RUN: %clang_asan %s -fPIE %ld_flags_rpath_exe1 %ld_flags_rpath_exe2 -o %t<br>
+// RUN: %clang_asan -fcommon %s -fPIC -shared -o %dynamiclib1  -DFILE1<br>
+// RUN: %clang_asan -fcommon %s -fPIC -shared -o %dynamiclib2  -DFILE2<br>
+// RUN: %clang_asan -fcommon %s -fPIE %ld_flags_rpath_exe1 %ld_flags_rpath_exe2 -o %t<br>
 // RUN: not %run %t 2>&1 | FileCheck %s<br>
 //<br>
 // CHECK: The following global variable is not properly aligned.<br>
<br>
diff  --git a/compiler-rt/test/asan/TestCases/set_shadow_test.c b/compiler-rt/test/asan/TestCases/set_shadow_test.c<br>
index 95bbd829ba85..c20e867967ea 100644<br>
--- a/compiler-rt/test/asan/TestCases/set_shadow_test.c<br>
+++ b/compiler-rt/test/asan/TestCases/set_shadow_test.c<br>
@@ -21,13 +21,13 @@ void __asan_set_shadow_f3(size_t addr, size_t size);<br>
 void __asan_set_shadow_f5(size_t addr, size_t size);<br>
 void __asan_set_shadow_f8(size_t addr, size_t size);<br>
 <br>
-char a __attribute__((aligned(8)));<br>
+char* a;<br>
 <br>
 void f(long arg) {<br>
   size_t shadow_offset;<br>
   size_t shadow_scale;<br>
   __asan_get_shadow_mapping(&shadow_scale, &shadow_offset);<br>
-  size_t addr = (((size_t)&a) >> shadow_scale) + shadow_offset;<br>
+  size_t addr = (((size_t)a) >> shadow_scale) + shadow_offset;<br>
 <br>
   switch (arg) {<br>
   // X00-NOT: AddressSanitizer<br>
@@ -61,9 +61,10 @@ void f(long arg) {<br>
 int main(int argc, char **argv) {<br>
   assert(argc > 1);<br>
 <br>
+  a = malloc(8);<br>
   long arg = strtol(argv[1], 0, 16);<br>
   f(arg);<br>
-  a = 1;<br>
+  *a = 1;<br>
   printf("PASS\n");<br>
   return 0;<br>
 }<br>
<br>
<br>
        <br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</div>
</span></font></div>
</div>

</blockquote></div>