Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update VCLLVM (now Pallas) to LLVM 17, update to newest VerCors version, and convert more instructions to COL #1159

Merged
merged 53 commits into from
Oct 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
27a0383
Rename VCLLVM to Pallas, Update to LLVM 17, Implement Stack Allocation
superaxander Feb 22, 2024
5cb4a2e
Fixed the LLVM tests, add a blame for LLVM generated nodes, add
superaxander May 30, 2024
0088121
Use absolute path for finding Pallas shared library
superaxander May 31, 2024
7b884e6
Remove pallas binary from output jar
superaxander May 31, 2024
d52394f
Create separate classes for by reference and by value classes
superaxander May 14, 2024
b01df4d
Use ADT encoding for ByValueClasses
superaxander Jun 11, 2024
1666b35
Add some axioms that speed up pointer verification
superaxander Jun 17, 2024
0dfde7c
Do no copy in expressions which do not yield TByValueClass
superaxander Jun 18, 2024
be64b27
Enable use of methods on by-value classes
superaxander Jun 18, 2024
aed3ba6
Set --useOldAxiomatization to test which test failures are because of…
superaxander Jun 19, 2024
53f19a8
Improve struct encoding, rewrite tests for new permission syntax
superaxander Jul 18, 2024
7b50ef3
Make the pointer for struct fields implicit simplifying most locations
superaxander Jul 19, 2024
28eaee6
Merge remote-tracking branch 'origin/dev' into class-by-value
superaxander Jul 19, 2024
1a31edd
Fix the type numbers
superaxander Jul 19, 2024
3f9f02b
Replaced type numbers with constants for ByValueClass
superaxander Jul 19, 2024
bcd96b5
Temporarily set a fork of silicon in build.sc to test in CI
superaxander Jul 19, 2024
24197b8
Update silver, clean up unused ByValueClass axioms
superaxander Jul 23, 2024
653cd5f
First working version pointer casts
superaxander Jul 24, 2024
88305b8
Also get rid of casts from Object to another class
superaxander Jul 24, 2024
d736fdd
Ignore quantifier in SimplifyNestedQuantifiers if it has a trigger an…
superaxander Jul 25, 2024
2615361
Fix compilation error
superaxander Jul 25, 2024
6c8be0a
Reduce code duplication in adtPointer, remove all non-pointer casts i…
superaxander Jul 25, 2024
e141bcf
Fix duplicate OptGet and add asType function to primitive pointer arrays
superaxander Jul 25, 2024
401c3d9
Get rid of more 'unknown' names in the C frontend
superaxander Jul 25, 2024
a1773b7
Remove Viper field access from trigger with top-level PointerSubscrip…
superaxander Jul 25, 2024
98dde38
Merge remote-tracking branch 'origin/dev' into class-by-value
superaxander Aug 19, 2024
42aca99
Implement basic pointer casts
superaxander Aug 21, 2024
9b96b33
Add pointer cast helpers in loops
superaxander Aug 22, 2024
800f1dd
Add type checking for pointer casts
superaxander Aug 22, 2024
c7a723e
Add back blame erroneously removed by the previous commit
superaxander Aug 22, 2024
f025706
Fix unsupported cast test
superaxander Aug 26, 2024
05eec17
Merge branch 'class-by-value' into pallas
superaxander Aug 26, 2024
ca363da
Make the LLVM file verify again
superaxander Aug 26, 2024
845dac4
Implement basic pointer type inference for LLVM
superaxander Aug 28, 2024
0e9751a
Pass-through debug locations from LLVM
superaxander Aug 29, 2024
c8548db
Improved pointer type inference
superaxander Sep 2, 2024
05be047
Fix crash when transforming fib.ll
superaxander Sep 2, 2024
6ebf84b
Convert LLVM loops into COL
superaxander Sep 4, 2024
55b69e3
Fix broken test with LLVM pure functions
superaxander Sep 4, 2024
72cb421
Fix unsoundness in pointer cast encoding
superaxander Sep 13, 2024
bede2fc
Allow casting back up to "greater" type
superaxander Sep 17, 2024
6cda75c
Move PointerAdd logic for PointerLocations to ImportPointer
superaxander Sep 30, 2024
2434996
Merge remote-tracking branch 'origin/dev' into pallas
superaxander Oct 1, 2024
82b53fe
Add pointer post condition in attempt to fix injectivity issue
superaxander Oct 1, 2024
e2ce374
Make all but one HaliVer example verify again with the new struct enc…
superaxander Oct 4, 2024
5f32f5b
Merge remote-tracking branch 'origin/dev' into pallas
superaxander Oct 4, 2024
dee46c0
Merge PointerArray fallibility and nullability
superaxander Oct 4, 2024
8566c4b
Clean up the PR
superaxander Oct 7, 2024
60b419d
Integrate Bob's feedback
superaxander Oct 9, 2024
283fb6f
Merge remote-tracking branch 'origin/dev' into pallas
superaxander Oct 9, 2024
ea45b98
Revert some changes which caused tests to fail
superaxander Oct 10, 2024
033b7ad
Remove supports from ByValueClass and remove useless LLVM coercions
superaxander Oct 11, 2024
bbe95cc
Incorporate last remaining feedback from Bob
superaxander Oct 15, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
236 changes: 236 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,236 @@
---
Language: Cpp
# BasedOnStyle: LLVM
AccessModifierOffset: -2
AlignAfterOpenBracket: Align
AlignArrayOfStructures: None
AlignConsecutiveAssignments:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
PadOperators: true
AlignConsecutiveBitFields:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
PadOperators: false
AlignConsecutiveDeclarations:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
PadOperators: false
AlignConsecutiveMacros:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
PadOperators: false
AlignConsecutiveShortCaseStatements:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCaseColons: false
AlignEscapedNewlines: Right
AlignOperands: Align
AlignTrailingComments:
Kind: Always
OverEmptyLines: 0
AllowAllArgumentsOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: Never
AllowShortCaseLabelsOnASingleLine: false
AllowShortEnumsOnASingleLine: true
AllowShortFunctionsOnASingleLine: All
AllowShortIfStatementsOnASingleLine: Never
AllowShortLambdasOnASingleLine: All
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: MultiLine
AttributeMacros:
- __capability
BinPackArguments: true
BinPackParameters: true
BitFieldColonSpacing: Both
BraceWrapping:
AfterCaseLabel: false
AfterClass: false
AfterControlStatement: Never
AfterEnum: false
AfterExternBlock: false
AfterFunction: false
AfterNamespace: false
AfterObjCDeclaration: false
AfterStruct: false
AfterUnion: false
BeforeCatch: false
BeforeElse: false
BeforeLambdaBody: false
BeforeWhile: false
IndentBraces: false
SplitEmptyFunction: true
SplitEmptyRecord: true
SplitEmptyNamespace: true
BreakAfterAttributes: Never
BreakAfterJavaFieldAnnotations: false
BreakArrays: true
BreakBeforeBinaryOperators: None
BreakBeforeConceptDeclarations: Always
BreakBeforeBraces: Attach
BreakBeforeInlineASMColon: OnlyMultiline
BreakBeforeTernaryOperators: true
BreakConstructorInitializers: BeforeColon
BreakInheritanceList: BeforeColon
BreakStringLiterals: true
ColumnLimit: 80
CommentPragmas: '^ IWYU pragma:'
CompactNamespaces: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: false
DisableFormat: false
EmptyLineAfterAccessModifier: Never
EmptyLineBeforeAccessModifier: LogicalBlock
ExperimentalAutoDetectBinPacking: false
FixNamespaceComments: true
ForEachMacros:
- foreach
- Q_FOREACH
- BOOST_FOREACH
IfMacros:
- KJ_IF_MAYBE
IncludeBlocks: Preserve
IncludeCategories:
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
Priority: 2
SortPriority: 0
CaseSensitive: false
- Regex: '^(<|"(gtest|gmock|isl|json)/)'
Priority: 3
SortPriority: 0
CaseSensitive: false
- Regex: '.*'
Priority: 1
SortPriority: 0
CaseSensitive: false
IncludeIsMainRegex: '(Test)?$'
IncludeIsMainSourceRegex: ''
IndentAccessModifiers: false
IndentCaseBlocks: false
IndentCaseLabels: false
IndentExternBlock: AfterExternBlock
IndentGotoLabels: true
IndentPPDirectives: None
IndentRequiresClause: true
IndentWidth: 4
IndentWrappedFunctionNames: false
InsertBraces: false
InsertNewlineAtEOF: false
InsertTrailingCommas: None
IntegerLiteralSeparator:
Binary: 0
BinaryMinDigits: 0
Decimal: 0
DecimalMinDigits: 0
Hex: 0
HexMinDigits: 0
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: true
KeepEmptyLinesAtEOF: false
LambdaBodyIndentation: Signature
LineEnding: DeriveLF
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ObjCBinPackProtocolList: Auto
ObjCBlockIndentWidth: 2
ObjCBreakBeforeNestedBlockParam: true
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
PackConstructorInitializers: BinPack
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakOpenParenthesis: 0
PenaltyBreakString: 1000
PenaltyBreakTemplateDeclaration: 10
PenaltyExcessCharacter: 1000000
PenaltyIndentedWhitespace: 0
PenaltyReturnTypeOnItsOwnLine: 60
PointerAlignment: Right
PPIndentWidth: -1
QualifierAlignment: Leave
ReferenceAlignment: Pointer
ReflowComments: true
RemoveBracesLLVM: false
RemoveParentheses: Leave
RemoveSemicolon: false
RequiresClausePosition: OwnLine
RequiresExpressionIndentation: OuterScope
SeparateDefinitionBlocks: Leave
ShortNamespaceLines: 1
SortIncludes: CaseSensitive
SortJavaStaticImport: Before
SortUsingDeclarations: LexicographicNumeric
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: true
SpaceAroundPointerQualifiers: Default
SpaceBeforeAssignmentOperators: true
SpaceBeforeCaseColon: false
SpaceBeforeCpp11BracedList: false
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeJsonColon: false
SpaceBeforeParens: ControlStatements
SpaceBeforeParensOptions:
AfterControlStatements: true
AfterForeachMacros: true
AfterFunctionDefinitionName: false
AfterFunctionDeclarationName: false
AfterIfMacros: true
AfterOverloadedOperator: false
AfterRequiresInClause: false
AfterRequiresInExpression: false
BeforeNonEmptyParentheses: false
SpaceBeforeRangeBasedForLoopColon: true
SpaceBeforeSquareBrackets: false
SpaceInEmptyBlock: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: Never
SpacesInContainerLiterals: true
SpacesInLineCommentPrefix:
Minimum: 1
Maximum: -1
SpacesInParens: Never
SpacesInParensOptions:
InCStyleCasts: false
InConditionalStatements: false
InEmptyParentheses: false
Other: false
SpacesInSquareBrackets: false
Standard: Latest
StatementAttributeLikeMacros:
- Q_EMIT
StatementMacros:
- Q_UNUSED
- QT_REQUIRE_VERSION
TabWidth: 8
UseTab: Never
VerilogBreakBetweenInstancePorts: true
WhitespaceSensitiveMacros:
- BOOST_PP_STRINGIZE
- CF_SWIFT_NAME
- NS_SWIFT_NAME
- PP_STRINGIZE
- STRINGIZE
...

