Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
7204c31
trial breakpoints on pipelines
Aug 12, 2021
26fb892
Merge branch 'main' of https://github.com/dotnet/fsharp into bp5
Aug 12, 2021
8ca9c5a
trial breakpoints on pipelines
Aug 12, 2021
fd39288
trial breakpoints on pipelines
Aug 12, 2021
97fc104
Merge branch 'main' of https://github.com/dotnet/fsharp into bp5
Aug 12, 2021
fb75858
increment pipeline number
Aug 13, 2021
da4716e
Merge branch 'main' of https://github.com/dotnet/fsharp into bp5
Aug 13, 2021
235d3f7
upddate baselines and fix bug with then-do expressions
Aug 13, 2021
d39b54c
support for ||> and ||>
Aug 13, 2021
bc98121
fix ||> and |||>
Aug 13, 2021
cf384ac
add input numbers
Aug 13, 2021
5383d64
add input numbers
Aug 13, 2021
7087aa5
add codgen for ||> and ||>
Aug 14, 2021
a95d6dc
Update src/fsharp/Optimizer.fs
dsyme Aug 14, 2021
e3553fa
Merge branch 'main' of https://github.com/dotnet/fsharp into bp5
Aug 14, 2021
ec25a90
add VBPL tests
Aug 14, 2021
6fc17d1
include line number
Aug 14, 2021
c563e73
debug points on when
Aug 16, 2021
1dcd70b
correct initial debug point of methods
Aug 16, 2021
9e48ca3
Merge branch 'bp5' of https://github.com/dsyme/fsharp into bp5
Aug 16, 2021
3a24e5f
Merge branch 'bp5' of https://github.com/dsyme/fsharp into bp6
Aug 16, 2021
e086697
rename
Aug 16, 2021
31a71a5
cleanup
Aug 17, 2021
4b12f8a
IL updates
Aug 17, 2021
bea8a1b
Merge branch 'bp5' of https://github.com/dsyme/fsharp into bp6
Aug 17, 2021
3b49d76
update baselines
Aug 17, 2021
24b5ee0
don't try to activate test as part of this PR
Aug 17, 2021
74d48e9
Merge branch 'bp5' of https://github.com/dsyme/fsharp into bp6
Aug 17, 2021
a5e19b5
add test
Aug 17, 2021
99de813
update baseline
Aug 17, 2021
e36d245
merge main
Aug 17, 2021
92f67fa
update baseline
Aug 17, 2021
26cc478
Merge branch 'main' of https://github.com/dotnet/fsharp into bp6
Aug 17, 2021
88e930a
fixes and abseline updates and more testing
Aug 18, 2021
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
Prev Previous commit
Next Next commit
debug points on when
  • Loading branch information
