search for: importfunct

Displaying 18 results from an estimated 18 matches for "importfunct".

2016 Jul 22
2
[ThinLTO] Using two different IRMovers for the same composite module? (related to PR28180)
...(or composite) module. During LTO, an IRMover is created in thinLTOBackendTask function(tools/gold/gold-plugin.cpp). linkInModule function, which is called by thinLTOBackendTask, calls the ‘move’ function of this IRMover. The other IRMover is created when “TheLinker” is created in FunctionImporter::importFunctions (lib/Transforms/IPO/FunctionImport.cpp). thinLTOBackendTask invokes FunctionImporeter::importFunctions as well, with a call chain of thinLTOBackendTask -->CodeGen::runAll (tools/gold/gold-plugin.cpp) --> CodeGen::runLTOPasses ((tools/gold/gold-plugin.cpp) --> FunctionImporter::importFu...
2016 Jul 22
3
[ThinLTO] Using two different IRMovers for the same composite module? (related to PR28180)
...ot empty. — Mehdi During LTO, an IRMover is created in thinLTOBackendTask function(tools/gold/gold-plugin.cpp). linkInModule function, which is called by thinLTOBackendTask, calls the ‘move’ function of this IRMover. The other IRMover is created when “TheLinker” is created in FunctionImporter::importFunctions (lib/Transforms/IPO/FunctionImport.cpp). thinLTOBackendTask invokes FunctionImporeter::importFunctions as well, with a call chain of thinLTOBackendTask -->CodeGen::runAll (tools/gold/gold-plugin.cpp) --> CodeGen::runLTOPasses ((tools/gold/gold-plugin.cpp)--> FunctionImporter::importFun...
2018 May 01
0
ThinLTO + CFI
Hi Dmitry, the direct call patch seems like a good start; however, by falling through to the F->replaceUsesExceptBlockAddr(FDecl) at the bottom of LowerTypeTestsModule::importFunction() I believe it will replace all uses of a function (for a definition outside the TU it's defined in) with the direct function reference instead of just direct calls. Also, I believe the logic for replaceDirectCalls() should be more restrictive, currently it will also rewrite calls where the...
2018 Apr 30
4
ThinLTO + CFI
...se below, I get the following IR for main() on entry to ThinLTO backend invocation of LowerTypeTestsModule::lower(). This is after I moved this pass down in the pipeline so it’s invoked after inlining. > > The declarations for foo() and bar() are read in at the time of module import, Importer.importFunctions() in lto::thinBackend(). They do not have type metadata attached to them. > In lowerTypeTestCall() we check if the pointer in the type test is of a known type, so we look at bitcast and then select operands. foo and bar in select are global objects with no type metadata, so the type check ca...
2018 Apr 27
0
ThinLTO + CFI
...e test case below, I get the following IR for main() on entry to ThinLTO backend invocation of LowerTypeTestsModule::lower(). This is after I moved this pass down in the pipeline so it’s invoked after inlining. The declarations for foo() and bar() are read in at the time of module import, Importer.importFunctions() in lto::thinBackend(). They do not have type metadata attached to them. In lowerTypeTestCall() we check if the pointer in the type test is of a known type, so we look at bitcast and then select operands. foo and bar in select are global objects with no type metadata, so the type check cannot...
2018 May 14
1
ThinLTO + CFI
...e below, I get the following IR for main() on entry to ThinLTO backend invocation of LowerTypeTestsModule::lower(). This is after I moved this pass down in the pipeline so it’s invoked after inlining. > > The declarations for foo() and bar() are read in at the time of module import, Importer.importFunctions() in lto::thinBackend(). They do not have type metadata attached to them. > In lowerTypeTestCall() we check if the pointer in the type test is of a known type, so we look at bitcast and then select operands. foo and bar in select are global objects with no type metadata, so the type check ca...
2018 May 01
2
ThinLTO + CFI
...get the following IR for main() on entry to ThinLTO backend invocation of LowerTypeTestsModule::lower(). This is after I moved this pass down in the pipeline so it’s invoked after inlining. > > > > The declarations for foo() and bar() are read in at the time of module import, Importer.importFunctions() in lto::thinBackend(). They do not have type metadata attached to them. > > In lowerTypeTestCall() we check if the pointer in the type test is of a known type, so we look at bitcast and then select operands. foo and bar in select are global objects with no type metadata, so the type che...
2018 May 01
0
ThinLTO + CFI
...wing IR for main() on entry to > ThinLTO backend invocation of LowerTypeTestsModule::lower(). This is after > I moved this pass down in the pipeline so it’s invoked after inlining. > > > > The declarations for foo() and bar() are read in at the time of module > import, Importer.importFunctions() in lto::thinBackend(). They do not have > type metadata attached to them. > > In lowerTypeTestCall() we check if the pointer in the type test is of a > known type, so we look at bitcast and then select operands. foo and bar in > select are global objects with no type metadata,...
2018 Apr 27
3
ThinLTO + CFI
> We could probably tolerate a certain amount of unused jump table entries. However, I just realized that all non-inline imported calls end up going through a jump table entry. Is that correct? In fact it is all calls that go through a function pointer type that is used anywhere in the program for an indirect call, but depending on your program that could be very close to "yes".
2018 May 01
2
ThinLTO + CFI
...ollowing IR for main() on entry to ThinLTO backend invocation of LowerTypeTestsModule::lower(). This is after I moved this pass down in the pipeline so it’s invoked after inlining. > > > > > > The declarations for foo() and bar() are read in at the time of module import, Importer.importFunctions() in lto::thinBackend(). They do not have type metadata attached to them. > > > In lowerTypeTestCall() we check if the pointer in the type test is of a known type, so we look at bitcast and then select operands. foo and bar in select are global objects with no type metadata, so the typ...
2018 May 01
0
ThinLTO + CFI
...r main() on entry to > ThinLTO backend invocation of LowerTypeTestsModule::lower(). This is after > I moved this pass down in the pipeline so it’s invoked after inlining. > > > > > > The declarations for foo() and bar() are read in at the time of module > import, Importer.importFunctions() in lto::thinBackend(). They do not have > type metadata attached to them. > > > In lowerTypeTestCall() we check if the pointer in the type test is of > a known type, so we look at bitcast and then select operands. foo and bar > in select are global objects with no type metad...
2018 May 01
2
ThinLTO + CFI
...R for main() on entry to ThinLTO backend invocation of LowerTypeTestsModule::lower(). This is after I moved this pass down in the pipeline so it’s invoked after inlining. > > > > > > > > The declarations for foo() and bar() are read in at the time of module import, Importer.importFunctions() in lto::thinBackend(). They do not have type metadata attached to them. > > > > In lowerTypeTestCall() we check if the pointer in the type test is of a known type, so we look at bitcast and then select operands. foo and bar in select are global objects with no type metadata, so th...
2018 May 01
0
ThinLTO + CFI
...n entry > to ThinLTO backend invocation of LowerTypeTestsModule::lower(). This is > after I moved this pass down in the pipeline so it’s invoked after inlining. > > > > > > > > The declarations for foo() and bar() are read in at the time of > module import, Importer.importFunctions() in lto::thinBackend(). They do > not have type metadata attached to them. > > > > In lowerTypeTestCall() we check if the pointer in the type test is > of a known type, so we look at bitcast and then select operands. foo and > bar in select are global objects with no type...
2018 May 01
0
ThinLTO + CFI
...ThinLTO backend invocation of LowerTypeTestsModule::lower(). This > is after I moved this pass down in the pipeline so it’s invoked after > inlining. > > > > > > > > > > The declarations for foo() and bar() are read in at the time of > module import, Importer.importFunctions() in lto::thinBackend(). They do > not have type metadata attached to them. > > > > > In lowerTypeTestCall() we check if the pointer in the type test is > of a known type, so we look at bitcast and then select operands. foo and > bar in select are global objects with no...
2018 May 01
2
ThinLTO + CFI
...() on entry to ThinLTO backend invocation of LowerTypeTestsModule::lower(). This is after I moved this pass down in the pipeline so it’s invoked after inlining. > > > > > > > > > > The declarations for foo() and bar() are read in at the time of module import, Importer.importFunctions() in lto::thinBackend(). They do not have type metadata attached to them. > > > > > In lowerTypeTestCall() we check if the pointer in the type test is of a known type, so we look at bitcast and then select operands. foo and bar in select are global objects with no type metadata,...
2018 May 01
0
ThinLTO + CFI
...ackend invocation of LowerTypeTestsModule::lower(). This > is after I moved this pass down in the pipeline so it’s invoked after > inlining. > > > > > > > > > > > > The declarations for foo() and bar() are read in at the time of > module import, Importer.importFunctions() in lto::thinBackend(). They do > not have type metadata attached to them. > > > > > > In lowerTypeTestCall() we check if the pointer in the type test > is of a known type, so we look at bitcast and then select operands. foo and > bar in select are global objects wit...
2018 May 02
1
ThinLTO + CFI
...y to ThinLTO backend invocation of LowerTypeTestsModule::lower(). This is after I moved this pass down in the pipeline so it’s invoked after inlining. > > > > > > > > > > > > The declarations for foo() and bar() are read in at the time of module import, Importer.importFunctions() in lto::thinBackend(). They do not have type metadata attached to them. > > > > > > In lowerTypeTestCall() we check if the pointer in the type test is of a known type, so we look at bitcast and then select operands. foo and bar in select are global objects with no type metad...
2018 May 01
0
llvm-dev Digest, Vol 167, Issue 3
...t; > On Apr 30, 2018, at 5:43 PM, Vlad Tsyrklevich <vlad at tsyrklevich.net> > wrote: > > > > Hi Dmitry, the direct call patch seems like a good start; however, by > falling through to the F->replaceUsesExceptBlockAddr(FDecl) at the bottom > of LowerTypeTestsModule::importFunction() I believe it will replace all > uses of a function (for a definition outside the TU it's defined in) with > the direct function reference instead of just direct calls. > > You’re right, it was meant to bail after direct call replacement. > > > Also, I believe the logic...