6 changes: 3 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ on:

jobs:
Release:
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
steps:
- name: Checkout VerCors
uses: actions/checkout@v4
Expand All @@ -23,8 +23,8 @@ jobs:
with:
distribution: 'zulu'
java-version: '17'
- name: Enable VCLLVM compilation
run: touch .include-vcllvm
- name: Enable Pallas compilation
run: touch .include-pallas
- name: Build Release
run: ./mill -j 0 vercors.main.release
- name: Set Properties
Expand Down
22 changes: 10 additions & 12 deletions .github/workflows/scalatest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ concurrency:
jobs:
Compile:
if: (github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork)
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
steps:
- name: Checkout VerCors
uses: actions/checkout@v4
Expand All @@ -33,20 +33,20 @@ jobs:
restore-keys: |
vercors-ci-ubuntu-${{ hashFiles('build.sc') }}
vercors-ci-ubuntu
- name: Enable VCLLVM compilation
run: touch .include-vcllvm
- name: Enable Pallas compilation
run: touch .include-pallas
- name: Compile
run: ./mill -j 0 vercors.allTests.assembly + vercors.vcllvm.compile
run: ./mill -j 0 vercors.allTests.assembly + vercors.pallas.compile
- name: Upload VerCors
uses: actions/upload-artifact@v4
with:
name: allTests
path: out/vercors/allTests/assembly.dest/out.jar
- name: Upload VCLLVM
- name: Upload Pallas
uses: actions/upload-artifact@v4
with:
name: vcllvm
path: out/vercors/vcllvm/compile.dest/vcllvm
name: pallas
path: out/vercors/pallas/compile.dest/pallas
- name: Delete Uncached Files
run: |
find out -type f -name upstreamAssembly.json -print -exec rm -rf {} +
Expand Down Expand Up @@ -133,7 +133,7 @@ jobs:
matrix:
batch: ["-n MATRIX[0]", "-n MATRIX[1]", "-n MATRIX[2]", "-n MATRIX[3]", "-n MATRIX[4]", "-n MATRIX[5]", "-n MATRIX[6]", "-n MATRIX[7]", "-l MATRIX"]

runs-on: ubuntu-latest
runs-on: ubuntu-24.04
steps:
- name: Checkout VerCors
uses: actions/checkout@v4
Expand All @@ -147,13 +147,11 @@ jobs:
with:
name: allTests
path: '.'
- name: Download VCLLVM
- name: Download Pallas
uses: actions/download-artifact@v4
with:
name: vcllvm
name: pallas
path: '.'
- name: Make VCLLVM executable
run: chmod +x vcllvm
- name: ls
run: ls -lasFhR
- name: Run scalatest
Expand Down
Loading
Loading