[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