Skip to content

Optimize in FCS #3784

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

Merged
merged 37 commits into from
Feb 17, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
990457e
Optimize in FCS
forki Oct 20, 2017
167f8fa
Transport tcConfig
forki Oct 20, 2017
112bc91
Cleanup
forki Oct 20, 2017
183e921
Replace more ILAsm in Exprs
ncave Nov 26, 2017
4bd6d69
More ILAsm replacements
ncave Nov 29, 2017
c9ce53f
update resource name
ncave Dec 22, 2017
14b775c
Added some tests (#40)
ncave Jan 20, 2018
be09d95
Merge branch 'master' of https://github.com/Microsoft/visualfsharp in…
ncave Jan 20, 2018
183dc8d
test conditions update
ncave Jan 20, 2018
4381f7c
Merge pull request #42 from ncave/optimize
forki Jan 20, 2018
f7ecba3
test update
ncave Jan 24, 2018
fdbef15
Merge pull request #43 from ncave/optimize
forki Jan 24, 2018
f05169e
test condition update
ncave Jan 24, 2018
76eb357
Merge pull request #44 from ncave/optimize
forki Jan 24, 2018
7eea766
test update
ncave Jan 26, 2018
498d0ad
Merge pull request #45 from ncave/optimize
forki Jan 26, 2018
c6cb6fe
review update
ncave Jan 28, 2018
f352696
Merge pull request #46 from ncave/optimize
forki Jan 28, 2018
6845981
added checked operators
ncave Jan 31, 2018
7c8172f
Merge pull request #47 from ncave/optimize
forki Jan 31, 2018
e32bc0a
fixed dual conversions
ncave Jan 31, 2018
9bdf26a
Merge pull request #48 from ncave/optimize
forki Jan 31, 2018
de84cfd
review fixes
ncave Feb 2, 2018
c965f06
Merge pull request #49 from ncave/optimize
forki Feb 2, 2018
1e373c7
more targeted replacements
ncave Feb 2, 2018
adc20e2
Merge pull request #50 from ncave/optimize
forki Feb 2, 2018
03b4603
Merge branch 'master' of https://github.com/Microsoft/visualfsharp in…
ncave Feb 2, 2018
e5f1c6f
adapt to latest
ncave Feb 2, 2018
c8743f4
Merge pull request #51 from ncave/optimize
forki Feb 2, 2018
c7da1b4
added more tests
ncave Feb 9, 2018
6d14c03
Merge pull request #52 from ncave/optimize
forki Feb 9, 2018
a8dd212
added more tests
ncave Feb 9, 2018
e1f3e16
Merge pull request #53 from ncave/optimize
forki Feb 10, 2018
ddf74bd
review fixes
ncave Feb 14, 2018
d2906ad
Merge pull request #54 from ncave/optimize
forki Feb 14, 2018
e15be74
fixed warnings
ncave Feb 14, 2018
da05e6b
Merge pull request #55 from ncave/optimize
forki Feb 14, 2018
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
72 changes: 67 additions & 5 deletions src/fsharp/TastOps.fs
Original file line number Diff line number Diff line change
Expand Up @@ -6140,22 +6140,84 @@ let mkCallNewQuerySource (g:TcGlobals) m ty1 ty2 e1 = m

let mkCallCreateEvent (g:TcGlobals) m ty1 ty2 e1 e2 e3 = mkApps g (typedExprForIntrinsic g m g.create_event_info, [[ty1;ty2]], [ e1;e2;e3 ], m)
let mkCallGenericComparisonWithComparerOuter (g:TcGlobals) m ty comp e1 e2 = mkApps g (typedExprForIntrinsic g m g.generic_comparison_withc_outer_info, [[ty]], [ comp;e1;e2 ], m)
let mkCallEqualsOperator (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.equals_operator_info, [[ty]], [ e1;e2 ], m)
let mkCallGenericEqualityEROuter (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.generic_equality_er_outer_info, [[ty]], [ e1;e2 ], m)
let mkCallGenericEqualityWithComparerOuter (g:TcGlobals) m ty comp e1 e2 = mkApps g (typedExprForIntrinsic g m g.generic_equality_withc_outer_info, [[ty]], [comp;e1;e2], m)
let mkCallGenericHashWithComparerOuter (g:TcGlobals) m ty comp e1 = mkApps g (typedExprForIntrinsic g m g.generic_hash_withc_outer_info, [[ty]], [comp;e1], m)

let mkCallSubtractionOperator (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.unchecked_subtraction_info, [[ty; ty; ty]], [e1;e2], m)
let mkCallEqualsOperator (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.equals_operator_info, [[ty]], [ e1;e2 ], m)
let mkCallNotEqualsOperator (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.not_equals_operator, [[ty]], [ e1;e2 ], m)
let mkCallLessThanOperator (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.less_than_operator, [[ty]], [ e1;e2 ], m)
let mkCallLessThanOrEqualsOperator (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.less_than_or_equals_operator, [[ty]], [ e1;e2 ], m)
let mkCallGreaterThanOperator (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.greater_than_operator, [[ty]], [ e1;e2 ], m)
let mkCallGreaterThanOrEqualsOperator (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.greater_than_or_equals_operator, [[ty]], [ e1;e2 ], m)

let mkCallArrayLength (g:TcGlobals) m ty el = mkApps g (typedExprForIntrinsic g m g.array_length_info, [[ty]], [el], m)
let mkCallArrayGet (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.array_get_info, [[ty]], [ e1 ; e2 ], m)
let mkCallAdditionOperator (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.unchecked_addition_info, [[ty; ty; ty]], [e1;e2], m)
let mkCallSubtractionOperator (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.unchecked_subtraction_info, [[ty; ty; ty]], [e1;e2], m)
let mkCallMultiplyOperator (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.unchecked_multiply_info, [[ty; ty; ty]], [e1;e2], m)
let mkCallDivisionOperator (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.unchecked_division_info, [[ty; ty; ty]], [e1;e2], m)
let mkCallModulusOperator (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.unchecked_modulus_info, [[ty; ty; ty]], [e1;e2], m)
let mkCallBitwiseAndOperator (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.bitwise_and_info, [[ty]], [e1;e2], m)
let mkCallBitwiseOrOperator (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.bitwise_or_info, [[ty]], [e1;e2], m)
let mkCallBitwiseXorOperator (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.bitwise_xor_info, [[ty]], [e1;e2], m)
let mkCallShiftLeftOperator (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.bitwise_shift_left_info, [[ty]], [e1;e2], m)
let mkCallShiftRightOperator (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.bitwise_shift_right_info, [[ty]], [e1;e2], m)

let mkCallUnaryNegOperator (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.unchecked_unary_minus_info, [[ty]], [e1], m)
let mkCallUnaryNotOperator (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.bitwise_unary_not_info, [[ty]], [e1], m)

let mkCallAdditionChecked (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.checked_addition_info, [[ty; ty; ty]], [e1;e2], m)
let mkCallSubtractionChecked (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.checked_subtraction_info, [[ty; ty; ty]], [e1;e2], m)
let mkCallMultiplyChecked (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.checked_multiply_info, [[ty; ty; ty]], [e1;e2], m)
let mkCallUnaryNegChecked (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.checked_unary_minus_info, [[ty]], [e1], m)

let mkCallToByteChecked (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.byte_checked_info, [[ty]], [e1], m)
let mkCallToSByteChecked (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.sbyte_checked_info, [[ty]], [e1], m)
let mkCallToInt16Checked (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.int16_checked_info, [[ty]], [e1], m)
let mkCallToUInt16Checked (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.uint16_checked_info, [[ty]], [e1], m)
let mkCallToIntChecked (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.int_checked_info, [[ty]], [e1], m)
let mkCallToInt32Checked (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.int32_checked_info, [[ty]], [e1], m)
let mkCallToUInt32Checked (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.uint32_checked_info, [[ty]], [e1], m)
let mkCallToInt64Checked (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.int64_checked_info, [[ty]], [e1], m)
let mkCallToUInt64Checked (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.uint64_checked_info, [[ty]], [e1], m)
let mkCallToIntPtrChecked (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.nativeint_checked_info, [[ty]], [e1], m)
let mkCallToUIntPtrChecked (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.unativeint_checked_info, [[ty]], [e1], m)

let mkCallToByteOperator (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.byte_operator_info, [[ty]], [e1], m)
let mkCallToSByteOperator (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.sbyte_operator_info, [[ty]], [e1], m)
let mkCallToInt16Operator (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.int16_operator_info, [[ty]], [e1], m)
let mkCallToUInt16Operator (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.uint16_operator_info, [[ty]], [e1], m)
let mkCallToIntOperator (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.int_operator_info, [[ty]], [e1], m)
let mkCallToInt32Operator (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.int32_operator_info, [[ty]], [e1], m)
let mkCallToUInt32Operator (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.uint32_operator_info, [[ty]], [e1], m)
let mkCallToInt64Operator (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.int64_operator_info, [[ty]], [e1], m)
let mkCallToUInt64Operator (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.uint64_operator_info, [[ty]], [e1], m)
let mkCallToSingleOperator (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.float32_operator_info, [[ty]], [e1], m)
let mkCallToDoubleOperator (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.float_operator_info, [[ty]], [e1], m)
let mkCallToIntPtrOperator (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.nativeint_operator_info, [[ty]], [e1], m)
let mkCallToUIntPtrOperator (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.unativeint_operator_info, [[ty]], [e1], m)

let mkCallToCharOperator (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.char_operator_info, [[ty]], [e1], m)
let mkCallToEnumOperator (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.enum_operator_info, [[ty]], [e1], m)

let mkCallArrayLength (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.array_length_info, [[ty]], [e1], m)
let mkCallArrayGet (g:TcGlobals) m ty e1 idx1 = mkApps g (typedExprForIntrinsic g m g.array_get_info, [[ty]], [ e1 ; idx1 ], m)
let mkCallArray2DGet (g:TcGlobals) m ty e1 idx1 idx2 = mkApps g (typedExprForIntrinsic g m g.array2D_get_info, [[ty]], [ e1 ; idx1; idx2 ], m)
let mkCallArray3DGet (g:TcGlobals) m ty e1 idx1 idx2 idx3 = mkApps g (typedExprForIntrinsic g m g.array3D_get_info, [[ty]], [ e1 ; idx1; idx2; idx3 ], m)
let mkCallArray4DGet (g:TcGlobals) m ty e1 idx1 idx2 idx3 idx4 = mkApps g (typedExprForIntrinsic g m g.array4D_get_info, [[ty]], [ e1 ; idx1; idx2; idx3; idx4 ], m)
let mkCallArraySet (g:TcGlobals) m ty e1 idx1 v = mkApps g (typedExprForIntrinsic g m g.array_set_info, [[ty]], [ e1 ; idx1; v ], m)
let mkCallArray2DSet (g:TcGlobals) m ty e1 idx1 idx2 v = mkApps g (typedExprForIntrinsic g m g.array2D_set_info, [[ty]], [ e1 ; idx1; idx2; v ], m)
let mkCallArray3DSet (g:TcGlobals) m ty e1 idx1 idx2 idx3 v = mkApps g (typedExprForIntrinsic g m g.array3D_set_info, [[ty]], [ e1 ; idx1; idx2; idx3; v ], m)
let mkCallArray4DSet (g:TcGlobals) m ty e1 idx1 idx2 idx3 idx4 v = mkApps g (typedExprForIntrinsic g m g.array4D_set_info, [[ty]], [ e1 ; idx1; idx2; idx3; idx4; v ], m)

let mkCallHash (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.hash_info, [[ty]], [ e1 ], m)
let mkCallBox (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.box_info, [[ty]], [ e1 ], m)
let mkCallIsNull (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.isnull_info, [[ty]], [ e1 ], m)
let mkCallIsNotNull (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.isnotnull_info, [[ty]], [ e1 ], m)
let mkCallRaise (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.raise_info, [[ty]], [ e1 ], m)

let mkCallNewDecimal (g:TcGlobals) m (e1, e2, e3, e4, e5) = mkApps g (typedExprForIntrinsic g m g.new_decimal_info, [], [ e1;e2;e3;e4;e5 ], m)

let mkCallNewFormat (g:TcGlobals) m aty bty cty dty ety e1 = mkApps g (typedExprForIntrinsic g m g.new_format_info, [[aty;bty;cty;dty;ety]], [ e1 ], m)
let mkCallRaise (g:TcGlobals) m aty e1 = mkApps g (typedExprForIntrinsic g m g.raise_info, [[aty]], [ e1 ], m)

let TryEliminateDesugaredConstants g m c =
match c with
Expand Down
66 changes: 64 additions & 2 deletions src/fsharp/TastOps.fsi
Original file line number Diff line number Diff line change
Expand Up @@ -1221,15 +1221,77 @@ val mkCallArrayGet : TcGlobals -> range -> TType -> Expr -> Expr -> Ex
val mkCallArray2DGet : TcGlobals -> range -> TType -> Expr -> Expr -> Expr -> Expr
val mkCallArray3DGet : TcGlobals -> range -> TType -> Expr -> Expr -> Expr -> Expr -> Expr
val mkCallArray4DGet : TcGlobals -> range -> TType -> Expr -> Expr -> Expr -> Expr -> Expr -> Expr
val mkCallArraySet : TcGlobals -> range -> TType -> Expr -> Expr -> Expr -> Expr
val mkCallArray2DSet : TcGlobals -> range -> TType -> Expr -> Expr -> Expr -> Expr -> Expr
val mkCallArray3DSet : TcGlobals -> range -> TType -> Expr -> Expr -> Expr -> Expr -> Expr -> Expr
val mkCallArray4DSet : TcGlobals -> range -> TType -> Expr -> Expr -> Expr -> Expr -> Expr -> Expr -> Expr

val mkCallHash : TcGlobals -> range -> TType -> Expr -> Expr
val mkCallBox : TcGlobals -> range -> TType -> Expr -> Expr
val mkCallIsNull : TcGlobals -> range -> TType -> Expr -> Expr
val mkCallIsNotNull : TcGlobals -> range -> TType -> Expr -> Expr
val mkCallRaise : TcGlobals -> range -> TType -> Expr -> Expr

val mkCallGenericComparisonWithComparerOuter : TcGlobals -> range -> TType -> Expr -> Expr -> Expr -> Expr
val mkCallGenericEqualityEROuter : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
val mkCallEqualsOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
val mkCallSubtractionOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
val mkCallGenericEqualityWithComparerOuter : TcGlobals -> range -> TType -> Expr -> Expr -> Expr -> Expr
val mkCallGenericHashWithComparerOuter : TcGlobals -> range -> TType -> Expr -> Expr -> Expr

val mkCallEqualsOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
val mkCallNotEqualsOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
val mkCallLessThanOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
val mkCallLessThanOrEqualsOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
val mkCallGreaterThanOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
val mkCallGreaterThanOrEqualsOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr

val mkCallAdditionOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
val mkCallSubtractionOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
val mkCallMultiplyOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
val mkCallDivisionOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
val mkCallModulusOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
val mkCallBitwiseAndOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
val mkCallBitwiseOrOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
val mkCallBitwiseXorOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
val mkCallShiftLeftOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
val mkCallShiftRightOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr

val mkCallUnaryNegOperator : TcGlobals -> range -> TType -> Expr -> Expr
val mkCallUnaryNotOperator : TcGlobals -> range -> TType -> Expr -> Expr

val mkCallAdditionChecked : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
val mkCallSubtractionChecked : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
val mkCallMultiplyChecked : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
val mkCallUnaryNegChecked : TcGlobals -> range -> TType -> Expr -> Expr

val mkCallToByteChecked : TcGlobals -> range -> TType -> Expr -> Expr
val mkCallToSByteChecked : TcGlobals -> range -> TType -> Expr -> Expr
val mkCallToInt16Checked : TcGlobals -> range -> TType -> Expr -> Expr
val mkCallToUInt16Checked : TcGlobals -> range -> TType -> Expr -> Expr
val mkCallToIntChecked : TcGlobals -> range -> TType -> Expr -> Expr
val mkCallToInt32Checked : TcGlobals -> range -> TType -> Expr -> Expr
val mkCallToUInt32Checked : TcGlobals -> range -> TType -> Expr -> Expr
val mkCallToInt64Checked : TcGlobals -> range -> TType -> Expr -> Expr
val mkCallToUInt64Checked : TcGlobals -> range -> TType -> Expr -> Expr
val mkCallToIntPtrChecked : TcGlobals -> range -> TType -> Expr -> Expr
val mkCallToUIntPtrChecked : TcGlobals -> range -> TType -> Expr -> Expr

val mkCallToByteOperator : TcGlobals -> range -> TType -> Expr -> Expr
val mkCallToSByteOperator : TcGlobals -> range -> TType -> Expr -> Expr
val mkCallToInt16Operator : TcGlobals -> range -> TType -> Expr -> Expr
val mkCallToUInt16Operator : TcGlobals -> range -> TType -> Expr -> Expr
val mkCallToIntOperator : TcGlobals -> range -> TType -> Expr -> Expr
val mkCallToInt32Operator : TcGlobals -> range -> TType -> Expr -> Expr
val mkCallToUInt32Operator : TcGlobals -> range -> TType -> Expr -> Expr
val mkCallToInt64Operator : TcGlobals -> range -> TType -> Expr -> Expr
val mkCallToUInt64Operator : TcGlobals -> range -> TType -> Expr -> Expr
val mkCallToSingleOperator : TcGlobals -> range -> TType -> Expr -> Expr
val mkCallToDoubleOperator : TcGlobals -> range -> TType -> Expr -> Expr
val mkCallToIntPtrOperator : TcGlobals -> range -> TType -> Expr -> Expr
val mkCallToUIntPtrOperator : TcGlobals -> range -> TType -> Expr -> Expr

val mkCallToCharOperator : TcGlobals -> range -> TType -> Expr -> Expr
val mkCallToEnumOperator : TcGlobals -> range -> TType -> Expr -> Expr

val mkCallDeserializeQuotationFSharp20Plus : TcGlobals -> range -> Expr -> Expr -> Expr -> Expr -> Expr
val mkCallDeserializeQuotationFSharp40Plus : TcGlobals -> range -> Expr -> Expr -> Expr -> Expr -> Expr -> Expr
val mkCallCastQuotation : TcGlobals -> range -> TType -> Expr -> Expr
Expand Down
Loading