Fix some failures in targets on available_externally functions,

this fixes a crash on CodeGen/Generic/externally_available.ll
on ppc hosts.  Thanks to Nicholas L for pointing this out.

llvm-svn: 69333
This commit is contained in:
Chris Lattner 2009-04-17 00:26:12 +00:00
parent e24cbc0f4b
commit a8919d0a35
3 changed files with 17 additions and 0 deletions

View File

@ -116,6 +116,11 @@ namespace {
virtual bool doInitialization(Module &M);
bool runOnFunction(Function &F) {
// Do not codegen any 'available_externally' functions at all, they have
// definitions outside the translation unit.
if (F.hasAvailableExternallyLinkage())
return false;
LI = &getAnalysis<LoopInfo>();
// Get rid of intrinsics we can't handle.

View File

@ -93,6 +93,12 @@ char MSILWriter::ID = 0;
bool MSILWriter::runOnFunction(Function &F) {
if (F.isDeclaration()) return false;
// Do not codegen any 'available_externally' functions at all, they have
// definitions outside the translation unit.
if (F.hasAvailableExternallyLinkage())
return false;
LInfo = &getAnalysis<LoopInfo>();
printFunction(F);
return false;

View File

@ -25,6 +25,7 @@
#include "llvm/CodeGen/SelectionDAGISel.h"
#include "llvm/Target/TargetOptions.h"
#include "llvm/Constants.h"
#include "llvm/Function.h"
#include "llvm/GlobalValue.h"
#include "llvm/Intrinsics.h"
#include "llvm/Support/Debug.h"
@ -49,6 +50,11 @@ namespace {
PPCSubTarget(*TM.getSubtargetImpl()) {}
virtual bool runOnFunction(Function &Fn) {
// Do not codegen any 'available_externally' functions at all, they have
// definitions outside the translation unit.
if (Fn.hasAvailableExternallyLinkage())
return false;
// Make sure we re-emit a set of the global base reg if necessary
GlobalBaseReg = 0;
SelectionDAGISel::runOnFunction(Fn);