Don Syme committed Aug 16, 2021
commit c563e732fe12ec983fb7ac0731860ad01653d128
28 changes: 14 additions & 14 deletions src/fsharp/AugmentWithHashCompare.fs
Original file line number Diff line number Diff line change
Expand Up @@ -157,10 +157,10 @@ let mkCompareTestConjuncts g m exprs =
(a, b) ||> List.foldBack (fun e acc ->
let nv, ne = mkCompGenLocal m "n" g.int_ty
mkCompGenLet m nv e
(mkCond DebugPointAtBinding.NoneAtSticky DebugPointForTarget.No m g.int_ty
(mkCond DebugPointAtBinding.NoneAtInvisible DebugPointForTarget.No m g.int_ty
(mkClt g m ne (mkZero g m))
ne
(mkCond DebugPointAtBinding.NoneAtSticky DebugPointForTarget.No m g.int_ty
(mkCond DebugPointAtBinding.NoneAtInvisible DebugPointForTarget.No m g.int_ty
(mkCgt g m ne (mkZero g m))
ne
acc)))
Expand All @@ -171,7 +171,7 @@ let mkEqualsTestConjuncts g m exprs =
| [h] -> h
| l ->
let a, b = List.frontAndBack l
List.foldBack (fun e acc -> mkCond DebugPointAtBinding.NoneAtSticky DebugPointForTarget.No m g.bool_ty e acc (mkFalse g m)) a b
List.foldBack (fun e acc -> mkCond DebugPointAtBinding.NoneAtInvisible DebugPointForTarget.No m g.bool_ty e acc (mkFalse g m)) a b

let mkMinimalTy (g: TcGlobals) (tcref: TyconRef) =
if tcref.Deref.IsExceptionDecl then [], g.exn_ty
Expand Down Expand Up @@ -305,7 +305,7 @@ let mkExnEquality (g: TcGlobals) exnref (exnc: Tycon) =
[ mkCase(DecisionTreeTest.IsInst(g.exn_ty, mkAppTy exnref []),
mbuilder.AddResultTarget(expr, DebugPointForTarget.No)) ]
let dflt = Some(mbuilder.AddResultTarget(mkFalse g m, DebugPointForTarget.No))
let dtree = TDSwitch(thate, cases, dflt, m)
let dtree = TDSwitch(DebugPointAtSwitch.No, thate, cases, dflt, m)
mbuilder.Close(dtree, m, g.bool_ty)

let expr = mkBindThatNullEquals g m thise thate expr
Expand All @@ -328,7 +328,7 @@ let mkExnEqualityWithComparer g exnref (exnc: Tycon) (_thisv, thise) thatobje (t
[ mkCase(DecisionTreeTest.IsInst(g.exn_ty, mkAppTy exnref []),
mbuilder.AddResultTarget(expr, DebugPointForTarget.No)) ]
let dflt = mbuilder.AddResultTarget(mkFalse g m, DebugPointForTarget.No)
let dtree = TDSwitch(thate, cases, Some dflt, m)
let dtree = TDSwitch(DebugPointAtSwitch.No, thate, cases, Some dflt, m)
mbuilder.Close(dtree, m, g.bool_ty)
let expr = mkBindThatAddr g m g.exn_ty thataddrv thatv thate expr
let expr = mkIsInstConditional g m g.exn_ty thatobje thatv expr (mkFalse g m)
Expand Down Expand Up @@ -372,13 +372,13 @@ let mkUnionCompare g tcref (tycon: Tycon) =
if isNil nonNullary then mkZero g m else
let cases = nonNullary |> List.map (function Some c -> c | None -> failwith "mkUnionCompare")
let dflt = if isNil nullary then None else Some (mbuilder.AddResultTarget(mkZero g m, DebugPointForTarget.No))
let dtree = TDSwitch(thise, cases, dflt, m)
let dtree = TDSwitch(DebugPointAtSwitch.No, thise, cases, dflt, m)
mbuilder.Close(dtree, m, g.int_ty)

let expr =
if ucases.Length = 1 then expr else
let tagsEqTested =
mkCond DebugPointAtBinding.NoneAtSticky DebugPointForTarget.No m g.int_ty
mkCond DebugPointAtBinding.NoneAtInvisible DebugPointForTarget.No m g.int_ty
(mkILAsmCeq g m thistage thattage)
expr
(mkAsmExpr ([ AI_sub ], [], [thistage; thattage], [g.int_ty], m))in
Expand Down Expand Up @@ -433,13 +433,13 @@ let mkUnionCompareWithComparer g tcref (tycon: Tycon) (_thisv, thise) (_thatobjv
if isNil nonNullary then mkZero g m else
let cases = nonNullary |> List.map (function Some c -> c | None -> failwith "mkUnionCompare")
let dflt = if isNil nullary then None else Some (mbuilder.AddResultTarget(mkZero g m, DebugPointForTarget.No))
let dtree = TDSwitch(thise, cases, dflt, m)
let dtree = TDSwitch(DebugPointAtSwitch.No, thise, cases, dflt, m)
mbuilder.Close(dtree, m, g.int_ty)

let expr =
if ucases.Length = 1 then expr else
let tagsEqTested =
mkCond DebugPointAtBinding.NoneAtSticky DebugPointForTarget.No m g.int_ty
mkCond DebugPointAtBinding.NoneAtInvisible DebugPointForTarget.No m g.int_ty
(mkILAsmCeq g m thistage thattage)
expr
(mkAsmExpr ([ AI_sub ], [], [thistage; thattage], [g.int_ty], m))
Expand Down Expand Up @@ -493,13 +493,13 @@ let mkUnionEquality g tcref (tycon: Tycon) =
if isNil nonNullary then mkTrue g m else
let cases = List.map (function Some c -> c | None -> failwith "mkUnionEquality") nonNullary
let dflt = (if isNil nullary then None else Some (mbuilder.AddResultTarget(mkTrue g m, DebugPointForTarget.No)))
let dtree = TDSwitch(thise, cases, dflt, m)
let dtree = TDSwitch(DebugPointAtSwitch.No, thise, cases, dflt, m)
mbuilder.Close(dtree, m, g.bool_ty)

let expr =
if ucases.Length = 1 then expr else
let tagsEqTested =
mkCond DebugPointAtBinding.NoneAtSticky DebugPointForTarget.No m g.bool_ty
mkCond DebugPointAtBinding.NoneAtInvisible DebugPointForTarget.No m g.bool_ty
(mkILAsmCeq g m thistage thattage)
expr
(mkFalse g m)
Expand Down Expand Up @@ -555,13 +555,13 @@ let mkUnionEqualityWithComparer g tcref (tycon: Tycon) (_thisv, thise) thatobje
if isNil nonNullary then mkTrue g m else
let cases = List.map (function Some c -> c | None -> failwith "mkUnionEquality") nonNullary
let dflt = if isNil nullary then None else Some (mbuilder.AddResultTarget(mkTrue g m, DebugPointForTarget.No))
let dtree = TDSwitch(thise, cases, dflt, m)
let dtree = TDSwitch(DebugPointAtSwitch.No, thise, cases, dflt, m)
mbuilder.Close(dtree, m, g.bool_ty)

let expr =
if ucases.Length = 1 then expr else
let tagsEqTested =
mkCond DebugPointAtBinding.NoneAtSticky DebugPointForTarget.No m g.bool_ty
mkCond DebugPointAtBinding.NoneAtInvisible DebugPointForTarget.No m g.bool_ty
(mkILAsmCeq g m thistage thattage)
expr
(mkFalse g m)
Expand Down Expand Up @@ -658,7 +658,7 @@ let mkUnionHashWithComparer g tcref (tycon: Tycon) compe =
else
let tag = mkUnionCaseTagGetViaExprAddr (thise, tcref, tinst, m)
Some(mbuilder.AddResultTarget(tag, DebugPointForTarget.No))
let dtree = TDSwitch(thise, cases, dflt, m)
let dtree = TDSwitch(DebugPointAtSwitch.No, thise, cases, dflt, m)
let stmt = mbuilder.Close(dtree, m, g.int_ty)
let expr = mkCompGenLet m accv (mkZero g m) stmt
let expr = if tycon.IsStructOrEnumTycon then expr else mkBindNullHash g m thise expr
Expand Down
14 changes: 7 additions & 7 deletions src/fsharp/CheckExpressions.fs
Original file line number Diff line number Diff line change
Expand Up @@ -3449,7 +3449,7 @@ let EliminateInitializationGraphs
and CheckBinding st (TBind(_, e, _)) = CheckExpr st e

and CheckDecisionTree st = function
| TDSwitch(e1, csl, dflt, _) -> CheckExpr st e1; List.iter (fun (TCase(_, d)) -> CheckDecisionTree st d) csl; Option.iter (CheckDecisionTree st) dflt
| TDSwitch(_, e1, csl, dflt, _) -> CheckExpr st e1; List.iter (fun (TCase(_, d)) -> CheckDecisionTree st d) csl; Option.iter (CheckDecisionTree st) dflt
| TDSuccess (es, _) -> es |> List.iter (CheckExpr st)
| TDBind(bind, e) -> CheckBinding st bind; CheckDecisionTree st e

Expand Down Expand Up @@ -9376,14 +9376,14 @@ and TcMatchPattern cenv inputTy env tpenv (pat: SynPat, optWhenExpr: SynExpr opt
let m = pat.Range
let patf', (tpenv, names, _) = TcPat WarnOnUpperCase cenv env None (ValInline.Optional, permitInferTypars, noArgOrRetAttribs, false, None, false) (tpenv, Map.empty, Set.empty) inputTy pat
let envinner, values, vspecMap = MakeAndPublishSimpleValsForMergedScope cenv env m names
let optWhenExpr', tpenv =
let optWhenExprR, tpenv =
match optWhenExpr with
| Some whenExpr ->
let guardEnv = { envinner with eContextInfo = ContextInfo.PatternMatchGuard whenExpr.Range }
let whenExpr', tpenv = TcExpr cenv (MustEqual cenv.g.bool_ty) guardEnv tpenv whenExpr
Some whenExpr', tpenv
let whenExprR, tpenv = TcExpr cenv (MustEqual cenv.g.bool_ty) guardEnv tpenv whenExpr
Some whenExprR, tpenv
| None -> None, tpenv
patf' (TcPatPhase2Input (values, true)), optWhenExpr', NameMap.range vspecMap, envinner, tpenv
patf' (TcPatPhase2Input (values, true)), optWhenExprR, NameMap.range vspecMap, envinner, tpenv

and TcMatchClauses cenv inputTy (resultTy: OverallTy) env tpenv clauses =
let mutable first = true
Expand All @@ -9392,10 +9392,10 @@ and TcMatchClauses cenv inputTy (resultTy: OverallTy) env tpenv clauses =

and TcMatchClause cenv inputTy (resultTy: OverallTy) env isFirst tpenv synMatchClause =
let (SynMatchClause(pat, optWhenExpr, _, e, patm, spTgt)) = synMatchClause
let pat', optWhenExpr', vspecs, envinner, tpenv = TcMatchPattern cenv inputTy env tpenv (pat, optWhenExpr)
let pat', optWhenExprR, vspecs, envinner, tpenv = TcMatchPattern cenv inputTy env tpenv (pat, optWhenExpr)
let resultEnv = if isFirst then envinner else { envinner with eContextInfo = ContextInfo.FollowingPatternMatchClause e.Range }
let e', tpenv = TcExprThatCanBeCtorBody cenv resultTy resultEnv tpenv e
TClause(pat', optWhenExpr', TTarget(vspecs, e', spTgt, None), patm), tpenv
TClause(pat', optWhenExprR, TTarget(vspecs, e', spTgt, None), patm), tpenv

and TcStaticOptimizationConstraint cenv env tpenv c =
match c with
Expand Down
2 changes: 1 addition & 1 deletion src/fsharp/FindUnsolved.fs
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ and accDTree cenv env x =
match x with
| TDSuccess (es, _n) -> accExprs cenv env es
| TDBind(bind, rest) -> accBind cenv env bind; accDTree cenv env rest
| TDSwitch (e, cases, dflt, m) -> accSwitch cenv env (e, cases, dflt, m)
| TDSwitch (_, e, cases, dflt, m) -> accSwitch cenv env (e, cases, dflt, m)

and accSwitch cenv env (e, cases, dflt, _m) =
accExpr cenv env e
Expand Down
Loading