Commit Graph

2939 Commits

Author SHA1 Message Date
Ivan Krysak 855999f5f0 Layout: add support for multiple return values 2022-11-30 15:06:54 +01:00
Ivan Krysak 535c9dd346 ABI: remove MinimumStackArgumentSize value
The architecture-specific pointer (generic register) size is used
instead.

For all the ABIs we support the value of this parameter was already
set to its pointer size. We might need to reintroduce the parameter
in the future if we want to support a super-exotic ABI with different
stack alignment requirements, but that seems highly unlikely.

This also introduces the argument extension helper for one stop all
treating small arguments when they are put into a register or pushed
into the stack.
2022-11-30 15:06:54 +01:00
Ivan Krysak afdd3302d8 STLExtras: add constepxr version of find 2022-11-30 15:06:54 +01:00
Ivan Krysak 1f4b5dfd36 Model: associate a primitive kind to each register 2022-11-30 15:06:54 +01:00
Ivan Krysak 207668070a QualifiedType: add argument-less isPrimitive() 2022-11-30 15:06:54 +01:00
Ivan Krysak c3c3ed4381 Move pointer creation away from model::Binary 2022-11-30 15:06:54 +01:00
Alessandro Di Federico b83edd61c0 DwarfImport: fix handling of local functions 2022-11-30 15:06:54 +01:00
Massimo Fioravanti 044071435e Fix handling of binaries with no functions
Fix various edge cases when a binary with no functions was analyzed.
2022-11-22 16:19:28 +01:00
Massimo Fioravanti a057ce54a7 Avoids missing outputs when empty
FileContainer should not be used when we wish to produce a empty output
file rather than no file at all.
2022-11-22 15:21:03 +01:00
Massimo Fioravanti 0bfb73fe95 FunctionMetadata: introduce cache
FunctionMetadata was being deserialized every time they were
inspected. This commit introduces a cache structure to prevent this
excessive deserializations.
2022-11-22 14:15:00 +01:00
Massimo Fioravanti 335d402245 Change signatures to forward metadata cache. 2022-11-22 12:27:02 +01:00
Pietro Fezzardi 764c7efbb8 Make isCallTo accept any llvm::Value * 2022-11-22 10:12:34 +01:00
Pietro Fezzardi fd0914b460 QualifiedType: add isConst method 2022-11-22 10:12:31 +01:00
Pietro Fezzardi 8aaa3ca92e Refactor PTML generation for functions 2022-11-16 16:02:09 +01:00
Pietro Fezzardi e72a578743 Refactor PTML generation for local variables 2022-11-16 11:24:37 +01:00
Pietro Fezzardi 79a319cdeb PTML.h: sort ptml::c::tokens alphabetically 2022-11-16 07:48:43 +01:00
Pietro Fezzardi 0812989cb0 Drop unused ptml::c::tokens::Comparison 2022-11-16 07:47:18 +01:00
Pietro Fezzardi a23d4f8dcf Ranks.h: simplify ranks, delete unnecessary ranks 2022-11-15 15:54:20 +01:00
Pietro Fezzardi ff631c5364 PTMLC.h: switch to string-based return values 2022-11-15 15:54:20 +01:00
Pietro Fezzardi c93392fa3b Refactor PTML generation for helpers 2022-11-15 15:54:20 +01:00
Pietro Fezzardi 38ce08edba PTMLC: add Const keyword 2022-11-15 15:54:20 +01:00
Pietro Fezzardi e1ded3a479 HelpersToHeader: refactor PTML Tags 2022-11-15 15:54:20 +01:00
Pietro Fezzardi 2ec8b7e32c ModelToHeader: refactor creation of PTML Tags 2022-11-15 15:54:20 +01:00
Pietro Fezzardi 4334481894 UpcastablePointer: upcast with mutable callables 2022-11-15 14:15:20 +01:00
Pietro Fezzardi fb7edef129 Add ptml::scopeTag helper function 2022-11-15 14:15:20 +01:00
Pietro Fezzardi 6734494bad Move scopeTag helper function to revng 2022-11-15 14:03:07 +01:00
Giacomo Vercesi 7526d72492 Kinds: exposed locations produced
Expose the locations that can be found in each kind
2022-11-11 13:43:55 +01:00
Giacomo Vercesi d185fc80ac Rank: fix RankConvertibleTo with RootRank
RankConvertibleTo would be erroneously fail when used with a RootRank
either in the From or To template parameter.
2022-11-11 13:43:55 +01:00
Massimo Fioravanti fa30486ce0 Outliner: create extractor cache once 2022-11-10 19:41:42 +01:00
Massimo Fioravanti ad0f1163b2 AVI: increase performance by caching successors 2022-11-10 19:40:11 +01:00
Giacomo Vercesi 6e8333ed62 Kinds: add new Location/definitionKind info 2022-11-10 17:27:53 +01:00
Pietro Fezzardi cf6be43571 Support void types in areMemOpCompatible 2022-11-09 17:00:14 +01:00
Pietro Fezzardi 0097af6dd0 Fix peelConstAndTypedefs for model::TypedefType
Before this commit typedefs were not unwrapped correctly, leading to
infinite loops.
2022-11-09 11:59:51 +01:00
Giacomo Vercesi 0b80801b2b TupleTreeDiff: applyDiff uses ErrorList
Change how TupleTreeDiff and Visitor work so they can populate an
ErrorList in case the deserialization/apply of a diff fails.
2022-10-30 09:13:44 +01:00
Giacomo Vercesi de76a5239b PipelineC: improve documentation 2022-10-30 09:13:29 +01:00
Giacomo Vercesi a75fc40abe PipelineC: drop rp_manager_create_memory_only
The function was unused, broken and superseded by the other
rp_manager_create with `execution_directory=nullptr`.
2022-10-30 09:13:23 +01:00
Giacomo Vercesi 81d25f9805 PipelineC: expose invalidation logic 2022-10-30 09:13:14 +01:00
Pietro Fezzardi f371c03e93 Globals.h: evictCachedReferences on clear() 2022-10-29 16:46:19 +02:00
Pietro Fezzardi d520fd5aea Cache TTRs in Model tools 2022-10-29 16:46:19 +02:00
Pietro Fezzardi fff0fbd874 LoadModelPass: cache TTRs on getReadOnlyModel
The cache is evicted on the next call to getWritableModel.
2022-10-29 16:46:19 +02:00
Pietro Fezzardi f371be4271 Cache TTRs on getModelFromContext
The cache is evicted on getWritableModelFromContext.
2022-10-29 16:46:19 +02:00
Pietro Fezzardi d04e2e73d3 TupleTree: caching methods for TupleTreeReferences 2022-10-29 16:46:19 +02:00
Pietro Fezzardi 0795c7e331 TupleTreeReference: cache target pointers 2022-10-29 16:46:19 +02:00
Pietro Fezzardi 7eb94c6646 QualifiedType: add operator<=> 2022-10-29 16:46:19 +02:00
Pietro Fezzardi cf3103d3d7 TupleTree{Path,Reference}: add operator<=> 2022-10-29 16:46:19 +02:00
Pietro Fezzardi 8e9170eb60 Enforce that TTRs in TupleTree are mutable 2022-10-29 16:46:19 +02:00
Pietro Fezzardi 6173d154a3 TupleTree: visitReferences with non-const visitors 2022-10-29 16:46:19 +02:00
Pietro Fezzardi 5f8dab184d Move ConstOrNot to Concepts.h 2022-10-29 16:46:19 +02:00
Giacomo Vercesi 232a28ae69 FileContainer: handle case where Path is empty
When requesting a `cloneFiltered` the Path attribute of the
FileContainer might be empty, and this will lead to an abort. Fix this
situation by checking if the Path is empty.
2022-10-24 14:25:02 +02:00
Pietro Fezzardi bf83f40e3b Move SCEVBaseAddressExplorer.h from public headers 2022-10-21 10:00:23 +02:00