Skip to content

Commit a92218e

Browse files
committed
Upgrade LLVM to svn revision 145779
This pulls in commits 145765 & 145766, which are required for split stacks.
1 parent 96b0881 commit a92218e

File tree

7 files changed

+34
-66
lines changed

7 files changed

+34
-66
lines changed

Makefile.in

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,9 @@ COMPILER_INPUTS := $(wildcard $(addprefix $(S)src/comp/, \
202202
# LLVM macros
203203
######################################################################
204204

205+
# FIXME: x86-ism
206+
LLVM_COMPONENTS=x86 ipo bitreader bitwriter linker asmparser
207+
205208
define DEF_LLVM_VARS
206209
# The configure script defines these variables with the target triples
207210
# separated by Z. This defines new ones with the expected format.
@@ -214,7 +217,7 @@ LLVM_VERSION_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --version)
214217
LLVM_BINDIR_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --bindir)
215218
LLVM_INCDIR_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --includedir)
216219
LLVM_LIBDIR_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --libdir)
217-
LLVM_LIBS_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --libs)
220+
LLVM_LIBS_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --libs $$(LLVM_COMPONENTS))
218221
LLVM_LDFLAGS_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --ldflags)
219222
LLVM_CXXFLAGS_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --cxxflags)
220223
LLVM_HOST_TRIPLE_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --host-target)

mk/rustllvm.mk

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,14 @@
44

55
define DEF_RUSTLLVM_TARGETS
66

7+
# FIXME: Lately, on windows, llvm-config --includedir is not enough
8+
# to find the llvm includes (probably because we're not actually installing
9+
# llvm, but using it straight out of the build directory)
10+
ifdef CFG_WINDOWSY
11+
LLVM_EXTRA_INCDIRS_$(1)= -iquote $(S)src/llvm/include \
12+
-iquote llvm/$(1)/include
13+
endif
14+
715
RUSTLLVM_OBJS_CS_$(1) := $$(addprefix rustllvm/, RustGCMetadataPrinter.cpp \
816
RustGCStrategy.cpp RustWrapper.cpp)
917

@@ -14,7 +22,8 @@ endif
1422

1523
RUSTLLVM_DEF_$(1) := rustllvm/rustllvm$$(CFG_DEF_SUFFIX)
1624

17-
RUSTLLVM_INCS_$(1) = -iquote $$(LLVM_INCDIR_$(1)) \
25+
RUSTLLVM_INCS_$(1) = $$(LLVM_EXTRA_INCDIRS_$(1)) \
26+
-iquote $$(LLVM_INCDIR_$(1)) \
1827
-iquote $$(S)src/rustllvm/include
1928
RUSTLLVM_OBJS_OBJS_$(1) := $$(RUSTLLVM_OBJS_CS_$(1):rustllvm/%.cpp=rustllvm/$(1)/%.o)
2029

src/comp/back/link.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,6 @@ mod write {
125125
fn run_passes(sess: session::session, llmod: ModuleRef, output: str) {
126126
let opts = sess.get_opts();
127127
if opts.time_llvm_passes { llvm::LLVMRustEnableTimePasses(); }
128-
if opts.stack_growth { llvm::LLVMRustEnableSegmentedStacks(); }
129128
link_intrinsics(sess, llmod);
130129
let pm = mk_pass_manager();
131130
let td = mk_target_data(
@@ -244,7 +243,8 @@ mod write {
244243
buf_t,
245244
buf_o,
246245
LLVMAssemblyFile,
247-
CodeGenOptLevel)})});
246+
CodeGenOptLevel,
247+
opts.stack_growth)})});
248248
}
249249

250250

@@ -263,7 +263,8 @@ mod write {
263263
buf_t,
264264
buf_o,
265265
LLVMObjectFile,
266-
CodeGenOptLevel)})});
266+
CodeGenOptLevel,
267+
opts.stack_growth)})});
267268
}
268269
} else {
269270
// If we aren't saving temps then just output the file
@@ -280,7 +281,8 @@ mod write {
280281
buf_t,
281282
buf_o,
282283
FileType,
283-
CodeGenOptLevel)})});
284+
CodeGenOptLevel,
285+
opts.stack_growth)})});
284286
}
285287
// Clean up and return
286288

src/comp/lib/llvm.rs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -852,15 +852,13 @@ native mod llvm {
852852

853853
/* FIXME: The FileType is an enum.*/
854854
fn LLVMRustWriteOutputFile(PM: PassManagerRef, M: ModuleRef, Triple: sbuf,
855-
Output: sbuf, FileType: int, OptLevel: int);
855+
Output: sbuf, FileType: int, OptLevel: int,
856+
EnableSegmentedStacks: bool);
856857

857858
/** Returns a string describing the last error caused by an LLVMRust*
858859
call. */
859860
fn LLVMRustGetLastError() -> sbuf;
860861

