[llvm] r272262 - [CodeGen] Change getSDagStackGuard to get an internal sym.

Davide Italiano via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 9 07:23:38 PDT 2016


Author: davide
Date: Thu Jun  9 09:23:38 2016
New Revision: 272262

URL: http://llvm.org/viewvc/llvm-project?rev=272262&view=rev
Log:
[CodeGen] Change getSDagStackGuard to get an internal sym.

Fixes a crash in the backend during an LTO build of rtld(1) in
FreeBSD.

Added:
    llvm/trunk/test/CodeGen/Generic/stackguard-internal.ll
Modified:
    llvm/trunk/lib/CodeGen/TargetLoweringBase.cpp

Modified: llvm/trunk/lib/CodeGen/TargetLoweringBase.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/TargetLoweringBase.cpp?rev=272262&r1=272261&r2=272262&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/TargetLoweringBase.cpp (original)
+++ llvm/trunk/lib/CodeGen/TargetLoweringBase.cpp Thu Jun  9 09:23:38 2016
@@ -1831,7 +1831,7 @@ void TargetLoweringBase::insertSSPDeclar
 // Currently only support "standard" __stack_chk_guard.
 // TODO: add LOAD_STACK_GUARD support.
 Value *TargetLoweringBase::getSDagStackGuard(const Module &M) const {
-  return M.getGlobalVariable("__stack_chk_guard");
+  return M.getGlobalVariable("__stack_chk_guard", true);
 }
 
 Value *TargetLoweringBase::getSSPStackGuardCheck(const Module &M) const {

Added: llvm/trunk/test/CodeGen/Generic/stackguard-internal.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Generic/stackguard-internal.ll?rev=272262&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/Generic/stackguard-internal.ll (added)
+++ llvm/trunk/test/CodeGen/Generic/stackguard-internal.ll Thu Jun  9 09:23:38 2016
@@ -0,0 +1,13 @@
+; Check that the backend doesn't crash.
+; RUN: llc -mtriple=x86_64-pc-freebsd %s -o - | FileCheck %s
+
+ at __stack_chk_guard = internal global [8 x i64] zeroinitializer, align 16
+
+define void @f() sspstrong {
+  %tbl = alloca [4 x i64], align 16
+  ret void
+}
+
+; CHECK:  .type __stack_chk_guard, at object
+; CHECK:  .local  __stack_chk_guard
+; CHECK:  .comm __stack_chk_guard,64,16




More information about the llvm-commits mailing list