[llvm-dev] Linux/ARM: Segfault issue when we build clang sources including __thread variable using -O2 flag
Geunsik Lim via llvm-commits
llvm-commits at lists.llvm.org
Wed May 11 19:38:57 PDT 2016
> +++ b/lib/Target/ARM/ARMConstantPoolValue.cpp
> +++ b/test/CodeGen/ARM/litpool-licm.ll
I have been trying to experiment the effect of your patches.
From my experiment, It seems that your proposal (r268662) cannot resolve
the issue that I reported.
So, I am checking the build (on ubuntu 14.04 x64 pc) and running
environment (on ARM v7le emulator).
Could you tell me the file name of LLVM that your two patches are belong to
?
For example, Is ARMConstantPoolValue.cpp is included in
the libLLVMARMCodeGen.a?
------------------------------ llvm-3.6 tree
--------------------------------------------
invain at target:/usr/lib/llvm-3.6$ tree
.
├── bin
│ ├── bugpoint
│ ├── c-index-test
│ ├── clang
│ ├── clang++ -> clang
│ ├── clang-apply-replacements
│ ├── clang-check
│ ├── clang-query
│ ├── clang-rename
│ ├── clang-tblgen
│ ├── clang-tidy
│ ├── llc
│ ├── lldb
│ ├── lldb-gdbserver
│ ├── lldb-mi
│ ├── lldb-platform
│ ├── lli
│ ├── lli-child-target
│ ├── llvm-ar
│ ├── llvm-as
│ ├── llvm-bcanalyzer
│ ├── llvm-config
│ ├── llvm-cov
│ ├── llvm-diff
│ ├── llvm-dis
│ ├── llvm-dsymutil
│ ├── llvm-dwarfdump
│ ├── llvm-extract
│ ├── llvm-link
│ ├── llvm-mc
│ ├── llvm-mcmarkup
│ ├── llvm-nm
│ ├── llvm-objdump
│ ├── llvm-profdata
│ ├── llvm-ranlib -> llvm-ar
│ ├── llvm-readobj
│ ├── llvm-rtdyld
│ ├── llvm-size
│ ├── llvm-stress
│ ├── llvm-symbolizer
│ ├── llvm-tblgen
│ ├── llvm-vtabledump
│ ├── macho-dump
│ ├── obj2yaml
│ ├── opt
│ ├── pp-trace
│ ├── verify-uselistorder
│ └── yaml2obj
├── build
│ ├── Debug+Asserts -> ..
│ ├── Makefile.common
│ ├── Makefile.config
│ ├── Makefile.rules
│ ├── Release -> ..
│ ├── autoconf
│ │ ├── AutoRegen.sh
│ │ ├── ExportMap.map
│ │ ├── README.TXT
│ │ ├── config.guess
│ │ ├── config.sub
│ │ ├── configure.ac
│ │ ├── install-sh
│ │ ├── m4
│ │ │ ├── build_exeext.m4
│ │ │ ├── c_printf_a.m4
│ │ │ ├── check_gnu_make.m4
│ │ │ ├── config_makefile.m4
│ │ │ ├── config_project.m4
│ │ │ ├── cxx_flag_check.m4
│ │ │ ├── define_subst.m4
│ │ │ ├── find_std_program.m4
│ │ │ ├── func_isinf.m4
│ │ │ ├── func_isnan.m4
│ │ │ ├── func_mmap_file.m4
│ │ │ ├── header_mmap_anonymous.m4
│ │ │ ├── huge_val.m4
│ │ │ ├── link_options.m4
│ │ │ ├── linux_mixed_64_32.m4
│ │ │ ├── need_dev_zero_for_mmap.m4
│ │ │ ├── rand48.m4
│ │ │ ├── sanity_check.m4
│ │ │ ├── single_cxx_check.m4
│ │ │ └── visibility_inlines_hidden.m4
│ │ ├── missing
│ │ └── mkinstalldirs
│ ├── config.status
│ ├── configure
│ └── include -> ../include
├── include
│ ├── lldb
│ │ ├── API
│ │ │ ├── LLDB.h
│ │ │ ├── SBAddress.h
│ │ │ ├── SBBlock.h
│ │ │ ├── SBBreakpoint.h
│ │ │ ├── SBBreakpointLocation.h
│ │ │ ├── SBBroadcaster.h
│ │ │ ├── SBCommandInterpreter.h
│ │ │ ├── SBCommandReturnObject.h
│ │ │ ├── SBCommunication.h
│ │ │ ├── SBCompileUnit.h
│ │ │ ├── SBData.h
│ │ │ ├── SBDebugger.h
│ │ │ ├── SBDeclaration.h
│ │ │ ├── SBDefines.h
│ │ │ ├── SBError.h
│ │ │ ├── SBEvent.h
│ │ │ ├── SBExecutionContext.h
│ │ │ ├── SBExpressionOptions.h
│ │ │ ├── SBFileSpec.h
│ │ │ ├── SBFileSpecList.h
│ │ │ ├── SBFrame.h
│ │ │ ├── SBFunction.h
│ │ │ ├── SBHostOS.h
│ │ │ ├── SBInstruction.h
│ │ │ ├── SBInstructionList.h
│ │ │ ├── SBLineEntry.h
│ │ │ ├── SBListener.h
│ │ │ ├── SBModule.h
│ │ │ ├── SBModuleSpec.h
│ │ │ ├── SBPlatform.h
│ │ │ ├── SBProcess.h
│ │ │ ├── SBQueue.h
│ │ │ ├── SBQueueItem.h
│ │ │ ├── SBSection.h
│ │ │ ├── SBSourceManager.h
│ │ │ ├── SBStream.h
│ │ │ ├── SBStringList.h
│ │ │ ├── SBSymbol.h
│ │ │ ├── SBSymbolContext.h
│ │ │ ├── SBSymbolContextList.h
│ │ │ ├── SBTarget.h
│ │ │ ├── SBThread.h
│ │ │ ├── SBThreadCollection.h
│ │ │ ├── SBThreadPlan.h
│ │ │ ├── SBType.h
│ │ │ ├── SBTypeCategory.h
│ │ │ ├── SBTypeEnumMember.h
│ │ │ ├── SBTypeFilter.h
│ │ │ ├── SBTypeFormat.h
│ │ │ ├── SBTypeNameSpecifier.h
│ │ │ ├── SBTypeSummary.h
│ │ │ ├── SBTypeSynthetic.h
│ │ │ ├── SBUnixSignals.h
│ │ │ ├── SBValue.h
│ │ │ ├── SBValueList.h
│ │ │ └── SBWatchpoint.h
│ │ ├── Breakpoint
│ │ │ ├── Breakpoint.h
│ │ │ ├── BreakpointID.h
│ │ │ ├── BreakpointIDList.h
│ │ │ ├── BreakpointList.h
│ │ │ ├── BreakpointLocation.h
│ │ │ ├── BreakpointLocationCollection.h
│ │ │ ├── BreakpointLocationList.h
│ │ │ ├── BreakpointOptions.h
│ │ │ ├── BreakpointResolver.h
│ │ │ ├── BreakpointResolverAddress.h
│ │ │ ├── BreakpointResolverFileLine.h
│ │ │ ├── BreakpointResolverFileRegex.h
│ │ │ ├── BreakpointResolverName.h
│ │ │ ├── BreakpointSite.h
│ │ │ ├── BreakpointSiteList.h
│ │ │ ├── Stoppoint.h
│ │ │ ├── StoppointCallbackContext.h
│ │ │ ├── StoppointLocation.h
│ │ │ ├── Watchpoint.h
│ │ │ ├── WatchpointList.h
│ │ │ └── WatchpointOptions.h
│ │ ├── Core
│ │ │ ├── Address.h
│ │ │ ├── AddressRange.h
│ │ │ ├── AddressResolver.h
│ │ │ ├── AddressResolverFileLine.h
│ │ │ ├── AddressResolverName.h
│ │ │ ├── ArchSpec.h
│ │ │ ├── Baton.h
│ │ │ ├── Broadcaster.h
│ │ │ ├── ClangForward.h
│ │ │ ├── Communication.h
│ │ │ ├── Connection.h
│ │ │ ├── ConnectionMachPort.h
│ │ │ ├── ConnectionSharedMemory.h
│ │ │ ├── ConstString.h
│ │ │ ├── DataBuffer.h
│ │ │ ├── DataBufferHeap.h
│ │ │ ├── DataBufferMemoryMap.h
│ │ │ ├── DataEncoder.h
│ │ │ ├── DataExtractor.h
│ │ │ ├── Debugger.h
│ │ │ ├── Disassembler.h
│ │ │ ├── EmulateInstruction.h
│ │ │ ├── Error.h
│ │ │ ├── Event.h
│ │ │ ├── FileLineResolver.h
│ │ │ ├── FileSpecList.h
│ │ │ ├── Flags.h
│ │ │ ├── History.h
│ │ │ ├── IOHandler.h
│ │ │ ├── IOStreamMacros.h
│ │ │ ├── Language.h
│ │ │ ├── Listener.h
│ │ │ ├── Log.h
│ │ │ ├── Mangled.h
│ │ │ ├── MappedHash.h
│ │ │ ├── Module.h
│ │ │ ├── ModuleChild.h
│ │ │ ├── ModuleList.h
│ │ │ ├── ModuleSpec.h
│ │ │ ├── Opcode.h
│ │ │ ├── PluginInterface.h
│ │ │ ├── PluginManager.h
│ │ │ ├── RangeMap.h
│ │ │ ├── RegisterValue.h
│ │ │ ├── RegularExpression.h
│ │ │ ├── STLUtils.h
│ │ │ ├── Scalar.h
│ │ │ ├── SearchFilter.h
│ │ │ ├── Section.h
│ │ │ ├── SourceManager.h
│ │ │ ├── State.h
│ │ │ ├── Stream.h
│ │ │ ├── StreamAsynchronousIO.h
│ │ │ ├── StreamBuffer.h
│ │ │ ├── StreamCallback.h
│ │ │ ├── StreamFile.h
│ │ │ ├── StreamGDBRemote.h
│ │ │ ├── StreamString.h
│ │ │ ├── StreamTee.h
│ │ │ ├── StringList.h
│ │ │ ├── StructuredData.h
│ │ │ ├── ThreadSafeDenseMap.h
│ │ │ ├── ThreadSafeSTLMap.h
│ │ │ ├── ThreadSafeValue.h
│ │ │ ├── Timer.h
│ │ │ ├── UUID.h
│ │ │ ├── UniqueCStringMap.h
│ │ │ ├── UserID.h
│ │ │ ├── UserSettingsController.h
│ │ │ ├── VMRange.h
│ │ │ ├── Value.h
│ │ │ ├── ValueObject.h
│ │ │ ├── ValueObjectCast.h
│ │ │ ├── ValueObjectChild.h
│ │ │ ├── ValueObjectConstResult.h
│ │ │ ├── ValueObjectConstResultChild.h
│ │ │ ├── ValueObjectConstResultImpl.h
│ │ │ ├── ValueObjectDynamicValue.h
│ │ │ ├── ValueObjectList.h
│ │ │ ├── ValueObjectMemory.h
│ │ │ ├── ValueObjectRegister.h
│ │ │ ├── ValueObjectSyntheticFilter.h
│ │ │ ├── ValueObjectVariable.h
│ │ │ └── dwarf.h
│ │ ├── DataFormatters
│ │ │ ├── CXXFormatterFunctions.h
│ │ │ ├── DataVisualization.h
│ │ │ ├── FormatCache.h
│ │ │ ├── FormatClasses.h
│ │ │ ├── FormatManager.h
│ │ │ ├── FormattersContainer.h
│ │ │ ├── StringPrinter.h
│ │ │ ├── TypeCategory.h
│ │ │ ├── TypeCategoryMap.h
│ │ │ ├── TypeFormat.h
│ │ │ ├── TypeSummary.h
│ │ │ ├── TypeSynthetic.h
│ │ │ ├── TypeValidator.h
│ │ │ └── ValueObjectPrinter.h
│ │ ├── Expression
│ │ │ ├── ASTDumper.h
│ │ │ ├── ASTResultSynthesizer.h
│ │ │ ├── ASTStructExtractor.h
│ │ │ ├── ClangASTSource.h
│ │ │ ├── ClangExpression.h
│ │ │ ├── ClangExpressionDeclMap.h
│ │ │ ├── ClangExpressionParser.h
│ │ │ ├── ClangExpressionVariable.h
│ │ │ ├── ClangFunction.h
│ │ │ ├── ClangModulesDeclVendor.h
│ │ │ ├── ClangPersistentVariables.h
│ │ │ ├── ClangUserExpression.h
│ │ │ ├── ClangUtilityFunction.h
│ │ │ ├── DWARFExpression.h
│ │ │ ├── ExpressionSourceCode.h
│ │ │ ├── IRDynamicChecks.h
│ │ │ ├── IRExecutionUnit.h
│ │ │ ├── IRForTarget.h
│ │ │ ├── IRInterpreter.h
│ │ │ ├── IRMemoryMap.h
│ │ │ ├── IRToDWARF.h
│ │ │ └── Materializer.h
│ │ ├── Host
│ │ │ ├── Condition.h
│ │ │ ├── Config.h
│ │ │ ├── ConnectionFileDescriptor.h
│ │ │ ├── Debug.h
│ │ │ ├── Editline.h
│ │ │ ├── Endian.h
│ │ │ ├── File.h
│ │ │ ├── FileCache.h
│ │ │ ├── FileSpec.h
│ │ │ ├── FileSystem.h
│ │ │ ├── Host.h
│ │ │ ├── HostGetOpt.h
│ │ │ ├── HostInfo.h
│ │ │ ├── HostInfoBase.h
│ │ │ ├── HostNativeProcess.h
│ │ │ ├── HostNativeProcessBase.h
│ │ │ ├── HostNativeThread.h
│ │ │ ├── HostNativeThreadBase.h
│ │ │ ├── HostNativeThreadForward.h
│ │ │ ├── HostProcess.h
│ │ │ ├── HostThread.h
│ │ │ ├── IOObject.h
│ │ │ ├── MonitoringProcessLauncher.h
│ │ │ ├── Mutex.h
│ │ │ ├── OptionParser.h
│ │ │ ├── Pipe.h
│ │ │ ├── PipeBase.h
│ │ │ ├── Predicate.h
│ │ │ ├── ProcessLauncher.h
│ │ │ ├── ProcessRunLock.h
│ │ │ ├── Socket.h
│ │ │ ├── SocketAddress.h
│ │ │ ├── Symbols.h
│ │ │ ├── Terminal.h
│ │ │ ├── ThisThread.h
│ │ │ ├── ThreadLauncher.h
│ │ │ ├── TimeValue.h
│ │ │ ├── android
│ │ │ │ ├── Android.h
│ │ │ │ └── Config.h
│ │ │ ├── freebsd
│ │ │ │ ├── Config.h
│ │ │ │ ├── HostInfoFreeBSD.h
│ │ │ │ └── HostThreadFreeBSD.h
│ │ │ ├── linux
│ │ │ │ ├── Config.h
│ │ │ │ ├── HostInfoLinux.h
│ │ │ │ └── HostThreadLinux.h
│ │ │ ├── macosx
│ │ │ │ ├── Config.h
│ │ │ │ ├── HostInfoMacOSX.h
│ │ │ │ └── HostThreadMacOSX.h
│ │ │ ├── mingw
│ │ │ │ └── Config.h
│ │ │ ├── msvc
│ │ │ │ └── Config.h
│ │ │ ├── posix
│ │ │ │ ├── ConnectionFileDescriptorPosix.h
│ │ │ │ ├── HostInfoPosix.h
│ │ │ │ ├── HostProcessPosix.h
│ │ │ │ ├── HostThreadPosix.h
│ │ │ │ ├── PipePosix.h
│ │ │ │ └── ProcessLauncherPosix.h
│ │ │ └── windows
│ │ │ ├── AutoHandle.h
│ │ │ ├── ConnectionGenericFileWindows.h
│ │ │ ├── HostInfoWindows.h
│ │ │ ├── HostProcessWindows.h
│ │ │ ├── HostThreadWindows.h
│ │ │ ├── PipeWindows.h
│ │ │ ├── ProcessLauncherWindows.h
│ │ │ ├── editlinewin.h
│ │ │ ├── getopt
│ │ │ │ └── GetOptInc.h
│ │ │ ├── win32.h
│ │ │ └── windows.h
│ │ ├── Interpreter
│ │ │ ├── Args.h
│ │ │ ├── CommandCompletions.h
│ │ │ ├── CommandHistory.h
│ │ │ ├── CommandInterpreter.h
│ │ │ ├── CommandObject.h
│ │ │ ├── CommandObjectMultiword.h
│ │ │ ├── CommandObjectRegexCommand.h
│ │ │ ├── CommandOptionValidators.h
│ │ │ ├── CommandReturnObject.h
│ │ │ ├── OptionGroupArchitecture.h
│ │ │ ├── OptionGroupBoolean.h
│ │ │ ├── OptionGroupFile.h
│ │ │ ├── OptionGroupFormat.h
│ │ │ ├── OptionGroupOutputFile.h
│ │ │ ├── OptionGroupPlatform.h
│ │ │ ├── OptionGroupString.h
│ │ │ ├── OptionGroupUInt64.h
│ │ │ ├── OptionGroupUUID.h
│ │ │ ├── OptionGroupValueObjectDisplay.h
│ │ │ ├── OptionGroupVariable.h
│ │ │ ├── OptionGroupWatchpoint.h
│ │ │ ├── OptionValue.h
│ │ │ ├── OptionValueArch.h
│ │ │ ├── OptionValueArgs.h
│ │ │ ├── OptionValueArray.h
│ │ │ ├── OptionValueBoolean.h
│ │ │ ├── OptionValueChar.h
│ │ │ ├── OptionValueDictionary.h
│ │ │ ├── OptionValueEnumeration.h
│ │ │ ├── OptionValueFileSpec.h
│ │ │ ├── OptionValueFileSpecList.h
│ │ │ ├── OptionValueFormat.h
│ │ │ ├── OptionValuePathMappings.h
│ │ │ ├── OptionValueProperties.h
│ │ │ ├── OptionValueRegex.h
│ │ │ ├── OptionValueSInt64.h
│ │ │ ├── OptionValueString.h
│ │ │ ├── OptionValueUInt64.h
│ │ │ ├── OptionValueUUID.h
│ │ │ ├── OptionValues.h
│ │ │ ├── Options.h
│ │ │ ├── Property.h
│ │ │ ├── PythonDataObjects.h
│ │ │ ├── ScriptInterpreter.h
│ │ │ ├── ScriptInterpreterNone.h
│ │ │ └── ScriptInterpreterPython.h
│ │ ├── Symbol
│ │ │ ├── Block.h
│ │ │ ├── ClangASTContext.h
│ │ │ ├── ClangASTImporter.h
│ │ │ ├── ClangASTType.h
│ │ │ ├── ClangExternalASTSourceCallbacks.h
│ │ │ ├── ClangExternalASTSourceCommon.h
│ │ │ ├── ClangNamespaceDecl.h
│ │ │ ├── CompactUnwindInfo.h
│ │ │ ├── CompileUnit.h
│ │ │ ├── DWARFCallFrameInfo.h
│ │ │ ├── DeclVendor.h
│ │ │ ├── Declaration.h
│ │ │ ├── FuncUnwinders.h
│ │ │ ├── Function.h
│ │ │ ├── LineEntry.h
│ │ │ ├── LineTable.h
│ │ │ ├── ObjectContainer.h
│ │ │ ├── ObjectFile.h
│ │ │ ├── Symbol.h
│ │ │ ├── SymbolContext.h
│ │ │ ├── SymbolContextScope.h
│ │ │ ├── SymbolFile.h
│ │ │ ├── SymbolVendor.h
│ │ │ ├── Symtab.h
│ │ │ ├── TaggedASTType.h
│ │ │ ├── Type.h
│ │ │ ├── TypeList.h
│ │ │ ├── UnwindPlan.h
│ │ │ ├── UnwindTable.h
│ │ │ ├── Variable.h
│ │ │ ├── VariableList.h
│ │ │ └── VerifyDecl.h
│ │ ├── Target
│ │ │ ├── ABI.h
│ │ │ ├── CPPLanguageRuntime.h
│ │ │ ├── DynamicLoader.h
│ │ │ ├── ExecutionContext.h
│ │ │ ├── ExecutionContextScope.h
│ │ │ ├── FileAction.h
│ │ │ ├── InstrumentationRuntime.h
│ │ │ ├── InstrumentationRuntimeStopInfo.h
│ │ │ ├── JITLoader.h
│ │ │ ├── JITLoaderList.h
│ │ │ ├── LanguageRuntime.h
│ │ │ ├── Memory.h
│ │ │ ├── MemoryHistory.h
│ │ │ ├── MemoryRegionInfo.h
│ │ │ ├── NativeRegisterContext.h
│ │ │ ├── NativeRegisterContextRegisterInfo.h
│ │ │ ├── ObjCLanguageRuntime.h
│ │ │ ├── OperatingSystem.h
│ │ │ ├── PathMappingList.h
│ │ │ ├── Platform.h
│ │ │ ├── Process.h
│ │ │ ├── ProcessInfo.h
│ │ │ ├── ProcessLaunchInfo.h
│ │ │ ├── Queue.h
│ │ │ ├── QueueItem.h
│ │ │ ├── QueueList.h
│ │ │ ├── RegisterCheckpoint.h
│ │ │ ├── RegisterContext.h
│ │ │ ├── SectionLoadHistory.h
│ │ │ ├── SectionLoadList.h
│ │ │ ├── StackFrame.h
│ │ │ ├── StackFrameList.h
│ │ │ ├── StackID.h
│ │ │ ├── StopInfo.h
│ │ │ ├── SystemRuntime.h
│ │ │ ├── Target.h
│ │ │ ├── TargetList.h
│ │ │ ├── Thread.h
│ │ │ ├── ThreadCollection.h
│ │ │ ├── ThreadList.h
│ │ │ ├── ThreadPlan.h
│ │ │ ├── ThreadPlanBase.h
│ │ │ ├── ThreadPlanCallFunction.h
│ │ │ ├── ThreadPlanCallUserExpression.h
│ │ │ ├── ThreadPlanPython.h
│ │ │ ├── ThreadPlanRunToAddress.h
│ │ │ ├── ThreadPlanShouldStopHere.h
│ │ │ ├── ThreadPlanStepInRange.h
│ │ │ ├── ThreadPlanStepInstruction.h
│ │ │ ├── ThreadPlanStepOut.h
│ │ │ ├── ThreadPlanStepOverBreakpoint.h
│ │ │ ├── ThreadPlanStepOverRange.h
│ │ │ ├── ThreadPlanStepRange.h
│ │ │ ├── ThreadPlanStepThrough.h
│ │ │ ├── ThreadPlanStepUntil.h
│ │ │ ├── ThreadPlanTracer.h
│ │ │ ├── ThreadSpec.h
│ │ │ ├── UnixSignals.h
│ │ │ ├── Unwind.h
│ │ │ └── UnwindAssembly.h
│ │ ├── Utility
│ │ │ ├── AnsiTerminal.h
│ │ │ ├── CleanUp.h
│ │ │ ├── Iterable.h
│ │ │ ├── PriorityPointerPair.h
│ │ │ ├── ProcessStructReader.h
│ │ │ ├── PseudoTerminal.h
│ │ │ ├── PythonPointer.h
│ │ │ ├── Range.h
│ │ │ ├── RegisterNumber.h
│ │ │ ├── SafeMachO.h
│ │ │ ├── SharedCluster.h
│ │ │ ├── SharingPtr.h
│ │ │ ├── StringLexer.h
│ │ │ └── Utils.h
│ │ ├── lldb-defines.h
│ │ ├── lldb-enumerations.h
│ │ ├── lldb-forward.h
│ │ ├── lldb-private-enumerations.h
│ │ ├── lldb-private-forward.h
│ │ ├── lldb-private-interfaces.h
│ │ ├── lldb-private-log.h
│ │ ├── lldb-private-types.h
│ │ ├── lldb-private.h
│ │ ├── lldb-public.h
│ │ ├── lldb-python.h
│ │ ├── lldb-types.h
│ │ └── lldb-versioning.h
│ ├── llvm -> ../../../include/llvm-3.6/llvm
│ └── llvm-c -> ../../../include/llvm-c-3.6/llvm-c
├── lib
│ ├── BugpointPasses.so
│ ├── LLVMHello.so
│ ├── LLVMgold.so
│ ├── clang
│ │ └── 3.6.2
│ │ ├── include
│ │ │ ├── Intrin.h
│ │ │ ├── __stddef_max_align_t.h
│ │ │ ├── __wmmintrin_aes.h
│ │ │ ├── __wmmintrin_pclmul.h
│ │ │ ├── adxintrin.h
│ │ │ ├── altivec.h
│ │ │ ├── ammintrin.h
│ │ │ ├── arm_acle.h
│ │ │ ├── arm_neon.h
│ │ │ ├── avx2intrin.h
│ │ │ ├── avx512bwintrin.h
│ │ │ ├── avx512erintrin.h
│ │ │ ├── avx512fintrin.h
│ │ │ ├── avx512vlbwintrin.h
│ │ │ ├── avx512vlintrin.h
│ │ │ ├── avxintrin.h
│ │ │ ├── bmi2intrin.h
│ │ │ ├── bmiintrin.h
│ │ │ ├── cpuid.h
│ │ │ ├── emmintrin.h
│ │ │ ├── f16cintrin.h
│ │ │ ├── float.h
│ │ │ ├── fma4intrin.h
│ │ │ ├── fmaintrin.h
│ │ │ ├── ia32intrin.h
│ │ │ ├── immintrin.h
│ │ │ ├── iso646.h
│ │ │ ├── limits.h
│ │ │ ├── lzcntintrin.h
│ │ │ ├── mm3dnow.h
│ │ │ ├── mm_malloc.h
│ │ │ ├── mmintrin.h
│ │ │ ├── module.modulemap
│ │ │ ├── nmmintrin.h
│ │ │ ├── pmmintrin.h
│ │ │ ├── popcntintrin.h
│ │ │ ├── prfchwintrin.h
│ │ │ ├── rdseedintrin.h
│ │ │ ├── rtmintrin.h
│ │ │ ├── sanitizer
│ │ │ │ ├── allocator_interface.h
│ │ │ │ ├── asan_interface.h
│ │ │ │ ├── common_interface_defs.h
│ │ │ │ ├── dfsan_interface.h
│ │ │ │ ├── linux_syscall_hooks.h
│ │ │ │ ├── lsan_interface.h
│ │ │ │ ├── msan_interface.h
│ │ │ │ └── tsan_interface_atomic.h
│ │ │ ├── shaintrin.h
│ │ │ ├── smmintrin.h
│ │ │ ├── stdalign.h
│ │ │ ├── stdarg.h
│ │ │ ├── stdatomic.h
│ │ │ ├── stdbool.h
│ │ │ ├── stddef.h
│ │ │ ├── stdint.h
│ │ │ ├── stdnoreturn.h
│ │ │ ├── tbmintrin.h
│ │ │ ├── tgmath.h
│ │ │ ├── tmmintrin.h
│ │ │ ├── unwind.h
│ │ │ ├── vadefs.h
│ │ │ ├── varargs.h
│ │ │ ├── wmmintrin.h
│ │ │ ├── x86intrin.h
│ │ │ ├── xmmintrin.h
│ │ │ └── xopintrin.h
│ │ └── lib
│ │ └── linux
│ │ ├── libclang_rt.asan-x86_64.a
│ │ ├── libclang_rt.asan_cxx-x86_64.a
│ │ ├── libclang_rt.builtins-x86_64.a
│ │ ├── libclang_rt.dfsan-x86_64.a
│ │ ├── libclang_rt.lsan-x86_64.a
│ │ ├── libclang_rt.msan-x86_64.a
│ │ ├── libclang_rt.profile-x86_64.a
│ │ ├── libclang_rt.san-x86_64.a
│ │ ├── libclang_rt.tsan-x86_64.a
│ │ ├── libclang_rt.ubsan-x86_64.a
│ │ └── libclang_rt.ubsan_cxx-x86_64.a
│ ├── libLLVM-3.6.2.so -> ../../x86_64-linux-gnu/libLLVM-3.6.so.1
│ ├── libLLVM-3.6.2.so.1 -> ../../x86_64-linux-gnu/libLLVM-3.6.so.1
│ ├── libLLVM-3.6.so -> ../../x86_64-linux-gnu/libLLVM-3.6.so.1
│ ├── libLLVMAArch64AsmParser.a
│ ├── libLLVMAArch64AsmPrinter.a
│ ├── libLLVMAArch64CodeGen.a
│ ├── libLLVMAArch64Desc.a
│ ├── libLLVMAArch64Disassembler.a
│ ├── libLLVMAArch64Info.a
│ ├── libLLVMAArch64Utils.a
│ ├── libLLVMARMAsmParser.a
│ ├── libLLVMARMAsmPrinter.a
│ ├── libLLVMARMCodeGen.a
│ ├── libLLVMARMDesc.a
│ ├── libLLVMARMDisassembler.a
│ ├── libLLVMARMInfo.a
│ ├── libLLVMAnalysis.a
│ ├── libLLVMAsmParser.a
│ ├── libLLVMAsmPrinter.a
│ ├── libLLVMBitReader.a
│ ├── libLLVMBitWriter.a
│ ├── libLLVMCodeGen.a
│ ├── libLLVMCore.a
│ ├── libLLVMCppBackendCodeGen.a
│ ├── libLLVMCppBackendInfo.a
│ ├── libLLVMDebugInfo.a
│ ├── libLLVMExecutionEngine.a
│ ├── libLLVMHexagonCodeGen.a
│ ├── libLLVMHexagonDesc.a
│ ├── libLLVMHexagonDisassembler.a
│ ├── libLLVMHexagonInfo.a
│ ├── libLLVMIRReader.a
│ ├── libLLVMInstCombine.a
│ ├── libLLVMInstrumentation.a
│ ├── libLLVMInterpreter.a
│ ├── libLLVMLTO.a
│ ├── libLLVMLineEditor.a
│ ├── libLLVMLinker.a
│ ├── libLLVMMC.a
│ ├── libLLVMMCDisassembler.a
│ ├── libLLVMMCJIT.a
│ ├── libLLVMMCParser.a
│ ├── libLLVMMSP430AsmPrinter.a
│ ├── libLLVMMSP430CodeGen.a
│ ├── libLLVMMSP430Desc.a
│ ├── libLLVMMSP430Info.a
│ ├── libLLVMMipsAsmParser.a
│ ├── libLLVMMipsAsmPrinter.a
│ ├── libLLVMMipsCodeGen.a
│ ├── libLLVMMipsDesc.a
│ ├── libLLVMMipsDisassembler.a
│ ├── libLLVMMipsInfo.a
│ ├── libLLVMNVPTXAsmPrinter.a
│ ├── libLLVMNVPTXCodeGen.a
│ ├── libLLVMNVPTXDesc.a
│ ├── libLLVMNVPTXInfo.a
│ ├── libLLVMObjCARCOpts.a
│ ├── libLLVMObject.a
│ ├── libLLVMOption.a
│ ├── libLLVMPowerPCAsmParser.a
│ ├── libLLVMPowerPCAsmPrinter.a
│ ├── libLLVMPowerPCCodeGen.a
│ ├── libLLVMPowerPCDesc.a
│ ├── libLLVMPowerPCDisassembler.a
│ ├── libLLVMPowerPCInfo.a
│ ├── libLLVMProfileData.a
│ ├── libLLVMR600AsmParser.a
│ ├── libLLVMR600AsmPrinter.a
│ ├── libLLVMR600CodeGen.a
│ ├── libLLVMR600Desc.a
│ ├── libLLVMR600Info.a
│ ├── libLLVMRuntimeDyld.a
│ ├── libLLVMScalarOpts.a
│ ├── libLLVMSelectionDAG.a
│ ├── libLLVMSparcAsmParser.a
│ ├── libLLVMSparcAsmPrinter.a
│ ├── libLLVMSparcCodeGen.a
│ ├── libLLVMSparcDesc.a
│ ├── libLLVMSparcDisassembler.a
│ ├── libLLVMSparcInfo.a
│ ├── libLLVMSupport.a
│ ├── libLLVMSystemZAsmParser.a
│ ├── libLLVMSystemZAsmPrinter.a
│ ├── libLLVMSystemZCodeGen.a
│ ├── libLLVMSystemZDesc.a
│ ├── libLLVMSystemZDisassembler.a
│ ├── libLLVMSystemZInfo.a
│ ├── libLLVMTableGen.a
│ ├── libLLVMTarget.a
│ ├── libLLVMTransformUtils.a
│ ├── libLLVMVectorize.a
│ ├── libLLVMX86AsmParser.a
│ ├── libLLVMX86AsmPrinter.a
│ ├── libLLVMX86CodeGen.a
│ ├── libLLVMX86Desc.a
│ ├── libLLVMX86Disassembler.a
│ ├── libLLVMX86Info.a
│ ├── libLLVMX86Utils.a
│ ├── libLLVMXCoreAsmPrinter.a
│ ├── libLLVMXCoreCodeGen.a
│ ├── libLLVMXCoreDesc.a
│ ├── libLLVMXCoreDisassembler.a
│ ├── libLLVMXCoreInfo.a
│ ├── libLLVMipa.a
│ ├── libLLVMipo.a
│ ├── libLTO.a
│ ├── libLTO.so
│ ├── libclang-3.6.so.1 -> ../../x86_64-linux-gnu/libclang-3.6.so.1
│ ├── libclang.so.1 -> libclang-3.6.so.1
│ ├── liblldb.so.1 -> ../../x86_64-linux-gnu/liblldb-3.6.so.1
│ ├── liblldbAPI.a
│ ├── liblldbBreakpoint.a
│ ├── liblldbCommands.a
│ ├── liblldbCore.a
│ ├── liblldbDataFormatters.a
│ ├── liblldbExpression.a
│ ├── liblldbHostCommon.a
│ ├── liblldbHostLinux.a
│ ├── liblldbHostPosix.a
│ ├── liblldbInitAndLog.a
│ ├── liblldbInterpreter.a
│ ├── liblldbPluginABIMacOSX_arm.a
│ ├── liblldbPluginABIMacOSX_arm64.a
│ ├── liblldbPluginABIMacOSX_i386.a
│ ├── liblldbPluginABISysV_hexagon.a
│ ├── liblldbPluginABISysV_ppc.a
│ ├── liblldbPluginABISysV_ppc64.a
│ ├── liblldbPluginABISysV_x86_64.a
│ ├── liblldbPluginDisassemblerLLVM.a
│ ├── liblldbPluginDynamicLoaderHexagon.a
│ ├── liblldbPluginDynamicLoaderMacOSX.a
│ ├── liblldbPluginDynamicLoaderPOSIX.a
│ ├── liblldbPluginDynamicLoaderStatic.a
│ ├── liblldbPluginEmulateInstructionARM.a
│ ├── liblldbPluginEmulateInstructionARM64.a
│ ├── liblldbPluginInstrumentationRuntimeAddressSanitizer.a
│ ├── liblldbPluginJITLoaderGDB.a
│ ├── liblldbPluginLanguageRuntimeCPlusPlusItaniumABI.a
│ ├── liblldbPluginLanguageRuntimeObjCAppleObjCRuntime.a
│ ├── liblldbPluginMemoryHistoryASan.a
│ ├── liblldbPluginObjectContainerBSDArchive.a
│ ├── liblldbPluginObjectFileELF.a
│ ├── liblldbPluginObjectFileJIT.a
│ ├── liblldbPluginObjectFilePECOFF.a
│ ├── liblldbPluginOperatingSystemPython.a
│ ├── liblldbPluginPlatformFreeBSD.a
│ ├── liblldbPluginPlatformGDBServer.a
│ ├── liblldbPluginPlatformKalimba.a
│ ├── liblldbPluginPlatformLinux.a
│ ├── liblldbPluginPlatformMacOSX.a
│ ├── liblldbPluginPlatformPOSIX.a
│ ├── liblldbPluginPlatformWindows.a
│ ├── liblldbPluginProcessElfCore.a
│ ├── liblldbPluginProcessGDBRemote.a
│ ├── liblldbPluginProcessLinux.a
│ ├── liblldbPluginProcessPOSIX.a
│ ├── liblldbPluginSymbolFileDWARF.a
│ ├── liblldbPluginSymbolFileSymtab.a
│ ├── liblldbPluginSymbolVendorELF.a
│ ├── liblldbPluginUnwindAssemblyInstEmulation.a
│ ├── liblldbPluginUnwindAssemblyx86.a
│ ├── liblldbPluginUtility.a
│ ├── liblldbSymbol.a
│ ├── liblldbTarget.a
│ ├── liblldbUtility.a
│ └── python2.7
│ └── site-packages
│ ├── lldb
│ │ ├── __init__.py
│ │ ├── _lldb.so -> ../../../liblldb.so
│ │ ├── embedded_interpreter.py
│ │ ├── formatters
│ │ │ ├── Logger.py
│ │ │ ├── __init__.py
│ │ │ ├── attrib_fromdict.py
│ │ │ ├── cache.py
│ │ │ ├── cpp
│ │ │ │ ├── __init__.py
│ │ │ │ ├── gnu_libstdcpp.py
│ │ │ │ └── libcxx.py
│ │ │ └── metrics.py
│ │ ├── libLLVM-3.6.2.so.1 ->
../../../x86_64-linux-gnu/libLLVM-3.6.2.so.1
│ │ ├── libLLVM-3.6.so.1 ->
../../../x86_64-linux-gnu/libLLVM-3.6.2.so.1
│ │ ├── runtime
│ │ │ └── __init__.py
│ │ └── utils
│ │ ├── __init__.py
│ │ └── symbolication.py
│ └── readline.so
└── share
└── man
└── man1
└── clang.1
47 directories, 773 files
invain at target:/usr/lib/llvm-3.6$
-------------------------------------------------------------------------------------------------------------
On Thu, May 12, 2016 at 3:58 AM, Tim Northover <t.p.northover at gmail.com>
wrote:
> On 11 May 2016 at 08:14, Geunsik Lim <leemgs at gmail.com> wrote:
> > At first glance, it seems that the key difference is "bl
> _ZNK7TypeKey10GetNumArgsEv(PLT)"
> > between -O1 and -O2 from the clsload.s file.
>
> You're looking at the wrong compilation of clsload.c. If you look at
> the log file it gets compiled 3 times, I think it's the 3rd time that
> things go wrong.
>
> Beyond that, you can't just match up constpool entries like that. The
> numbering can change for all sorts of reasons at different
> optimization levels and those two snippets of code look completely
> unrelated to me.
>
> > Could you tell me one example to understand what it is problem?
>
> The commit had a test-case (also attached here). If you compile that
> with "llc -mtriple=thumbv7-linux-gnueabihf -relocation-model=pic
> simple.ll -o -" you should see something like this on a bad compiler:
>
> ldr r5, .LCPI0_0
> mov r6, r5
> .LPC0_1:
> add r5, pc
> .LPC0_0:
> add r6, pc
> [...]
> mov r0, r6
> bl __tls_get_addr(PLT)
> [...]
> mov r0, r5
> bl __tls_get_addr(PLT)
> [...]
> .LCPI0_0:
> .Ltmp0:
> .long var(TLSGD)-((.LPC0_0+4)-.Ltmp0)
>
> The key point is that r0 should be the same before each call to
> __tls_get_addr (it's a pointer to var's GOT entry) but that's
> impossible because r5 gets added to two different values of PC (the
> program counter).
>
> Cheers.
>
> Tim.
>
--
http://leemgs.fedorapeople.org
Don't try to avoid pain if you fail.
If you decided to face the challenges in life,
you can gain a lot by giving your best.
Cheolsang Jeong's Book & life
--
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160512/a7cb5ea2/attachment-0001.html>
More information about the llvm-commits
mailing list