861-
/** Returns a string describing the hosts triple */
862-
fn LLVMRustGetHostTriple() -> sbuf;
863-
864862
/** Parses the bitcode in the given memory buffer. */
865863
fn LLVMRustParseBitcode(MemBuf: MemoryBufferRef) -> ModuleRef;
866864

@@ -876,8 +874,6 @@ native mod llvm {
876874

877875
/** Turn on LLVM pass-timing. */
878876
fn LLVMRustEnableTimePasses();
879-
/** Turn on LLVM segmented stacks. */
880-
fn LLVMRustEnableSegmentedStacks();
881877

882878
/** Print the pass timings since static dtors aren't picking them up. */
883879
fn LLVMRustPrintPassTimings();

src/llvm

Submodule llvm updated 1814 files

src/rustllvm/RustWrapper.cpp

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -81,31 +81,35 @@ LLVMRustWriteOutputFile(LLVMPassManagerRef PMR,
8181
const char *triple,
8282
const char *path,
8383
TargetMachine::CodeGenFileType FileType,
84-
CodeGenOpt::Level OptLevel) {
85-
86-
// Set compilation options.
87-
llvm::NoFramePointerElim = true;
84+
CodeGenOpt::Level OptLevel,
85+
bool EnableSegmentedStacks) {
8886

8987
InitializeAllTargets();
9088
InitializeAllTargetMCs();
9189
InitializeAllAsmPrinters();
9290
InitializeAllAsmParsers();
91+
92+
TargetOptions Options;
93+
Options.NoFramePointerElim = true;
94+
Options.EnableSegmentedStacks = EnableSegmentedStacks;
95+
9396
std::string Err;
9497
const Target *TheTarget = TargetRegistry::lookupTarget(triple, Err);
9598
std::string FeaturesStr;
9699
std::string Trip(triple);
97100
std::string CPUStr = llvm::sys::getHostCPUName();
98101
TargetMachine *Target =
99-
TheTarget->createTargetMachine(Trip, CPUStr, FeaturesStr, Reloc::PIC_);
102+
TheTarget->createTargetMachine(Trip, CPUStr, FeaturesStr,
103+
Options, Reloc::PIC_,
104+
CodeModel::Default, OptLevel);
100105
bool NoVerify = false;
101106
PassManager *PM = unwrap<PassManager>(PMR);
102107
std::string ErrorInfo;
103108
raw_fd_ostream OS(path, ErrorInfo,
104109
raw_fd_ostream::F_Binary);
105110
formatted_raw_ostream FOS(OS);
106111

107-
bool foo = Target->addPassesToEmitFile(*PM, FOS, FileType, OptLevel,
108-
NoVerify);
112+
bool foo = Target->addPassesToEmitFile(*PM, FOS, FileType, NoVerify);
109113
assert(!foo);
110114
(void)foo;
111115
PM->run(*unwrap(M));
@@ -130,12 +134,6 @@ extern "C" LLVMModuleRef LLVMRustParseBitcode(LLVMMemoryBufferRef MemBuf) {
130134
? NULL : M;
131135
}
132136

133-
extern "C" const char *LLVMRustGetHostTriple(void)
134-
{
135-
static std::string str = llvm::sys::getHostTriple();
136-
return str.c_str();
137-
}
138-
139137
extern "C" LLVMValueRef LLVMRustConstSmallInt(LLVMTypeRef IntTy, unsigned N,
140138
LLVMBool SignExtend) {
141139
return LLVMConstInt(IntTy, (unsigned long long)N, SignExtend);
@@ -161,11 +159,6 @@ extern "C" void LLVMRustPrintPassTimings() {
161159
TimerGroup::printAll(OS);
162160
}
163161

164-
extern bool llvm::EnableSegmentedStacks;
165-
extern "C" void LLVMRustEnableSegmentedStacks() {
166-
EnableSegmentedStacks = true;
167-
}
168-
169162
extern "C" LLVMValueRef LLVMGetOrInsertFunction(LLVMModuleRef M,
170163
const char* Name,
171164
LLVMTypeRef FunctionTy) {

src/rustllvm/rustllvm.def.in

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,11 @@ LLVMRustCreateMemoryBufferWithContentsOfFile
22
LLVMRustEnableTimePasses
33
LLVMRustWriteOutputFile
44
LLVMRustGetLastError
5-
LLVMRustGetHostTriple
65
LLVMRustConstSmallInt
76
LLVMRustConstInt
87
LLVMRustParseBitcode
98
LLVMRustParseAssemblyFile
109
LLVMRustPrintPassTimings
11-
LLVMRustEnableSegmentedStacks
1210
LLVMLinkModules
1311
LLVMCreateObjectFile
1412
LLVMDisposeObjectFile
@@ -46,7 +44,6 @@ LLVMAddGVNPass
4644
LLVMAddGlobal
4745
LLVMAddGlobalDCEPass
4846
LLVMAddGlobalInAddressSpace
49-
LLVMAddGlobalMapping
5047
LLVMAddGlobalOptimizerPass
5148
LLVMAddIPConstantPropagationPass
5249
LLVMAddIPSCCPPass
@@ -63,8 +60,6 @@ LLVMAddLoopRotatePass
6360
LLVMAddLoopUnrollPass
6461
LLVMAddLoopUnswitchPass
6562
LLVMAddMemCpyOptPass
66-
LLVMAddModule
67-
LLVMAddModuleProvider
6863
LLVMAddPromoteMemoryToRegisterPass
6964
LLVMAddPruneEHPass
7065
LLVMAddReassociatePass
@@ -262,17 +257,8 @@ LLVMCountParams
262257
LLVMCountStructElementTypes
263258
LLVMCreateBuilder
264259
LLVMCreateBuilderInContext
265-
LLVMCreateExecutionEngine
266-
LLVMCreateExecutionEngineForModule
267260
LLVMCreateFunctionPassManager
268261
LLVMCreateFunctionPassManagerForModule
269-
LLVMCreateGenericValueOfFloat
270-
LLVMCreateGenericValueOfInt
271-
LLVMCreateGenericValueOfPointer
272-
LLVMCreateInterpreter
273-
LLVMCreateInterpreterForModule
274-
LLVMCreateJITCompiler
275-
LLVMCreateJITCompilerForModule
276262
LLVMCreateMemoryBufferWithContentsOfFile
277263
LLVMCreateMemoryBufferWithSTDIN
278264
LLVMCreateModuleProviderForExistingModule
@@ -283,8 +269,6 @@ LLVMDeleteBasicBlock
283269
LLVMDeleteFunction
284270
LLVMDeleteGlobal
285271
LLVMDisposeBuilder
286-
LLVMDisposeExecutionEngine
287-
LLVMDisposeGenericValue
288272
LLVMDisposeMemoryBuffer
289273
LLVMDisposeMessage
290274
LLVMDisposeModule
@@ -301,15 +285,9 @@ LLVMElementAtOffset
301285
LLVMFP128Type
302286
LLVMFP128TypeInContext
303287
LLVMFinalizeFunctionPassManager
304-
LLVMFindFunction
305288
LLVMFloatType
306289
LLVMFloatTypeInContext
307-
LLVMFreeMachineCodeForFunction
308290
LLVMFunctionType
309-
LLVMGenericValueIntWidth
310-
LLVMGenericValueToFloat
311-
LLVMGenericValueToInt
312-
LLVMGenericValueToPointer
313291
LLVMGetAlignment
314292
LLVMGetArrayLength
315293
LLVMGetAttribute
@@ -324,7 +302,6 @@ LLVMGetCurrentDebugLocation
324302
LLVMGetDataLayout
325303
LLVMGetElementType
326304
LLVMGetEntryBasicBlock
327-
LLVMGetExecutionEngineTargetData
328305
LLVMGetFirstBasicBlock
329306
LLVMGetFirstFunction
330307
LLVMGetFirstGlobal
@@ -372,7 +349,6 @@ LLVMGetParamParent
372349
LLVMGetParamTypes
373350
LLVMGetParams
374351
LLVMGetPointerAddressSpace
375-
LLVMGetPointerToGlobal
376352
LLVMGetPreviousBasicBlock
377353
LLVMGetPreviousFunction
378354
LLVMGetPreviousGlobal
@@ -399,7 +375,6 @@ LLVMInitializeCodeGen
399375
LLVMInitializeFunctionPassManager
400376
LLVMInitializeIPA
401377
LLVMInitializeInstCombine
402-
LLVMInitializeInstrumentation
403378
LLVMInitializeScalarOpts
404379
LLVMInitializeTarget
405380
LLVMInitializeTransformUtils
@@ -508,9 +483,6 @@ LLVMIsThreadLocal
508483
LLVMIsUndef
509484
LLVMLabelType
510485
LLVMLabelTypeInContext
511-
LLVMLinkInInterpreter
512-
LLVMLinkInJIT
513-
LLVMLinkInMCJIT
514486
LLVMMDNode
515487
LLVMMDNodeInContext
516488
LLVMMDString
@@ -542,19 +514,12 @@ LLVMPositionBuilderAtEnd
542514
LLVMPositionBuilderBefore
543515
LLVMPreferredAlignmentOfGlobal
544516
LLVMPreferredAlignmentOfType
545-
LLVMRecompileAndRelinkFunction
546517
LLVMRemoveAttribute
547518
LLVMRemoveFunctionAttr
548519
LLVMRemoveInstrAttribute
549-
LLVMRemoveModule
550-
LLVMRemoveModuleProvider
551520
LLVMReplaceAllUsesWith
552-
LLVMRunFunction
553-
LLVMRunFunctionAsMain
554521
LLVMRunFunctionPassManager
555522
LLVMRunPassManager
556-
LLVMRunStaticConstructors
557-
LLVMRunStaticDestructors
558523
LLVMSetAlignment
559524
LLVMSetCleanup
560525
LLVMSetCurrentDebugLocation

0 commit comments

Comments
 (0)